Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {
- if ($0 == "" || $0 ~ " 1 ") { go = 1; next; }
- if (!go) {
- # We are still reading the initial stacks.
- for (i=1; i<=9; i++) {
- letter = substr($0, i*4-2, 1);
- # Read in reverse due do weird input format
- string_part1[i] = (letter != " " ? substr($0, i*4-2, 1) : "") string_part1[i];
- string_part2[i] = (letter != " " ? substr($0, i*4-2, 1) : "") string_part2[i];
- }
- next;
- }
- # If we get here, we are reading the actual crate moving instructions.
- split($0, op, " ");
- count = op[2];
- from = op[4];
- to = op[6];
- # Use next line for part 1:
- string_part1[to] = string_part1[to] reverse(substr(string_part1[from], length(string_part1[from]) - count + 1));
- string_part2[to] = string_part2[to] substr(string_part2[from], length(string_part2[from]) - count + 1);
- string_part1[from] = substr(string_part1[from], 1, length(string_part1[from]) - count);
- string_part2[from] = substr(string_part2[from], 1, length(string_part2[from]) - count);
- }
- END {
- printf "Part 1: "
- for (i in string_part1) {
- printf substr(string_part1[i], length(string_part1[i]), 1);
- }
- printf "\nPart 2: "
- for (i in string_part2) {
- printf substr(string_part2[i], length(string_part2[i]), 1);
- }
- }
- func reverse(string, i, result) {
- for (i=1; i<=length(string); i++) {
- result = substr(string, i, 1) result;
- }
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement