2022/day 5 init
This commit is contained in:
111
2022/day05/Makefile
Normal file
111
2022/day05/Makefile
Normal file
@@ -0,0 +1,111 @@
|
||||
# AOC daily Makefile - GNU make only.
|
||||
#
|
||||
# Copyright (C) 2021-2022 Bruno Raoult ("br")
|
||||
# Licensed under the GNU General Public License v3.0 or later.
|
||||
# Some rights reserved. See COPYING.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along with this
|
||||
# program. If not, see <https://www.gnu.org/licenses/gpl-3.0-standalone.html>.
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later <https://spdx.org/licenses/GPL-3.0-or-later.html>
|
||||
#
|
||||
|
||||
INPUT := input/input.txt
|
||||
SHELL := /bin/bash
|
||||
|
||||
CC := gcc
|
||||
BEAR := bear
|
||||
CCLSFILE:= compile_commands.json
|
||||
|
||||
LIB := aoc_$(shell uname -m)
|
||||
INCDIR := ../include
|
||||
LIBDIR := ../lib
|
||||
LDFLAGS := -L$(LIBDIR)
|
||||
#LDLIB := -l$(LIB) -lm
|
||||
LDLIB := -l$(LIB)
|
||||
|
||||
export LD_LIBRARY_PATH = $(LIBDIR)
|
||||
|
||||
CFLAGS += -std=gnu11
|
||||
CFLAGS += -O2
|
||||
CFLAGS += -g
|
||||
# for gprof
|
||||
# CFLAGS += -pg
|
||||
CFLAGS += -Wall
|
||||
CFLAGS += -Wextra
|
||||
CFLAGS += -march=native
|
||||
# Next one may be useful for valgrind (some invalid instructions)
|
||||
# CFLAGS += -mno-tbm
|
||||
CFLAGS += -Wmissing-declarations
|
||||
CFLAGS += -Wno-unused-result
|
||||
|
||||
CFLAGS += -DDEBUG_DEBUG # activate general debug (debug.c)
|
||||
CFLAGS += -DDEBUG_POOL # memory pools management
|
||||
|
||||
VALGRIND := valgrind
|
||||
VALGRINDFLAGS := --leak-check=full --show-leak-kinds=all --track-origins=yes \
|
||||
--sigill-diagnostics=yes --quiet --show-error-list=yes
|
||||
|
||||
|
||||
TIME := \time -f "\ttime: %E real, %U user, %S sys\n\tcontext-switch:\t%c+%w, page-faults: %F+%R\n"
|
||||
export PATH := .:$(PATH)
|
||||
|
||||
.PHONY: clean all compile assembly memcheck memcheck1 memcheck2 part1 part2 ccls bear org
|
||||
|
||||
all: README.org ccls part1 part2
|
||||
|
||||
memcheck: memcheck1 memcheck2
|
||||
|
||||
memcheck1: aoc-c
|
||||
@$(VALGRIND) $(VALGRINDFLAGS) aoc-c -p 1 < $(INPUT)
|
||||
|
||||
memcheck2: aoc-c
|
||||
@$(VALGRIND) $(VALGRINDFLAGS) aoc-c -p 2 < $(INPUT)
|
||||
@#@valgrind -s --track-origins=yes aoc-c -p 2 < $(INPUT)
|
||||
|
||||
compile: aoc-c
|
||||
|
||||
cpp: aoc-c.i
|
||||
|
||||
assembly: aoc-c.s
|
||||
|
||||
part1: aoc-c
|
||||
@$(TIME) aoc.bash -p 1 < $(INPUT) 2>&1
|
||||
@$(TIME) aoc-c -p 1 < $(INPUT)
|
||||
|
||||
part2: aoc-c
|
||||
@$(TIME) aoc.bash -p 2 < $(INPUT) 2>&1
|
||||
@$(TIME) aoc-c -p 2 < $(INPUT)
|
||||
|
||||
ccls: $(CCLSFILE)
|
||||
|
||||
clean:
|
||||
@rm -f aoc-c core* vgcore* gmon.out aoc-c.s aoc-c.i README.html compile_commands.json
|
||||
|
||||
aoc-c: aoc-c.c common.c
|
||||
@echo compiling $<
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) -I $(INCDIR) $^ $(LDLIB) -o $@
|
||||
|
||||
# generate pre-processed file (.i) and assembler (.s)
|
||||
%.i: %.c
|
||||
@echo generating $@
|
||||
@$(CC) -E $(CFLAGS) -I $(INCDIR) $< -o $@
|
||||
|
||||
%.s: %.c
|
||||
@echo generating $@
|
||||
@$(CC) -S -fverbose-asm $(CFLAGS) -I $(INCDIR) $< -o $@
|
||||
|
||||
# generate README.org from README.html (must cleanup !)
|
||||
org: README.org
|
||||
|
||||
%.org: %.html
|
||||
@echo generating $@. Cleanup before commit !
|
||||
@pandoc $< -o $@
|
||||
|
||||
# generate compile_commands.json
|
||||
$(CCLSFILE): aoc-c.c Makefile
|
||||
$(BEAR) -- make clean compile
|
||||
|
||||
bear: clean
|
||||
@touch .ccls-root
|
||||
@$(BEAR) -- make compile
|
91
2022/day05/README.org
Normal file
91
2022/day05/README.org
Normal file
@@ -0,0 +1,91 @@
|
||||
** --- Day 5: Supply Stacks ---
|
||||
The expedition can depart as soon as the final supplies have been
|
||||
unloaded from the ships. Supplies are stored in stacks of marked
|
||||
/crates/, but because the needed supplies are buried under many other
|
||||
crates, the crates need to be rearranged.
|
||||
|
||||
The ship has a /giant cargo crane/ capable of moving crates between
|
||||
stacks. To ensure none of the crates get crushed or fall over, the crane
|
||||
operator will rearrange them in a series of carefully-planned steps.
|
||||
After the crates are rearranged, the desired crates will be at the top
|
||||
of each stack.
|
||||
|
||||
The Elves don't want to interrupt the crane operator during this
|
||||
delicate procedure, but they forgot to ask her /which/ crate will end up
|
||||
where, and they want to be ready to unload them as soon as possible so
|
||||
they can embark.
|
||||
|
||||
They do, however, have a drawing of the starting stacks of crates /and/
|
||||
the rearrangement procedure (your puzzle input). For example:
|
||||
|
||||
#+begin_example
|
||||
[D]
|
||||
[N] [C]
|
||||
[Z] [M] [P]
|
||||
1 2 3
|
||||
|
||||
move 1 from 2 to 1
|
||||
move 3 from 1 to 3
|
||||
move 2 from 2 to 1
|
||||
move 1 from 1 to 2
|
||||
#+end_example
|
||||
|
||||
In this example, there are three stacks of crates. Stack 1 contains two
|
||||
crates: crate =Z= is on the bottom, and crate =N= is on top. Stack 2
|
||||
contains three crates; from bottom to top, they are crates =M=, =C=, and
|
||||
=D=. Finally, stack 3 contains a single crate, =P=.
|
||||
|
||||
Then, the rearrangement procedure is given. In each step of the
|
||||
procedure, a quantity of crates is moved from one stack to a different
|
||||
stack. In the first step of the above rearrangement procedure, one crate
|
||||
is moved from stack 2 to stack 1, resulting in this configuration:
|
||||
|
||||
#+begin_example
|
||||
[D]
|
||||
[N] [C]
|
||||
[Z] [M] [P]
|
||||
1 2 3
|
||||
#+end_example
|
||||
|
||||
In the second step, three crates are moved from stack 1 to stack 3.
|
||||
Crates are moved /one at a time/, so the first crate to be moved (=D=)
|
||||
ends up below the second and third crates:
|
||||
|
||||
#+begin_example
|
||||
[Z]
|
||||
[N]
|
||||
[C] [D]
|
||||
[M] [P]
|
||||
1 2 3
|
||||
#+end_example
|
||||
|
||||
Then, both crates are moved from stack 2 to stack 1. Again, because
|
||||
crates are moved /one at a time/, crate =C= ends up below crate =M=:
|
||||
|
||||
#+begin_example
|
||||
[Z]
|
||||
[N]
|
||||
[M] [D]
|
||||
[C] [P]
|
||||
1 2 3
|
||||
#+end_example
|
||||
|
||||
Finally, one crate is moved from stack 1 to stack 2:
|
||||
|
||||
#+begin_example
|
||||
[Z]
|
||||
[N]
|
||||
[D]
|
||||
[C] [M] [P]
|
||||
1 2 3
|
||||
#+end_example
|
||||
|
||||
The Elves just need to know /which crate will end up on top of each
|
||||
stack/; in this example, the top crates are =C= in stack 1, =M= in stack
|
||||
2, and =Z= in stack 3, so you should combine these together and give the
|
||||
Elves the message =CMZ=.
|
||||
|
||||
/After the rearrangement procedure completes, what crate ends up on top
|
||||
of each stack?/
|
||||
|
||||
To begin, [[file:5/input][get your puzzle input]].
|
17
2022/day05/aoc.h
Normal file
17
2022/day05/aoc.h
Normal file
@@ -0,0 +1,17 @@
|
||||
/* aoc.c: Advent of Code 2022
|
||||
*
|
||||
* Copyright (C) 2022 Bruno Raoult ("br")
|
||||
* Licensed under the GNU General Public License v3.0 or later.
|
||||
* Some rights reserved. See COPYING.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with this
|
||||
* program. If not, see <https://www.gnu.org/licenses/gpl-3.0-standalone.html>.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later <https://spdx.org/licenses/GPL-3.0-or-later.html>
|
||||
*/
|
||||
#ifndef _AOC_H_
|
||||
#define _AOC_H_
|
||||
|
||||
extern int parseargs(int ac, char**av);
|
||||
|
||||
#endif /* _AOC_H_ */
|
67
2022/day05/common.bash
Executable file
67
2022/day05/common.bash
Executable file
@@ -0,0 +1,67 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# common.bash: Advent of Code 2022, common bash functions
|
||||
#
|
||||
# Copyright (C) 2022 Bruno Raoult ("br")
|
||||
# Licensed under the GNU General Public License v3.0 or later.
|
||||
# Some rights reserved. See COPYING.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along with this
|
||||
# program. If not, see <https://www.gnu.org/licenses/gpl-3.0-standalone.html>.
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later <https://spdx.org/licenses/GPL-3.0-or-later.html>
|
||||
|
||||
# shellcheck disable=2034
|
||||
export cmdname=${0##*/}
|
||||
export debug=0
|
||||
export res
|
||||
|
||||
shopt -s extglob
|
||||
set -o noglob
|
||||
|
||||
usage() {
|
||||
printf "usage: %s [-d DEBUG] [-p PART]\n" "$cmdname"
|
||||
exit 1
|
||||
}
|
||||
|
||||
checkargs() {
|
||||
local part=1
|
||||
while getopts p:d: todo; do
|
||||
case "$todo" in
|
||||
d)
|
||||
if [[ "$OPTARG" =~ ^[[:digit:]+]$ ]]; then
|
||||
debug="$OPTARG"
|
||||
else
|
||||
printf "%s: illegal [%s] debug level.\n" "$CMD" "$OPTARG"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
p)
|
||||
if [[ "$OPTARG" =~ ^[12]$ ]]; then
|
||||
part="$OPTARG"
|
||||
else
|
||||
printf "%s: illegal [%s] part.\n" "$CMD" "$OPTARG"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
usage
|
||||
;;
|
||||
esac
|
||||
done
|
||||
# Now check remaining argument (backup directory)
|
||||
shift $((OPTIND - 1))
|
||||
|
||||
(( $# > 1 )) && usage
|
||||
return "$part"
|
||||
}
|
||||
|
||||
main() {
|
||||
local -i part
|
||||
|
||||
checkargs "$@"
|
||||
part=$?
|
||||
parse "$part"
|
||||
solve "$part"
|
||||
printf "%s: res=%s\n" "$cmdname" "$res"
|
||||
}
|
49
2022/day05/common.c
Normal file
49
2022/day05/common.c
Normal file
@@ -0,0 +1,49 @@
|
||||
/* common.c: Advent of Code 2022, common functions
|
||||
*
|
||||
* Copyright (C) 2022 Bruno Raoult ("br")
|
||||
* Licensed under the GNU General Public License v3.0 or later.
|
||||
* Some rights reserved. See COPYING.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with this
|
||||
* program. If not, see <https://www.gnu.org/licenses/gpl-3.0-standalone.html>.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later <https://spdx.org/licenses/GPL-3.0-or-later.html>
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "aoc.h"
|
||||
#include "debug.h"
|
||||
|
||||
static int usage(char *prg)
|
||||
{
|
||||
fprintf(stderr, "Usage: %s [-d debug_level] [-p part] [-i input]\n", prg);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int parseargs(int ac, char **av)
|
||||
{
|
||||
int opt, part = 1;
|
||||
|
||||
while ((opt = getopt(ac, av, "d:p:")) != -1) {
|
||||
switch (opt) {
|
||||
case 'd':
|
||||
debug_level_set(atoi(optarg));
|
||||
break;
|
||||
case 'p': /* 1 or 2 */
|
||||
part = atoi(optarg);
|
||||
if (part < 1 || part > 2)
|
||||
return usage(*av);
|
||||
break;
|
||||
case 'i':
|
||||
|
||||
default:
|
||||
return usage(*av);
|
||||
}
|
||||
}
|
||||
if (optind < ac)
|
||||
return usage(*av);
|
||||
return part;
|
||||
}
|
9
2022/day05/input/example.txt
Normal file
9
2022/day05/input/example.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
[D]
|
||||
[N] [C]
|
||||
[Z] [M] [P]
|
||||
1 2 3
|
||||
|
||||
move 1 from 2 to 1
|
||||
move 3 from 1 to 3
|
||||
move 2 from 2 to 1
|
||||
move 1 from 1 to 2
|
511
2022/day05/input/input.txt
Normal file
511
2022/day05/input/input.txt
Normal file
@@ -0,0 +1,511 @@
|
||||
[L] [M] [M]
|
||||
[D] [R] [Z] [C] [L]
|
||||
[C] [S] [T] [G] [V] [M]
|
||||
[R] [L] [Q] [B] [B] [D] [F]
|
||||
[H] [B] [G] [D] [Q] [Z] [T] [J]
|
||||
[M] [J] [H] [M] [P] [S] [V] [L] [N]
|
||||
[P] [C] [N] [T] [S] [F] [R] [G] [Q]
|
||||
[Z] [P] [S] [F] [F] [T] [N] [P] [W]
|
||||
1 2 3 4 5 6 7 8 9
|
||||
|
||||
move 7 from 3 to 9
|
||||
move 5 from 8 to 9
|
||||
move 3 from 9 to 5
|
||||
move 6 from 9 to 2
|
||||
move 9 from 9 to 3
|
||||
move 3 from 7 to 3
|
||||
move 8 from 2 to 3
|
||||
move 9 from 3 to 1
|
||||
move 11 from 3 to 8
|
||||
move 5 from 6 to 9
|
||||
move 1 from 6 to 3
|
||||
move 1 from 2 to 7
|
||||
move 1 from 4 to 8
|
||||
move 1 from 3 to 9
|
||||
move 4 from 4 to 3
|
||||
move 6 from 8 to 3
|
||||
move 2 from 8 to 2
|
||||
move 4 from 9 to 3
|
||||
move 3 from 2 to 5
|
||||
move 2 from 5 to 4
|
||||
move 5 from 3 to 4
|
||||
move 11 from 1 to 4
|
||||
move 1 from 7 to 6
|
||||
move 1 from 3 to 5
|
||||
move 2 from 1 to 9
|
||||
move 1 from 1 to 4
|
||||
move 7 from 5 to 8
|
||||
move 21 from 4 to 6
|
||||
move 6 from 6 to 2
|
||||
move 6 from 8 to 9
|
||||
move 5 from 8 to 5
|
||||
move 2 from 2 to 7
|
||||
move 4 from 3 to 7
|
||||
move 1 from 2 to 6
|
||||
move 1 from 2 to 5
|
||||
move 2 from 2 to 7
|
||||
move 4 from 3 to 7
|
||||
move 1 from 4 to 6
|
||||
move 9 from 5 to 3
|
||||
move 7 from 3 to 4
|
||||
move 7 from 7 to 3
|
||||
move 7 from 4 to 1
|
||||
move 8 from 3 to 5
|
||||
move 1 from 3 to 5
|
||||
move 3 from 8 to 2
|
||||
move 2 from 2 to 9
|
||||
move 13 from 9 to 4
|
||||
move 5 from 5 to 3
|
||||
move 4 from 7 to 6
|
||||
move 1 from 7 to 4
|
||||
move 2 from 4 to 2
|
||||
move 3 from 3 to 4
|
||||
move 2 from 5 to 2
|
||||
move 6 from 1 to 7
|
||||
move 1 from 2 to 8
|
||||
move 1 from 3 to 8
|
||||
move 1 from 1 to 6
|
||||
move 1 from 3 to 4
|
||||
move 1 from 2 to 6
|
||||
move 24 from 6 to 1
|
||||
move 3 from 2 to 3
|
||||
move 3 from 3 to 5
|
||||
move 2 from 8 to 6
|
||||
move 2 from 5 to 4
|
||||
move 3 from 5 to 1
|
||||
move 7 from 4 to 8
|
||||
move 3 from 8 to 9
|
||||
move 2 from 9 to 5
|
||||
move 2 from 6 to 3
|
||||
move 1 from 9 to 8
|
||||
move 5 from 7 to 5
|
||||
move 2 from 3 to 1
|
||||
move 1 from 7 to 1
|
||||
move 7 from 4 to 7
|
||||
move 2 from 4 to 8
|
||||
move 6 from 8 to 6
|
||||
move 3 from 6 to 9
|
||||
move 10 from 5 to 1
|
||||
move 7 from 7 to 1
|
||||
move 1 from 4 to 9
|
||||
move 1 from 6 to 3
|
||||
move 2 from 9 to 7
|
||||
move 1 from 4 to 2
|
||||
move 1 from 9 to 5
|
||||
move 1 from 8 to 5
|
||||
move 39 from 1 to 8
|
||||
move 1 from 2 to 5
|
||||
move 2 from 6 to 9
|
||||
move 3 from 9 to 5
|
||||
move 3 from 1 to 6
|
||||
move 1 from 7 to 2
|
||||
move 1 from 3 to 2
|
||||
move 2 from 6 to 2
|
||||
move 3 from 2 to 3
|
||||
move 1 from 6 to 2
|
||||
move 1 from 1 to 8
|
||||
move 3 from 1 to 2
|
||||
move 3 from 2 to 4
|
||||
move 2 from 4 to 5
|
||||
move 2 from 3 to 8
|
||||
move 8 from 5 to 2
|
||||
move 8 from 8 to 2
|
||||
move 15 from 2 to 7
|
||||
move 1 from 1 to 5
|
||||
move 25 from 8 to 7
|
||||
move 2 from 2 to 4
|
||||
move 2 from 4 to 3
|
||||
move 1 from 8 to 4
|
||||
move 2 from 4 to 6
|
||||
move 1 from 2 to 1
|
||||
move 26 from 7 to 2
|
||||
move 15 from 2 to 1
|
||||
move 7 from 8 to 9
|
||||
move 10 from 1 to 6
|
||||
move 10 from 7 to 2
|
||||
move 1 from 8 to 1
|
||||
move 5 from 9 to 8
|
||||
move 1 from 8 to 9
|
||||
move 2 from 6 to 9
|
||||
move 3 from 7 to 1
|
||||
move 1 from 7 to 1
|
||||
move 5 from 9 to 2
|
||||
move 1 from 3 to 1
|
||||
move 9 from 6 to 3
|
||||
move 1 from 6 to 1
|
||||
move 4 from 2 to 4
|
||||
move 3 from 4 to 8
|
||||
move 1 from 4 to 1
|
||||
move 9 from 3 to 1
|
||||
move 1 from 7 to 6
|
||||
move 9 from 2 to 5
|
||||
move 14 from 1 to 6
|
||||
move 1 from 3 to 8
|
||||
move 5 from 2 to 6
|
||||
move 8 from 1 to 8
|
||||
move 6 from 6 to 8
|
||||
move 14 from 6 to 7
|
||||
move 1 from 1 to 7
|
||||
move 10 from 5 to 4
|
||||
move 11 from 8 to 5
|
||||
move 15 from 7 to 1
|
||||
move 4 from 5 to 6
|
||||
move 4 from 8 to 9
|
||||
move 6 from 5 to 3
|
||||
move 1 from 6 to 9
|
||||
move 1 from 1 to 6
|
||||
move 1 from 5 to 8
|
||||
move 2 from 6 to 2
|
||||
move 6 from 1 to 5
|
||||
move 1 from 5 to 8
|
||||
move 2 from 5 to 4
|
||||
move 9 from 2 to 9
|
||||
move 13 from 9 to 8
|
||||
move 1 from 2 to 1
|
||||
move 1 from 4 to 8
|
||||
move 3 from 3 to 1
|
||||
move 2 from 4 to 5
|
||||
move 2 from 1 to 5
|
||||
move 1 from 9 to 3
|
||||
move 17 from 8 to 1
|
||||
move 3 from 3 to 2
|
||||
move 4 from 5 to 1
|
||||
move 2 from 2 to 4
|
||||
move 1 from 6 to 1
|
||||
move 1 from 2 to 8
|
||||
move 4 from 4 to 6
|
||||
move 1 from 5 to 9
|
||||
move 5 from 6 to 8
|
||||
move 1 from 5 to 4
|
||||
move 1 from 5 to 6
|
||||
move 3 from 8 to 6
|
||||
move 8 from 4 to 5
|
||||
move 32 from 1 to 7
|
||||
move 11 from 7 to 6
|
||||
move 8 from 5 to 3
|
||||
move 3 from 8 to 7
|
||||
move 6 from 3 to 9
|
||||
move 4 from 3 to 8
|
||||
move 5 from 8 to 2
|
||||
move 1 from 8 to 5
|
||||
move 11 from 6 to 3
|
||||
move 1 from 5 to 2
|
||||
move 2 from 8 to 6
|
||||
move 12 from 7 to 8
|
||||
move 2 from 6 to 2
|
||||
move 2 from 6 to 4
|
||||
move 5 from 2 to 5
|
||||
move 8 from 7 to 2
|
||||
move 2 from 7 to 1
|
||||
move 2 from 7 to 6
|
||||
move 5 from 5 to 4
|
||||
move 5 from 4 to 7
|
||||
move 5 from 8 to 2
|
||||
move 2 from 9 to 7
|
||||
move 5 from 8 to 4
|
||||
move 2 from 7 to 3
|
||||
move 2 from 9 to 3
|
||||
move 3 from 7 to 9
|
||||
move 1 from 1 to 8
|
||||
move 2 from 6 to 1
|
||||
move 2 from 9 to 8
|
||||
move 1 from 7 to 8
|
||||
move 1 from 2 to 5
|
||||
move 1 from 7 to 9
|
||||
move 7 from 4 to 3
|
||||
move 3 from 3 to 6
|
||||
move 5 from 8 to 6
|
||||
move 3 from 9 to 5
|
||||
move 16 from 3 to 1
|
||||
move 2 from 9 to 1
|
||||
move 7 from 1 to 8
|
||||
move 1 from 1 to 2
|
||||
move 5 from 8 to 2
|
||||
move 12 from 1 to 4
|
||||
move 1 from 3 to 5
|
||||
move 1 from 2 to 9
|
||||
move 1 from 9 to 4
|
||||
move 4 from 6 to 5
|
||||
move 5 from 6 to 1
|
||||
move 1 from 6 to 5
|
||||
move 1 from 1 to 4
|
||||
move 1 from 4 to 7
|
||||
move 1 from 3 to 7
|
||||
move 9 from 4 to 6
|
||||
move 2 from 7 to 8
|
||||
move 1 from 3 to 4
|
||||
move 2 from 8 to 9
|
||||
move 4 from 8 to 4
|
||||
move 4 from 2 to 8
|
||||
move 2 from 9 to 7
|
||||
move 2 from 7 to 8
|
||||
move 10 from 2 to 4
|
||||
move 1 from 2 to 1
|
||||
move 5 from 4 to 7
|
||||
move 1 from 1 to 3
|
||||
move 3 from 8 to 7
|
||||
move 6 from 7 to 2
|
||||
move 3 from 2 to 7
|
||||
move 1 from 6 to 7
|
||||
move 5 from 5 to 8
|
||||
move 4 from 1 to 3
|
||||
move 4 from 3 to 1
|
||||
move 8 from 4 to 2
|
||||
move 1 from 3 to 2
|
||||
move 2 from 7 to 2
|
||||
move 2 from 6 to 3
|
||||
move 4 from 7 to 2
|
||||
move 4 from 5 to 7
|
||||
move 14 from 2 to 7
|
||||
move 3 from 2 to 1
|
||||
move 3 from 8 to 2
|
||||
move 1 from 5 to 7
|
||||
move 6 from 2 to 4
|
||||
move 2 from 2 to 7
|
||||
move 2 from 3 to 6
|
||||
move 6 from 8 to 2
|
||||
move 4 from 6 to 4
|
||||
move 2 from 6 to 9
|
||||
move 4 from 4 to 2
|
||||
move 2 from 4 to 8
|
||||
move 10 from 7 to 2
|
||||
move 18 from 2 to 6
|
||||
move 2 from 2 to 6
|
||||
move 2 from 9 to 2
|
||||
move 2 from 8 to 5
|
||||
move 1 from 2 to 9
|
||||
move 1 from 2 to 9
|
||||
move 1 from 5 to 7
|
||||
move 1 from 2 to 6
|
||||
move 2 from 9 to 2
|
||||
move 6 from 7 to 3
|
||||
move 7 from 6 to 8
|
||||
move 5 from 7 to 2
|
||||
move 1 from 7 to 4
|
||||
move 1 from 5 to 7
|
||||
move 4 from 8 to 7
|
||||
move 5 from 2 to 3
|
||||
move 1 from 7 to 5
|
||||
move 2 from 2 to 8
|
||||
move 9 from 4 to 3
|
||||
move 13 from 6 to 8
|
||||
move 10 from 3 to 1
|
||||
move 1 from 5 to 2
|
||||
move 3 from 6 to 8
|
||||
move 5 from 1 to 2
|
||||
move 1 from 1 to 8
|
||||
move 2 from 4 to 3
|
||||
move 17 from 8 to 6
|
||||
move 5 from 6 to 3
|
||||
move 3 from 1 to 2
|
||||
move 9 from 6 to 5
|
||||
move 2 from 6 to 8
|
||||
move 5 from 5 to 9
|
||||
move 3 from 9 to 8
|
||||
move 3 from 1 to 3
|
||||
move 3 from 7 to 5
|
||||
move 6 from 5 to 8
|
||||
move 7 from 2 to 4
|
||||
move 1 from 6 to 3
|
||||
move 1 from 1 to 5
|
||||
move 4 from 4 to 5
|
||||
move 2 from 2 to 9
|
||||
move 3 from 1 to 3
|
||||
move 4 from 5 to 8
|
||||
move 1 from 4 to 5
|
||||
move 6 from 8 to 7
|
||||
move 1 from 5 to 2
|
||||
move 4 from 9 to 2
|
||||
move 2 from 5 to 9
|
||||
move 2 from 1 to 8
|
||||
move 2 from 4 to 9
|
||||
move 6 from 7 to 5
|
||||
move 3 from 5 to 2
|
||||
move 3 from 2 to 5
|
||||
move 10 from 8 to 3
|
||||
move 2 from 8 to 5
|
||||
move 3 from 2 to 5
|
||||
move 6 from 5 to 1
|
||||
move 4 from 5 to 6
|
||||
move 1 from 7 to 5
|
||||
move 23 from 3 to 7
|
||||
move 2 from 5 to 9
|
||||
move 2 from 1 to 5
|
||||
move 2 from 6 to 3
|
||||
move 6 from 3 to 1
|
||||
move 1 from 1 to 7
|
||||
move 4 from 3 to 1
|
||||
move 1 from 8 to 5
|
||||
move 2 from 9 to 2
|
||||
move 3 from 3 to 8
|
||||
move 2 from 6 to 8
|
||||
move 12 from 1 to 3
|
||||
move 1 from 9 to 7
|
||||
move 3 from 5 to 9
|
||||
move 9 from 3 to 8
|
||||
move 1 from 1 to 7
|
||||
move 1 from 9 to 4
|
||||
move 3 from 3 to 6
|
||||
move 3 from 2 to 1
|
||||
move 3 from 8 to 6
|
||||
move 1 from 4 to 2
|
||||
move 1 from 2 to 9
|
||||
move 1 from 2 to 7
|
||||
move 20 from 7 to 5
|
||||
move 3 from 7 to 3
|
||||
move 3 from 1 to 3
|
||||
move 5 from 8 to 1
|
||||
move 5 from 1 to 5
|
||||
move 4 from 5 to 2
|
||||
move 3 from 2 to 6
|
||||
move 3 from 8 to 7
|
||||
move 1 from 2 to 6
|
||||
move 2 from 8 to 6
|
||||
move 2 from 7 to 5
|
||||
move 2 from 3 to 6
|
||||
move 12 from 5 to 1
|
||||
move 6 from 5 to 7
|
||||
move 12 from 6 to 8
|
||||
move 4 from 9 to 3
|
||||
move 4 from 5 to 8
|
||||
move 3 from 1 to 5
|
||||
move 4 from 7 to 4
|
||||
move 3 from 5 to 9
|
||||
move 7 from 1 to 6
|
||||
move 1 from 1 to 3
|
||||
move 6 from 7 to 6
|
||||
move 1 from 1 to 3
|
||||
move 10 from 3 to 6
|
||||
move 10 from 6 to 2
|
||||
move 2 from 9 to 5
|
||||
move 4 from 6 to 5
|
||||
move 9 from 6 to 1
|
||||
move 16 from 8 to 7
|
||||
move 3 from 8 to 7
|
||||
move 1 from 8 to 1
|
||||
move 7 from 2 to 1
|
||||
move 1 from 5 to 9
|
||||
move 1 from 6 to 1
|
||||
move 2 from 2 to 1
|
||||
move 3 from 1 to 4
|
||||
move 1 from 6 to 8
|
||||
move 7 from 4 to 1
|
||||
move 1 from 8 to 2
|
||||
move 22 from 1 to 8
|
||||
move 18 from 7 to 9
|
||||
move 6 from 5 to 2
|
||||
move 2 from 2 to 7
|
||||
move 2 from 1 to 5
|
||||
move 4 from 7 to 6
|
||||
move 1 from 5 to 6
|
||||
move 2 from 8 to 2
|
||||
move 3 from 2 to 6
|
||||
move 1 from 5 to 6
|
||||
move 15 from 9 to 6
|
||||
move 6 from 9 to 5
|
||||
move 1 from 9 to 8
|
||||
move 1 from 2 to 9
|
||||
move 5 from 5 to 9
|
||||
move 9 from 8 to 6
|
||||
move 3 from 2 to 7
|
||||
move 12 from 8 to 9
|
||||
move 1 from 7 to 5
|
||||
move 1 from 5 to 7
|
||||
move 3 from 7 to 1
|
||||
move 17 from 6 to 3
|
||||
move 1 from 2 to 6
|
||||
move 2 from 1 to 4
|
||||
move 16 from 6 to 4
|
||||
move 7 from 4 to 6
|
||||
move 1 from 5 to 7
|
||||
move 8 from 4 to 5
|
||||
move 9 from 9 to 8
|
||||
move 16 from 3 to 7
|
||||
move 1 from 1 to 5
|
||||
move 3 from 5 to 1
|
||||
move 5 from 6 to 2
|
||||
move 3 from 1 to 7
|
||||
move 3 from 6 to 7
|
||||
move 3 from 9 to 3
|
||||
move 5 from 8 to 5
|
||||
move 11 from 5 to 7
|
||||
move 2 from 3 to 7
|
||||
move 1 from 2 to 1
|
||||
move 1 from 3 to 6
|
||||
move 17 from 7 to 9
|
||||
move 1 from 3 to 2
|
||||
move 3 from 4 to 6
|
||||
move 1 from 1 to 2
|
||||
move 1 from 6 to 4
|
||||
move 14 from 7 to 6
|
||||
move 15 from 9 to 6
|
||||
move 4 from 8 to 7
|
||||
move 1 from 4 to 7
|
||||
move 7 from 9 to 5
|
||||
move 5 from 2 to 9
|
||||
move 7 from 5 to 1
|
||||
move 3 from 1 to 7
|
||||
move 29 from 6 to 4
|
||||
move 1 from 2 to 4
|
||||
move 18 from 4 to 2
|
||||
move 3 from 1 to 4
|
||||
move 1 from 1 to 7
|
||||
move 18 from 2 to 4
|
||||
move 3 from 6 to 5
|
||||
move 15 from 4 to 1
|
||||
move 1 from 5 to 1
|
||||
move 1 from 5 to 4
|
||||
move 9 from 4 to 1
|
||||
move 5 from 1 to 3
|
||||
move 9 from 1 to 5
|
||||
move 2 from 4 to 3
|
||||
move 5 from 5 to 6
|
||||
move 3 from 7 to 9
|
||||
move 7 from 7 to 5
|
||||
move 6 from 4 to 6
|
||||
move 2 from 3 to 7
|
||||
move 6 from 5 to 8
|
||||
move 2 from 8 to 4
|
||||
move 1 from 8 to 9
|
||||
move 9 from 6 to 2
|
||||
move 3 from 9 to 3
|
||||
move 1 from 2 to 1
|
||||
move 6 from 7 to 4
|
||||
move 2 from 2 to 8
|
||||
move 3 from 9 to 5
|
||||
move 5 from 4 to 8
|
||||
move 1 from 6 to 9
|
||||
move 1 from 3 to 1
|
||||
move 1 from 3 to 4
|
||||
move 1 from 6 to 5
|
||||
move 1 from 9 to 3
|
||||
move 10 from 8 to 7
|
||||
move 3 from 9 to 2
|
||||
move 7 from 2 to 4
|
||||
move 6 from 5 to 7
|
||||
move 4 from 5 to 8
|
||||
move 7 from 3 to 2
|
||||
move 3 from 7 to 1
|
||||
move 9 from 1 to 5
|
||||
move 5 from 7 to 9
|
||||
move 7 from 1 to 4
|
||||
move 11 from 4 to 2
|
||||
move 4 from 8 to 3
|
||||
move 5 from 4 to 7
|
||||
move 4 from 4 to 1
|
||||
move 1 from 3 to 6
|
||||
move 12 from 7 to 4
|
||||
move 2 from 1 to 8
|
||||
move 5 from 9 to 7
|
||||
move 7 from 5 to 6
|
||||
move 1 from 1 to 4
|
||||
move 1 from 9 to 8
|
||||
move 1 from 4 to 7
|
||||
move 1 from 8 to 9
|
||||
move 5 from 7 to 9
|
||||
move 2 from 7 to 5
|
||||
move 2 from 6 to 3
|
||||
move 5 from 2 to 7
|
||||
move 1 from 7 to 8
|
||||
move 1 from 1 to 6
|
||||
move 3 from 5 to 1
|
8
env.sh
8
env.sh
@@ -5,3 +5,11 @@ export LD_LIBRARY_PATH=../lib
|
||||
# usage:
|
||||
# TIME command < inputfile
|
||||
alias TIME='\time -f "\ttime: %E real, %U user, %S sys\n\tcontext-switch:\t%c+%w, page-faults: %F+%R\n"'
|
||||
|
||||
# Get (move) ~/Downloads/Day* file to README.html in current directory, then
|
||||
# run "make org"
|
||||
org() {
|
||||
mv ~/Downloads/Day* README.html
|
||||
make org
|
||||
rm README.html
|
||||
}
|
||||
|
Reference in New Issue
Block a user