aboutsummaryrefslogtreecommitdiff
path: root/2022/day-02
diff options
context:
space:
mode:
authorHunky Jimpjorps <thechairman@thechairman.info>2022-12-03 11:08:05 -0500
committerHunky Jimpjorps <thechairman@thechairman.info>2022-12-03 11:08:05 -0500
commitd4ba38a19e361d932fd0b3b816b37153d191a3e5 (patch)
treec6f1c471ec2ad1ed999a2c17c68849adf9201430 /2022/day-02
parente276854b56eff5508fb88e9a22563b3e80b18336 (diff)
downloadgleam_aoc-d4ba38a19e361d932fd0b3b816b37153d191a3e5.tar.gz
gleam_aoc-d4ba38a19e361d932fd0b3b816b37153d191a3e5.zip
day 2 prolog tweaks
Diffstat (limited to '2022/day-02')
-rw-r--r--2022/day-02/day-02.pl25
-rw-r--r--2022/day-02/prolog-input.txt2500
2 files changed, 2515 insertions, 10 deletions
diff --git a/2022/day-02/day-02.pl b/2022/day-02/day-02.pl
index 6561ea5..707da41 100644
--- a/2022/day-02/day-02.pl
+++ b/2022/day-02/day-02.pl
@@ -1,6 +1,13 @@
:- use_module(library(yall)).
:- use_module(library(apply)).
+output_solutions :-
+ get_data(Games),
+ part1_total(Games, Part1),
+ write(Part1), nl, !,
+ part2_total(Games, Part2),
+ write(Part2), nl.
+
% Facts
game(X, X, draw).
@@ -30,10 +37,10 @@ bonus(lose, 0).
bonus(draw, 3).
bonus(win, 6).
-% Predicates
+% Rules
get_data(Result) :-
- setup_call_cleanup(open("2022/day-02/input", read, In),
+ setup_call_cleanup(open("2022/day-02/prolog-input.txt", read, In),
(read_string(In, _, Str),
split_string(Str, "\n", "\s\t\n", Lines),
maplist([In, Out] >> split_string(In, "\s", "", Out), Lines, Result)),
@@ -44,24 +51,22 @@ score_game(MyMove, Result, Score) :-
bonus(MyMove, Y),
Score is X + Y.
-part_1_score([Them, Me], Score) :-
+part1_score([Them, Me], Score) :-
opponent_move(Them, TheirMove),
assume_move(Me, MyMove),
game(MyMove, TheirMove, Result),
score_game(MyMove, Result, Score).
-part_1_total(Total) :-
- get_data(Games),
- maplist(part_1_score, Games, Scores),
+part1_total(Games, Total) :-
+ maplist(part1_score, Games, Scores),
sum_list(Scores, Total).
-part_2_score([Them, Outcome], Score) :-
+part2_score([Them, Outcome], Score) :-
opponent_move(Them, TheirMove),
assume_outcome(Outcome, Result),
game(MyMove, TheirMove, Result),
score_game(MyMove, Result, Score).
-part_2_total(Total) :-
- get_data(Games),
- maplist(part_2_score, Games, Scores),
+part2_total(Games, Total) :-
+ maplist(part2_score, Games, Scores),
sum_list(Scores, Total). \ No newline at end of file
diff --git a/2022/day-02/prolog-input.txt b/2022/day-02/prolog-input.txt
new file mode 100644
index 0000000..95a2b2a
--- /dev/null
+++ b/2022/day-02/prolog-input.txt
@@ -0,0 +1,2500 @@
+C X
+C X
+A Y
+C X
+B Y
+A X
+A Z
+B Y
+C Z
+C Z
+B X
+C Z
+B Y
+C Z
+B Y
+A Z
+B Y
+C X
+C X
+C X
+B X
+C Z
+C X
+C Z
+C X
+A Y
+B Y
+B Z
+A X
+C X
+C Z
+C Z
+A Z
+B Y
+C Z
+C X
+C X
+C Z
+B Y
+C Z
+C Z
+C X
+B X
+B X
+A Y
+C Z
+C Z
+B Y
+B Y
+C Z
+C X
+A Z
+C X
+C Z
+C Z
+B X
+C Z
+C Z
+B Y
+A Y
+B X
+C X
+C X
+C Z
+C X
+A Y
+C X
+C Z
+A Z
+B Y
+C Z
+C X
+C X
+C Z
+C Z
+C Z
+A Z
+C Z
+A Z
+A Z
+C X
+B Y
+C X
+C X
+A Z
+C X
+A Y
+C Z
+C Z
+A Y
+A Z
+C Z
+C Z
+A Y
+C Z
+C Y
+B Y
+B Y
+A Z
+A Y
+C Z
+C Z
+A Z
+C Z
+A Y
+B Z
+C X
+C Z
+C X
+B Y
+C Z
+C X
+B Y
+B X
+A Y
+C Z
+C Z
+C Z
+B Z
+A Y
+C Z
+C Z
+C X
+C Z
+C X
+A Y
+C Z
+C Z
+C X
+B Y
+B X
+B Y
+C Z
+C X
+B X
+C Z
+C Z
+A Y
+C Z
+A Z
+A Y
+C Z
+A Y
+C X
+A Y
+C Y
+A Z
+C X
+C X
+B Y
+B Y
+A Y
+A Z
+C Z
+C X
+C Z
+A Y
+B Y
+A Y
+B X
+C Z
+C Z
+A Z
+A Y
+C X
+C X
+C X
+A Z
+B Y
+C Z
+C Z
+C Z
+C X
+B Z
+C Z
+C Z
+B Z
+C Z
+A Z
+B Y
+A Y
+C Z
+B Y
+B X
+B X
+C X
+C Z
+A X
+C Z
+C X
+C X
+C X
+C X
+C X
+B Y
+C X
+C X
+A Y
+A Y
+C Z
+C Z
+B X
+C Z
+C Z
+C Z
+C Z
+A Z
+C Z
+A Z
+B Y
+B Y
+C Z
+B Y
+C Z
+C Z
+C Z
+C X
+B Y
+B Y
+C Z
+A Z
+C Z
+C X
+B Y
+C Z
+A Z
+C Z
+C X
+C Z
+C Z
+C X
+C X
+B Z
+A Y
+B X
+C Z
+B Y
+C X
+C X
+C Z
+C Z
+B X
+B X
+B Y
+A X
+C X
+A Z
+A Z
+C Z
+B Y
+C Z
+A Z
+B X
+C X
+B Y
+A Z
+C X
+A X
+A Z
+B Y
+B X
+B Y
+A Y
+C Z
+C Z
+B X
+C Z
+C X
+B Y
+C Z
+C Z
+A Y
+B Y
+A Z
+A Y
+C X
+C X
+C Z
+A Z
+C Z
+B Z
+A Z
+A Y
+C X
+C Z
+C X
+B Z
+C Z
+B Y
+A Y
+B X
+A Y
+C Z
+A Y
+C Z
+C X
+B Y
+C X
+A Y
+A Z
+C Z
+B Y
+C X
+A Y
+C X
+C Z
+C X
+B Y
+C X
+C Z
+C Z
+A Z
+B Y
+C X
+B X
+A Z
+C X
+C X
+A Y
+B X
+C X
+A Z
+C Z
+C Z
+C Z
+B Y
+A Y
+C X
+C Z
+C Z
+A Z
+C Z
+A Y
+C X
+C X
+C X
+A Z
+B Y
+C Z
+A Y
+C Z
+C Z
+C X
+C Z
+A Z
+C Z
+B Y
+C X
+C X
+C Z
+B Z
+B Y
+C X
+C X
+A Y
+A Z
+A Z
+A X
+C X
+A Y
+B Y
+A Y
+A Z
+B Y
+B Y
+A Y
+B Y
+C X
+A Z
+B X
+C Z
+A Z
+B X
+A Y
+B X
+B Y
+A Y
+A X
+C Z
+B Z
+B X
+B Z
+C Z
+C X
+B X
+B Y
+A Y
+B Y
+B Y
+B Y
+A Z
+A Y
+B X
+A Y
+C X
+B Y
+B X
+B Y
+C X
+A Y
+C X
+A Y
+C Z
+C Z
+A Z
+C Z
+C X
+C X
+A Z
+C X
+C X
+C X
+A Y
+A Z
+A Z
+C Z
+B X
+C X
+C X
+C Z
+A Y
+C X
+C X
+B X
+C Z
+C Z
+C X
+B Z
+C X
+C X
+C Z
+A Y
+C X
+A Z
+C Z
+C X
+B X
+B Y
+C X
+C Z
+C X
+C Z
+A Z
+C Z
+C X
+C Z
+C Z
+A Z
+B X
+C X
+C Z
+C X
+C X
+C Z
+C X
+C Z
+A Z
+A Z
+A Z
+C Z
+C X
+A Z
+C Z
+C Z
+C Z
+A Z
+B Y
+C X
+B Y
+C X
+C Z
+B Y
+C X
+C X
+A Z
+A Z
+C X
+C Z
+C X
+C Z
+A Z
+A Y
+C Z
+C Z
+A Y
+B Y
+B Y
+C Z
+B Y
+B X
+B Z
+A Y
+A Z
+C X
+B Y
+B Z
+B Y
+B Z
+C Z
+B Y
+C Z
+C Z
+B Y
+B X
+B Z
+C X
+A Z
+C X
+C X
+C X
+A Z
+C Z
+A Z
+C Z
+A Y
+C Y
+B Y
+A Z
+B Y
+C Z
+A Z
+A Y
+B X
+C X
+C X
+C X
+C Z
+C X
+B X
+C Z
+A Y
+C Z
+A X
+B Y
+B Z
+C Z
+B Y
+C Z
+B X
+B Y
+C Z
+B X
+A Z
+B X
+B Y
+A Y
+B Z
+C X
+C Z
+A Z
+A Y
+A Z
+C X
+C Z
+B Z
+A Z
+A Z
+C X
+C Z
+C X
+C X
+A Z
+C X
+C X
+C X
+B X
+A Y
+B Y
+B X
+B Y
+C Z
+B Y
+B Z
+C Z
+C X
+B Y
+C Z
+C Z
+C Z
+C Z
+C Z
+C Z
+A Z
+A Z
+A Z
+C X
+C Z
+B Y
+C Z
+C Z
+C Z
+C Z
+C X
+C X
+A Z
+B Y
+A Z
+B Z
+C X
+C X
+C Z
+C Z
+C X
+A Y
+C X
+A Y
+C Z
+A Z
+C Z
+B X
+C Z
+C Z
+C X
+C X
+C Z
+B Z
+A Y
+B X
+A Y
+B Y
+A Y
+A Z
+A Z
+C Z
+B X
+C Z
+C X
+C Z
+C Z
+A Z
+C X
+A Y
+C X
+A Z
+C Z
+C X
+C Z
+A Z
+C X
+C X
+C X
+C X
+B X
+B Y
+C X
+C Z
+C Z
+C Z
+C Z
+A Z
+A Z
+A Y
+C Z
+C X
+C Z
+C Z
+C Z
+A Y
+C X
+A Z
+C Y
+A Z
+C Z
+C X
+A Y
+C Z
+C X
+C X
+A Z
+B Y
+C Z
+A Z
+C Z
+C Z
+C Z
+B Y
+C X
+C X
+A X
+A Y
+C Z
+A Z
+C Z
+B Y
+C X
+B X
+C X
+C X
+A Y
+C Z
+C Z
+C Z
+C X
+A Z
+B Y
+A Y
+B Z
+B Z
+B X
+A Z
+B X
+B X
+A Z
+A Z
+C Y
+B Y
+C Z
+A X
+C Z
+B X
+C Z
+A Y
+A Y
+C Z
+C Z
+A Z
+B Y
+C Z
+C Z
+C Z
+C X
+A Y
+C X
+B Y
+B Y
+C X
+C Z
+C X
+B X
+A Y
+A Y
+C Z
+C Z
+C Z
+C Z
+C Z
+B X
+C Z
+A Y
+B X
+A Y
+A Z
+C Z
+C X
+B Y
+B Y
+C Z
+C Z
+C Z
+B Y
+C X
+B Y
+A Y
+B X
+C Z
+C Z
+A Y
+C X
+C Z
+A Y
+C X
+C X
+A Z
+C Z
+B X
+A Z
+B Y
+C Z
+A Z
+B X
+C Z
+B Y
+C Z
+B Y
+C X
+C Z
+B X
+C X
+B Y
+C X
+A Y
+C Z
+C Z
+C X
+B Y
+C X
+C Z
+C X
+C Z
+A Z
+A Y
+C X
+C Z
+C Z
+A Z
+C X
+B Z
+A Z
+B Y
+C X
+A Z
+C Z
+B Y
+C X
+C X
+C Z
+C Z
+B Y
+A Z
+C Z
+C X
+C Z
+A Z
+C X
+A Z
+C Z
+C X
+C X
+C Z
+B X
+C Z
+C Z
+C Z
+B Y
+A X
+B Y
+C X
+A Z
+B X
+A Z
+C Z
+C X
+C Z
+C Z
+B Y
+B X
+C Z
+B Z
+B Y
+B X
+C X
+C X
+C X
+C Z
+B Y
+C Z
+C Z
+C Z
+C Z
+C Z
+C Z
+C X
+C Z
+A Y
+C X
+B X
+A Y
+C X
+C X
+C Z
+C Z
+C X
+B X
+B Y
+B Y
+C Z
+B X
+C X
+C X
+C Z
+C Z
+A Y
+C Z
+A Y
+C Z
+C Z
+B Y
+A Z
+B X
+B X
+C Z
+C Z
+A Y
+A Y
+C Z
+C Z
+C X
+A Y
+A Y
+C Z
+A Z
+C X
+B Z
+A Y
+C X
+B Z
+A Y
+C X
+B Y
+C X
+C X
+C Z
+A X
+C Y
+A Y
+B Z
+B Y
+A X
+B Y
+A Z
+C Z
+C X
+C X
+C X
+C Y
+B Y
+C Z
+A Z
+C X
+C X
+C Z
+C Z
+C X
+C Z
+B Y
+C Z
+C X
+B Y
+A Z
+C X
+B Y
+C Z
+C X
+B Y
+A Z
+B X
+C Z
+B X
+B X
+C Z
+C Z
+C X
+B Y
+A Y
+B X
+B X
+A Y
+B Y
+B Y
+B X
+A Z
+A Y
+C Z
+B Y
+C Z
+A Z
+C Z
+C X
+A Z
+C X
+C Z
+C X
+B Y
+C X
+A Z
+B X
+C Z
+C X
+C X
+B Y
+A Y
+C Z
+C X
+A Y
+A X
+C Z
+B Y
+B X
+C X
+C X
+C X
+C Z
+A Z
+B Y
+A Y
+B Y
+B X
+B Y
+B Y
+A Z
+B Y
+B Y
+B Y
+C Z
+C X
+A Z
+A X
+B Z
+C X
+C X
+C X
+C X
+C Z
+A Z
+B Y
+A Z
+B Y
+C X
+A Z
+A Y
+C Z
+C X
+B X
+A Z
+B Y
+C Z
+A Z
+C X
+A Z
+A Y
+B Y
+C Z
+B Y
+C X
+A Z
+A Z
+A X
+C Z
+C X
+A Y
+B Y
+B X
+C Z
+A Z
+C X
+B X
+B Y
+A Z
+C X
+B Y
+C X
+C Z
+C Z
+B Y
+A Z
+A Y
+C X
+B Y
+C X
+C X
+C Z
+C Z
+C X
+A X
+C X
+A Z
+C Z
+B X
+B X
+C X
+B X
+B Y
+C X
+C X
+A Y
+B Y
+C Z
+C Z
+C Z
+C Z
+C Z
+C Z
+A Z
+B X
+C X
+B Y
+B Y
+C X
+C Z
+A Z
+C X
+C Z
+C Z
+C X
+A Z
+C Z
+A Z
+C Z
+A Y
+C X
+C X
+B Y
+C X
+C Z
+B X
+A Y
+C Z
+C X
+B Y
+B X
+A Y
+C X
+A Z
+C Z
+C X
+C X
+A Y
+B Y
+C Z
+B Z
+C Z
+C X
+B Y
+C Z
+C X
+A Y
+C X
+C Z
+C X
+C X
+B X
+C X
+B Y
+C X
+C Z
+C X
+B X
+B X
+C Z
+A Y
+C Z
+C Y
+B X
+A Z
+C X
+A Z
+B Z
+A Y
+C Z
+C Z
+A Z
+B Z
+A Z
+C X
+C Z
+C Z
+A Z
+A Y
+C Z
+C X
+A Y
+B Y
+B X
+A Z
+A Y
+C X
+B X
+A Y
+C Z
+B Y
+C X
+C X
+C X
+B X
+A Z
+B Y
+B Y
+A Z
+C X
+B X
+B X
+A Y
+C Z
+C X
+C X
+A Y
+C X
+C X
+C Z
+C X
+A Y
+B Y
+C Z
+A Z
+C Z
+A Z
+A Z
+A Y
+C X
+C X
+C X
+A Y
+A Y
+B Y
+B Z
+A Z
+C X
+C Z
+C X
+C Z
+B X
+C X
+C X
+B X
+C Z
+C X
+B Y
+B X
+C Z
+A Z
+C Z
+B Y
+C Z
+C Z
+B X
+A Y
+B Y
+A Z
+B Y
+C X
+C X
+A Z
+C Z
+C X
+C Z
+C X
+A Z
+C X
+A Z
+C X
+A Y
+A Z
+C X
+C Z
+B Y
+C Z
+A Z
+C Y
+B Z
+B Y
+A Z
+C Z
+A X
+A Z
+C Z
+C X
+C X
+A Y
+C Z
+C X
+C Z
+C Z
+C Z
+B Y
+C Z
+C X
+C Z
+B Y
+C Z
+B Y
+C Z
+C Z
+C Z
+C Z
+C Z
+B Y
+C Z
+B Y
+A Y
+C X
+B Y
+A Y
+C X
+A Z
+A Y
+C Z
+B Y
+C Z
+C X
+A Y
+B Y
+C X
+C X
+C X
+A Y
+A Z
+B X
+B X
+B X
+B Y
+C Z
+B Y
+C Z
+C Z
+B Y
+A X
+C X
+A Y
+C Z
+B Y
+B Y
+C Z
+C Z
+C X
+C Z
+C Z
+B Y
+C Z
+C X
+A Y
+A Z
+C X
+B Z
+C X
+B Y
+C Z
+C X
+A Y
+A Z
+C Z
+C X
+C Z
+C X
+C X
+C X
+C X
+C Z
+C X
+B Y
+A Y
+C X
+C Z
+A Z
+B Y
+C Z
+C X
+C Z
+B Y
+A Z
+A Y
+A Y
+B Y
+B Y
+A Z
+B X
+A Y
+C X
+C X
+A Y
+C X
+A Y
+B Y
+C Z
+A X
+B X
+A Y
+A Z
+C Z
+B X
+C Z
+B Y
+C X
+B Y
+C Z
+A Z
+A Y
+C X
+C Z
+B X
+B Y
+C Z
+C Z
+A Z
+C Z
+B Z
+C X
+C X
+C Z
+C Z
+C Z
+C X
+C X
+C Z
+B Y
+C Z
+B Z
+C X
+A Y
+C Z
+B Y
+C X
+A Y
+C Z
+B X
+C Z
+A Z
+C Z
+C X
+A Y
+A Y
+A Y
+C Z
+C Z
+A Y
+A X
+C Z
+C Z
+C X
+C Z
+A Z
+A Z
+C Z
+C X
+C Z
+B Y
+A Y
+B Z
+B Y
+C X
+C Z
+C X
+B X
+B Y
+C X
+C X
+C X
+A Z
+A Y
+C X
+C Z
+C X
+B Y
+C Z
+B X
+C Z
+B Y
+A Z
+C X
+B Y
+C X
+B X
+A Z
+C X
+B Y
+A Y
+C Z
+C X
+A Y
+C X
+B Y
+B X
+C Z
+C X
+C X
+C Z
+C X
+C X
+A Y
+A X
+C Z
+C Z
+C Z
+B Y
+C Z
+A Z
+B X
+C Z
+C X
+C X
+A Y
+A Z
+B Y
+B Y
+C Z
+C Z
+A Y
+A Z
+A Z
+C Z
+B Y
+B Y
+C Z
+B Y
+C X
+C X
+C Z
+A Z
+C X
+C X
+B Y
+B Y
+C Z
+B Y
+C Z
+C Z
+C Z
+C Z
+C X
+C Z
+B Y
+C Z
+C Z
+B X
+C Z
+C Z
+C X
+B Y
+C Z
+A Z
+A Z
+A Z
+C X
+B Y
+C Z
+A Y
+B X
+C X
+C X
+A X
+A Y
+B X
+C Z
+C X
+C Z
+C Z
+B Y
+C Z
+C Z
+B Z
+C Z
+C Z
+B X
+A Y
+C X
+A Z
+B Y
+A Z
+C X
+B X
+B X
+C Z
+A X
+B Z
+A Z
+B Y
+C X
+C Z
+B Z
+C X
+B X
+C Z
+A Z
+B X
+C Z
+C Z
+A Z
+A Y
+C Z
+C Z
+B X
+A Z
+C Z
+B Y
+B Y
+C Z
+B Y
+C Z
+C Z
+C Z
+C Z
+C Z
+C Z
+C Z
+C X
+A Y
+C Z
+C Z
+C X
+C Z
+B Y
+B X
+B Y
+A Z
+C Z
+B Y
+B X
+C Z
+B X
+C Y
+C X
+B Y
+C Z
+B Y
+A Z
+B Y
+C X
+C Z
+B X
+C Z
+A Y
+C Z
+B X
+A Z
+A Y
+B Y
+C Z
+A Y
+B Y
+C X
+A Z
+A Y
+C Z
+C Z
+A Y
+B X
+C X
+B Y
+A Y
+C X
+B X
+C X
+C Z
+C Z
+B Y
+A Z
+B Y
+A Z
+A Y
+A Z
+B X
+A Y
+C X
+B Y
+C Z
+C Z
+A Z
+C Z
+C Z
+C X
+C Z
+C Z
+B Y
+A Z
+C X
+A Y
+C Z
+A X
+A Z
+C Z
+B Y
+C X
+C Y
+A Y
+B X
+B Y
+C Z
+C Z
+B X
+B X
+C Y
+B Y
+B X
+C X
+C Z
+A Z
+C Z
+A Z
+C Z
+C Z
+A Z
+B X
+C Z
+C X
+C Z
+B Y
+B X
+A Z
+C Z
+B X
+C Z
+B Z
+C Z
+B Y
+B Y
+C Z
+B Y
+A Y
+A Z
+A Z
+C X
+A X
+C X
+C Z
+C Z
+A Y
+C Z
+C Z
+C Z
+A Y
+B X
+C Z
+C X
+B X
+C X
+C X
+B Y
+C Z
+B X
+C X
+B Y
+A Y
+C Z
+C X
+C X
+A Z
+B Y
+C Z
+B Y
+C Z
+B Z
+B Y
+B Y
+A Y
+B Y
+B Y
+A X
+A Y
+C Z
+C X
+B X
+C Z
+C X
+C X
+B Y
+C Z
+C Z
+B Y
+A Y
+B Y
+C Z
+C X
+C Z
+C Z
+C X
+A Y
+A Y
+C Z
+A Y
+C X
+C Z
+A Z
+A Z
+C Z
+B Y
+A X
+A X
+B X
+A Z
+C X
+C X
+C X
+C X
+A Z
+A Z
+C X
+B X
+B Y
+C X
+B Y
+B Z
+A Z
+A Y
+C X
+B Y
+B Y
+C Z
+B X
+B X
+C Z
+B Y
+C Z
+C Z
+B Y
+C Z
+C X
+C Z
+B Y
+C X
+C Z
+C Z
+C X
+B X
+C Z
+C X
+C X
+C Y
+C Z
+B Y
+C X
+C X
+A Y
+C X
+C X
+C Z
+C X
+C Z
+C Z
+C Z
+A X
+C Z
+C Y
+C Z
+C Z
+C Z
+C Z
+A X
+C Z
+B X
+C Z
+C X
+B Y
+C X
+A Z
+C Z
+C X
+B Y
+B Y
+A Z
+A Y
+C X
+A Z
+C Z
+C Z
+A Y
+A Z
+A X
+C Z
+A Z
+C Z
+C Z
+C Z
+A Z
+A Y
+A Z
+A Z
+A Y
+A Y
+C X
+A Y
+A Y
+C Z
+C Z
+C Z
+B X
+C X
+C Z
+B X
+C Z
+C Z
+C Z
+C Z
+C Z
+B Y
+C Z
+B Y
+C Z
+C X
+A Z
+C Z
+B X
+B Y
+C X
+B Y
+C X
+C X
+A Y
+C Z
+C X
+C X
+C Z
+C X
+C X
+C Z
+B Y
+B X
+C X
+B X
+B Y
+C X
+A Z
+B Y
+A Z
+B Y
+A Z
+A Y
+C Z
+C Z
+C X
+B Y
+A Y
+A Y
+C X
+B Y
+C X
+A Z
+A Z
+C X
+A X
+C X
+A Z
+C X
+C Z
+C X
+A Y
+C X
+B Y
+B Y
+C X
+A Z
+C Z
+C Z
+B X
+C Z
+C Z
+A Y
+C Z
+B Y
+A Z
+A X
+C Z
+C X
+B Y
+A Z
+C X
+B X
+A Z
+A Z
+C Z
+A Z
+C Z
+C Z
+A X
+C X
+A Z
+C X
+A Y
+B Y
+C Z
+B Y
+B X
+C Z
+A X
+B Z
+A Z
+A Z
+C Z
+A Z
+C Z
+A Z
+C X
+C X
+C X
+C X
+A Z
+C Z
+C X
+B Y
+A Z
+B Y
+A Y
+C Z
+A Z
+C X
+C Z
+B Y
+C X
+A Y
+B X
+A Y
+B X
+B Y
+C Z
+A Y
+B Y
+A Y
+B Y
+C Z
+C X
+C X
+C X
+C Z
+B Y
+C Z
+B X
+C X
+A Y
+A X
+B Y
+A Z
+C Z
+A Y
+A Z
+C X
+B Y
+A Z
+C Z
+C X
+C Y
+C X
+A Z
+A Y
+C X
+A Y
+C X
+C X
+A Z
+B Y
+C Z
+C X
+B X
+B Y
+A Z
+A Z
+B X
+B Y
+C X
+B Y
+C Z
+B Y
+C Y
+B Y
+B X
+B Y
+A Y
+B Y
+C Z
+B X
+B Y
+C Z
+A Z
+C Z
+B X
+A Y
+B X
+C Z
+B Y
+A Y
+C Z
+C Z
+C Y
+C Z
+A Y
+C X
+A Y
+C Z
+C Z
+C Z
+C Z
+C Z
+C X
+C Z
+C Z
+B Y
+C X
+C Z
+B X
+C X
+C Z
+C X
+A Z
+C X
+C X
+C Z
+C X
+C X
+C Z
+A Z
+B X
+B Y
+C Z
+A Z
+C X
+B X
+B Y
+C Z
+C Z
+A Y
+C X
+C Z
+C X
+C Z
+B Y
+C X
+C Z
+C X
+C X
+C Z
+C X
+B X
+C X
+C Z
+A Y
+A Y
+A Y
+C Z
+C Z
+B X
+C X
+A Z
+C Z
+C X
+C Z
+B X
+C Z
+B Z
+C X
+A Y
+C Z
+A Y
+C X
+B Y
+B Y
+A Z
+C Z
+C Z
+C Z
+A Z
+C X
+A Y
+C Z
+A Y
+C Z
+A Z
+A Z
+B Y
+C Z
+A Z
+C X
+A Y
+C Z
+C Z
+C X
+C X
+C X
+A X
+B Z
+C Z
+C X
+A Y
+A Z
+C Z
+B X
+B Y
+C X
+C Z
+B X
+B Y
+C X
+B X
+C Z
+C X
+C X
+C X
+C X
+A Y
+A Z
+A Y
+B Y
+C Z
+B Y
+B Y
+C Z
+A X
+C Z
+B X
+C Z
+C Z
+A Z
+B Y
+C Z
+C Z
+A Y
+A Z
+A Z
+A Z
+B X
+C X
+C X
+B Y
+C Z
+C X
+B Y
+A Y
+C X
+C Z
+C Z
+C X
+C Y
+A Y
+A Z
+C X
+C X
+A Z
+B X
+C Z
+A X
+C Z
+C X
+C Z
+A X
+A Z
+C X
+B Y
+C Z
+C Z
+B X
+A Y
+B Y
+C Z
+C Z
+A Z
+A Y
+C Z
+C Z
+A X
+B Y
+C Z
+C Z
+B Y
+C X
+C Z
+B X
+B Y
+A Z
+C Z
+C X
+C X
+C Z
+B Z
+B Y
+C Z
+C X
+A Y
+C X
+A Y
+A Z
+B Y
+B X
+C Z
+A Z
+C Z
+C Z
+C Z
+A Y
+B Y
+A Z
+B Y
+C Z
+C X
+B Y
+C Z
+A Y
+C Z
+A Z
+C Z
+C Z
+C Z
+A Z
+C X
+B Y
+C Z
+A Z
+C Z
+C Z
+A Z
+C Z
+C X
+B Z
+C Z
+C Z
+A Z
+C Z
+C Z
+B Y
+B X
+C Z
+C Z
+B Y
+A Y
+C Z
+A Z
+A Z
+C Z
+C X
+C X
+B X
+C X
+A Y
+B X
+A Y
+C Z
+C X
+B Y
+C Z
+C X
+C X
+C X
+B X
+B Z
+C Z
+B Y
+C X
+A Z
+C Z
+C Z
+A Z
+A Z
+C Z
+C Z
+A Z
+A Z
+A Z
+C Z
+A Z
+C Y
+A Z
+C Z
+C Z
+C X
+C X
+C Z
+C Z
+A Z
+C Z
+A Z
+C X
+C X
+C X
+A Y
+A Z
+A Z
+A Y
+B X
+C Z
+C Z
+B X
+C Z
+C X
+B Y
+C Z
+C X
+C X
+B Y
+B Y
+A Y
+A Z
+B X
+C X
+B Y
+B Y
+B Y
+C Z
+C X
+C X
+A Y
+B Z
+A Z
+A Z
+B X
+C X
+A Y
+C X
+C Z
+C X
+A Y
+A Z
+C Z
+A Z
+C Z
+C X
+C X
+A Z
+B X
+B X
+B Y
+C Z
+C Z
+C X
+C X
+C X
+B Y
+C Z
+C X
+B X
+C Z
+C X
+B X
+A Y
+B Y
+C Z
+A Z
+A Y
+C Z
+A Y
+A Y
+C Z
+B Y
+C Z
+B Z
+C Z
+A Z
+C X
+C X
+C Z
+B X
+C X
+B Y
+C Z
+B X
+C Z
+C X
+B X
+B Y
+B Z
+B X
+A Y
+C X
+C Z
+C Z
+A Y
+B X
+A Y
+C X
+C Z
+B Y
+C Z
+C Z
+C Z
+A Z
+A Z
+A Y
+C Z
+B Y
+C Z
+C X
+B Y
+C Z
+C Z
+A X
+C X
+B Y
+A Z
+C Z
+C X
+A Z
+A Y
+C Z
+C Z
+B X
+C Z
+A Z
+A Y
+C X
+A Y
+C Z
+C X
+C X
+C X
+B Y
+C X
+A Y
+C X
+B Y
+B X
+A Y
+B X
+A Y
+B Z
+C Z
+A Z
+B Y
+B X
+C Z
+C Z
+C X
+B Y
+A Z
+A Z
+A Y
+A Y
+C Z
+A Z
+A Z
+B Y
+C X
+C Z
+C Z
+C Z
+A Y
+A Z