]> fbox.kageds.com Git - adventofcode.git/blob - day2/day2.erl
Create 2.py
[adventofcode.git] / day2 / day2.erl
1 -module(day2).
2
3 -export ([solve/1, solve/2]).
4
5 solve(A) ->
6 D = [
7 {forward, 3},
8 {down, 4},
9 {forward, 3},
10 {up, 4},
11 {down, 4},
12 {down, 6},
13 {down, 3},
14 {down, 1},
15 {up, 7},
16 {down, 7},
17 {forward, 4},
18 {forward, 7},
19 {forward, 3},
20 {down, 2},
21 {forward, 5},
22 {down, 7},
23 {forward, 5},
24 {up, 9},
25 {down, 6},
26 {forward, 8},
27 {forward, 8},
28 {down, 8},
29 {forward, 7},
30 {down, 9},
31 {down, 4},
32 {down, 6},
33 {forward, 1},
34 {down, 2},
35 {down, 7},
36 {up, 4},
37 {forward, 8},
38 {down, 5},
39 {down, 7},
40 {down, 1},
41 {forward, 5},
42 {down, 1},
43 {up, 1},
44 {forward, 5},
45 {forward, 1},
46 {down, 1},
47 {forward, 3},
48 {up, 4},
49 {up, 4},
50 {up, 8},
51 {up, 1},
52 {forward, 7},
53 {down, 3},
54 {forward, 3},
55 {forward, 3},
56 {down, 3},
57 {down, 6},
58 {down, 7},
59 {forward, 4},
60 {down, 2},
61 {up, 3},
62 {forward, 5},
63 {forward, 1},
64 {down, 3},
65 {up, 3},
66 {up, 4},
67 {forward, 2},
68 {forward, 6},
69 {up, 1},
70 {down, 9},
71 {up, 3},
72 {forward, 5},
73 {forward, 2},
74 {up, 9},
75 {up, 2},
76 {down, 5},
77 {down, 5},
78 {forward, 7},
79 {forward, 1},
80 {down, 7},
81 {forward, 9},
82 {forward, 8},
83 {down, 7},
84 {forward, 5},
85 {forward, 4},
86 {down, 5},
87 {forward, 7},
88 {forward, 3},
89 {down, 2},
90 {forward, 2},
91 {forward, 2},
92 {down, 1},
93 {up, 8},
94 {down, 2},
95 {down, 2},
96 {forward, 6},
97 {up, 9},
98 {forward, 6},
99 {up, 6},
100 {forward, 5},
101 {forward, 5},
102 {down, 2},
103 {forward, 5},
104 {up, 5},
105 {forward, 5},
106 {up, 4},
107 {down, 1},
108 {up, 5},
109 {down, 2},
110 {forward, 3},
111 {down, 1},
112 {forward, 2},
113 {up, 4},
114 {down, 6},
115 {forward, 1},
116 {forward, 6},
117 {forward, 6},
118 {forward, 8},
119 {forward, 8},
120 {forward, 3},
121 {forward, 5},
122 {down, 8},
123 {up, 8},
124 {down, 6},
125 {down, 8},
126 {forward, 8},
127 {down, 6},
128 {forward, 4},
129 {down, 4},
130 {forward, 7},
131 {forward, 9},
132 {down, 6},
133 {up, 6},
134 {forward, 6},
135 {down, 9},
136 {up, 7},
137 {up, 9},
138 {down, 1},
139 {up, 5},
140 {forward, 2},
141 {forward, 3},
142 {up, 6},
143 {forward, 8},
144 {forward, 7},
145 {down, 4},
146 {up, 8},
147 {up, 2},
148 {down, 2},
149 {up, 3},
150 {down, 2},
151 {down, 8},
152 {forward, 9},
153 {up, 9},
154 {forward, 7},
155 {down, 9},
156 {forward, 4},
157 {forward, 3},
158 {forward, 2},
159 {down, 5},
160 {forward, 3},
161 {forward, 1},
162 {down, 2},
163 {forward, 3},
164 {down, 7},
165 {down, 8},
166 {forward, 9},
167 {down, 9},
168 {forward, 2},
169 {up, 5},
170 {up, 2},
171 {down, 8},
172 {down, 1},
173 {down, 7},
174 {forward, 6},
175 {down, 2},
176 {forward, 9},
177 {down, 6},
178 {down, 9},
179 {forward, 9},
180 {down, 2},
181 {up, 5},
182 {forward, 2},
183 {down, 7},
184 {down, 6},
185 {up, 1},
186 {forward, 9},
187 {up, 7},
188 {down, 1},
189 {forward, 5},
190 {down, 5},
191 {up, 2},
192 {forward, 6},
193 {forward, 2},
194 {up, 9},
195 {up, 7},
196 {down, 2},
197 {down, 1},
198 {forward, 6},
199 {down, 2},
200 {forward, 9},
201 {forward, 8},
202 {forward, 2},
203 {up, 1},
204 {down, 7},
205 {down, 7},
206 {forward, 5},
207 {forward, 9},
208 {down, 5},
209 {down, 5},
210 {down, 5},
211 {forward, 4},
212 {up, 4},
213 {down, 7},
214 {up, 6},
215 {forward, 3},
216 {up, 5},
217 {forward, 3},
218 {forward, 6},
219 {forward, 8},
220 {down, 6},
221 {forward, 4},
222 {forward, 5},
223 {up, 8},
224 {down, 9},
225 {down, 3},
226 {down, 8},
227 {forward, 8},
228 {forward, 1},
229 {down, 7},
230 {down, 2},
231 {forward, 8},
232 {forward, 7},
233 {up, 2},
234 {down, 9},
235 {forward, 2},
236 {down, 6},
237 {down, 7},
238 {up, 2},
239 {up, 7},
240 {down, 6},
241 {down, 8},
242 {down, 2},
243 {forward, 8},
244 {down, 6},
245 {up, 1},
246 {down, 6},
247 {down, 5},
248 {down, 8},
249 {down, 1},
250 {down, 4},
251 {down, 1},
252 {down, 8},
253 {up, 3},
254 {forward, 1},
255 {forward, 5},
256 {forward, 2},
257 {forward, 2},
258 {down, 5},
259 {down, 2},
260 {down, 8},
261 {up, 7},
262 {forward, 2},
263 {forward, 1},
264 {forward, 4},
265 {up, 4},
266 {down, 5},
267 {up, 4},
268 {down, 8},
269 {up, 5},
270 {down, 6},
271 {down, 8},
272 {down, 8},
273 {forward, 8},
274 {forward, 5},
275 {down, 1},
276 {down, 2},
277 {down, 4},
278 {forward, 5},
279 {up, 3},
280 {forward, 3},
281 {down, 7},
282 {forward, 9},
283 {down, 9},
284 {down, 5},
285 {forward, 5},
286 {down, 9},
287 {forward, 9},
288 {down, 5},
289 {up, 4},
290 {up, 9},
291 {forward, 1},
292 {forward, 6},
293 {forward, 9},
294 {forward, 2},
295 {up, 5},
296 {forward, 9},
297 {down, 8},
298 {up, 2},
299 {up, 9},
300 {forward, 1},
301 {down, 7},
302 {down, 4},
303 {down, 4},
304 {up, 3},
305 {forward, 6},
306 {down, 1},
307 {forward, 6},
308 {forward, 3},
309 {up, 3},
310 {forward, 1},
311 {down, 1},
312 {up, 8},
313 {up, 3},
314 {forward, 9},
315 {forward, 1},
316 {forward, 8},
317 {forward, 8},
318 {up, 7},
319 {forward, 2},
320 {forward, 9},
321 {down, 9},
322 {down, 2},
323 {down, 5},
324 {down, 1},
325 {forward, 9},
326 {forward, 9},
327 {up, 4},
328 {forward, 6},
329 {down, 3},
330 {forward, 2},
331 {forward, 5},
332 {up, 4},
333 {forward, 2},
334 {up, 1},
335 {up, 4},
336 {up, 3},
337 {up, 6},
338 {up, 6},
339 {down, 2},
340 {up, 7},
341 {down, 1},
342 {down, 3},
343 {forward, 3},
344 {up, 5},
345 {forward, 4},
346 {down, 5},
347 {forward, 9},
348 {down, 2},
349 {up, 5},
350 {forward, 9},
351 {down, 3},
352 {down, 5},
353 {forward, 3},
354 {forward, 7},
355 {forward, 9},
356 {up, 2},
357 {down, 6},
358 {up, 6},
359 {down, 8},
360 {forward, 8},
361 {down, 1},
362 {forward, 3},
363 {forward, 4},
364 {up, 6},
365 {up, 3},
366 {forward, 6},
367 {forward, 5},
368 {forward, 2},
369 {down, 7},
370 {down, 1},
371 {down, 5},
372 {forward, 6},
373 {down, 4},
374 {down, 2},
375 {forward, 7},
376 {up, 9},
377 {forward, 3},
378 {down, 2},
379 {up, 3},
380 {down, 3},
381 {down, 1},
382 {up, 5},
383 {down, 4},
384 {forward, 1},
385 {forward, 2},
386 {forward, 2},
387 {forward, 6},
388 {forward, 2},
389 {down, 2},
390 {down, 8},
391 {down, 1},
392 {down, 2},
393 {down, 7},
394 {up, 7},
395 {down, 7},
396 {forward, 7},
397 {forward, 7},
398 {down, 8},
399 {forward, 1},
400 {down, 7},
401 {down, 7},
402 {down, 8},
403 {up, 9},
404 {down, 4},
405 {up, 6},
406 {forward, 7},
407 {up, 2},
408 {down, 8},
409 {forward, 2},
410 {down, 8},
411 {forward, 4},
412 {down, 4},
413 {forward, 4},
414 {up, 1},
415 {down, 2},
416 {forward, 6},
417 {forward, 7},
418 {forward, 8},
419 {down, 2},
420 {forward, 5},
421 {forward, 1},
422 {up, 9},
423 {down, 8},
424 {down, 2},
425 {forward, 1},
426 {down, 8},
427 {forward, 2},
428 {up, 2},
429 {up, 3},
430 {up, 7},
431 {forward, 3},
432 {forward, 3},
433 {up, 3},
434 {up, 5},
435 {forward, 8},
436 {down, 6},
437 {forward, 6},
438 {down, 2},
439 {down, 7},
440 {forward, 3},
441 {forward, 6},
442 {down, 5},
443 {down, 6},
444 {up, 4},
445 {forward, 8},
446 {up, 8},
447 {down, 9},
448 {forward, 7},
449 {forward, 1},
450 {down, 6},
451 {up, 1},
452 {down, 7},
453 {forward, 4},
454 {forward, 8},
455 {down, 2},
456 {forward, 8},
457 {down, 3},
458 {down, 5},
459 {down, 5},
460 {forward, 8},
461 {down, 3},
462 {up, 8},
463 {down, 9},
464 {forward, 2},
465 {down, 9},
466 {forward, 4},
467 {up, 8},
468 {forward, 4},
469 {up, 1},
470 {forward, 8},
471 {forward, 2},
472 {forward, 5},
473 {down, 2},
474 {down, 6},
475 {up, 2},
476 {down, 8},
477 {forward, 9},
478 {forward, 5},
479 {forward, 6},
480 {forward, 4},
481 {down, 4},
482 {down, 6},
483 {up, 1},
484 {forward, 3},
485 {down, 6},
486 {forward, 6},
487 {forward, 1},
488 {forward, 6},
489 {forward, 9},
490 {up, 6},
491 {forward, 5},
492 {down, 4},
493 {forward, 5},
494 {down, 8},
495 {down, 7},
496 {forward, 7},
497 {up, 5},
498 {down, 6},
499 {forward, 4},
500 {forward, 6},
501 {forward, 5},
502 {up, 4},
503 {down, 3},
504 {forward, 1},
505 {down, 1},
506 {forward, 6},
507 {up, 1},
508 {up, 1},
509 {down, 7},
510 {forward, 5},
511 {forward, 1},
512 {down, 2},
513 {forward, 2},
514 {down, 3},
515 {down, 6},
516 {down, 5},
517 {down, 4},
518 {forward, 2},
519 {forward, 1},
520 {down, 7},
521 {forward, 9},
522 {up, 6},
523 {forward, 9},
524 {forward, 2},
525 {down, 1},
526 {forward, 9},
527 {forward, 4},
528 {down, 1},
529 {forward, 3},
530 {up, 9},
531 {down, 1},
532 {down, 3},
533 {down, 6},
534 {down, 9},
535 {forward, 3},
536 {down, 8},
537 {down, 3},
538 {forward, 5},
539 {forward, 1},
540 {forward, 5},
541 {forward, 2},
542 {up, 4},
543 {down, 6},
544 {up, 7},
545 {forward, 7},
546 {down, 9},
547 {forward, 6},
548 {down, 4},
549 {down, 1},
550 {up, 8},
551 {down, 4},
552 {forward, 7},
553 {forward, 5},
554 {down, 5},
555 {down, 2},
556 {down, 1},
557 {down, 4},
558 {up, 5},
559 {down, 8},
560 {forward, 1},
561 {forward, 2},
562 {down, 9},
563 {forward, 7},
564 {down, 8},
565 {forward, 5},
566 {forward, 7},
567 {forward, 2},
568 {down, 6},
569 {down, 5},
570 {down, 6},
571 {down, 7},
572 {forward, 2},
573 {up, 9},
574 {down, 3},
575 {forward, 1},
576 {up, 6},
577 {forward, 4},
578 {down, 3},
579 {up, 7},
580 {forward, 9},
581 {forward, 7},
582 {down, 4},
583 {up, 1},
584 {forward, 6},
585 {up, 4},
586 {down, 1},
587 {down, 4},
588 {down, 2},
589 {down, 5},
590 {down, 4},
591 {down, 7},
592 {forward, 2},
593 {down, 8},
594 {down, 8},
595 {forward, 9},
596 {forward, 3},
597 {down, 2},
598 {down, 2},
599 {forward, 2},
600 {down, 9},
601 {forward, 8},
602 {up, 8},
603 {down, 3},
604 {forward, 4},
605 {down, 9},
606 {up, 2},
607 {forward, 6},
608 {forward, 2},
609 {up, 6},
610 {up, 7},
611 {forward, 1},
612 {forward, 2},
613 {up, 2},
614 {down, 8},
615 {forward, 9},
616 {down, 7},
617 {forward, 1},
618 {down, 6},
619 {down, 8},
620 {forward, 2},
621 {down, 8},
622 {forward, 6},
623 {forward, 7},
624 {forward, 8},
625 {forward, 1},
626 {up, 8},
627 {down, 5},
628 {forward, 8},
629 {down, 3},
630 {down, 6},
631 {forward, 6},
632 {down, 4},
633 {down, 6},
634 {forward, 8},
635 {down, 3},
636 {down, 4},
637 {forward, 6},
638 {forward, 1},
639 {up, 1},
640 {up, 3},
641 {forward, 7},
642 {forward, 2},
643 {down, 1},
644 {down, 7},
645 {down, 3},
646 {down, 4},
647 {down, 3},
648 {forward, 2},
649 {forward, 4},
650 {down, 6},
651 {down, 2},
652 {forward, 3},
653 {down, 9},
654 {down, 5},
655 {down, 6},
656 {down, 7},
657 {down, 5},
658 {down, 3},
659 {forward, 5},
660 {forward, 6},
661 {down, 3},
662 {down, 1},
663 {up, 3},
664 {down, 8},
665 {down, 7},
666 {down, 5},
667 {up, 9},
668 {down, 8},
669 {down, 4},
670 {down, 2},
671 {forward, 4},
672 {forward, 9},
673 {forward, 1},
674 {forward, 7},
675 {down, 3},
676 {down, 4},
677 {up, 9},
678 {down, 6},
679 {forward, 9},
680 {down, 4},
681 {down, 2},
682 {down, 5},
683 {down, 3},
684 {forward, 2},
685 {forward, 9},
686 {forward, 3},
687 {down, 5},
688 {up, 1},
689 {down, 9},
690 {forward, 9},
691 {down, 7},
692 {forward, 6},
693 {down, 6},
694 {down, 9},
695 {down, 7},
696 {down, 8},
697 {down, 2},
698 {up, 3},
699 {forward, 6},
700 {forward, 3},
701 {up, 4},
702 {down, 6},
703 {down, 8},
704 {down, 2},
705 {down, 1},
706 {up, 9},
707 {down, 1},
708 {down, 8},
709 {forward, 5},
710 {forward, 4},
711 {forward, 9},
712 {forward, 3},
713 {forward, 9},
714 {down, 5},
715 {up, 9},
716 {down, 6},
717 {forward, 4},
718 {down, 6},
719 {forward, 4},
720 {forward, 9},
721 {down, 7},
722 {up, 9},
723 {up, 2},
724 {forward, 5},
725 {forward, 6},
726 {up, 2},
727 {forward, 8},
728 {down, 6},
729 {forward, 8},
730 {forward, 1},
731 {forward, 2},
732 {forward, 6},
733 {down, 3},
734 {up, 2},
735 {forward, 7},
736 {up, 8},
737 {forward, 2},
738 {forward, 5},
739 {forward, 4},
740 {up, 6},
741 {forward, 9},
742 {up, 8},
743 {down, 3},
744 {up, 7},
745 {up, 2},
746 {down, 2},
747 {up, 4},
748 {up, 5},
749 {forward, 5},
750 {down, 9},
751 {forward, 2},
752 {down, 1},
753 {down, 6},
754 {down, 4},
755 {down, 1},
756 {down, 1},
757 {forward, 4},
758 {forward, 7},
759 {down, 4},
760 {down, 2},
761 {forward, 7},
762 {down, 4},
763 {up, 1},
764 {up, 8},
765 {down, 6},
766 {down, 8},
767 {forward, 6},
768 {down, 8},
769 {up, 2},
770 {down, 7},
771 {forward, 5},
772 {forward, 8},
773 {down, 9},
774 {forward, 1},
775 {up, 7},
776 {down, 5},
777 {up, 1},
778 {up, 6},
779 {down, 3},
780 {down, 4},
781 {down, 9},
782 {down, 6},
783 {forward, 1},
784 {down, 1},
785 {forward, 4},
786 {down, 4},
787 {down, 8},
788 {up, 1},
789 {down, 7},
790 {forward, 1},
791 {down, 6},
792 {down, 4},
793 {down, 5},
794 {forward, 6},
795 {forward, 8},
796 {down, 5},
797 {down, 5},
798 {up, 3},
799 {forward, 8},
800 {down, 4},
801 {down, 3},
802 {up, 1},
803 {up, 8},
804 {forward, 1},
805 {down, 6},
806 {down, 2},
807 {down, 6},
808 {down, 1},
809 {forward, 9},
810 {down, 1},
811 {forward, 6},
812 {forward, 9},
813 {down, 5},
814 {up, 4},
815 {down, 5},
816 {down, 1},
817 {forward, 2},
818 {down, 2},
819 {forward, 9},
820 {down, 3},
821 {forward, 7},
822 {forward, 8},
823 {forward, 5},
824 {down, 7},
825 {down, 6},
826 {down, 8},
827 {forward, 7},
828 {up, 7},
829 {forward, 6},
830 {forward, 3},
831 {down, 2},
832 {forward, 9},
833 {forward, 4},
834 {down, 6},
835 {down, 6},
836 {up, 9},
837 {down, 1},
838 {forward, 5},
839 {forward, 2},
840 {forward, 2},
841 {forward, 2},
842 {down, 8},
843 {up, 1},
844 {down, 4},
845 {forward, 3},
846 {down, 3},
847 {up, 4},
848 {down, 6},
849 {forward, 2},
850 {forward, 8},
851 {forward, 9},
852 {forward, 3},
853 {down, 4},
854 {forward, 2},
855 {forward, 5},
856 {down, 5},
857 {up, 8},
858 {up, 9},
859 {up, 3},
860 {forward, 9},
861 {forward, 3},
862 {forward, 3},
863 {forward, 8},
864 {forward, 2},
865 {forward, 7},
866 {down, 8},
867 {down, 6},
868 {forward, 6},
869 {forward, 8},
870 {down, 1},
871 {forward, 3},
872 {down, 7},
873 {forward, 5},
874 {forward, 3},
875 {forward, 3},
876 {down, 3},
877 {down, 5},
878 {down, 2},
879 {down, 6},
880 {up, 2},
881 {up, 7},
882 {down, 9},
883 {forward, 6},
884 {down, 9},
885 {down, 8},
886 {up, 8},
887 {down, 1},
888 {forward, 9},
889 {down, 8},
890 {forward, 7},
891 {forward, 6},
892 {down, 5},
893 {down, 7},
894 {down, 4},
895 {forward, 7},
896 {down, 8},
897 {down, 9},
898 {down, 4},
899 {up, 8},
900 {forward, 2},
901 {up, 6},
902 {forward, 6},
903 {forward, 3},
904 {forward, 6},
905 {up, 9},
906 {forward, 1},
907 {down, 3},
908 {up, 6},
909 {down, 8},
910 {up, 4},
911 {up, 5},
912 {forward, 8},
913 {forward, 5},
914 {forward, 3},
915 {forward, 3},
916 {forward, 4},
917 {down, 4},
918 {forward, 2},
919 {up, 2},
920 {down, 7},
921 {down, 5},
922 {forward, 7},
923 {down, 8},
924 {forward, 3},
925 {up, 5},
926 {down, 4},
927 {down, 1},
928 {down, 5},
929 {forward, 6},
930 {forward, 8},
931 {forward, 6},
932 {down, 2},
933 {down, 7},
934 {forward, 6},
935 {forward, 2},
936 {forward, 7},
937 {down, 5},
938 {forward, 2},
939 {forward, 7},
940 {down, 9},
941 {down, 9},
942 {down, 4},
943 {down, 7},
944 {down, 3},
945 {forward, 1},
946 {up, 8},
947 {down, 7},
948 {forward, 2},
949 {forward, 4},
950 {up, 2},
951 {forward, 2},
952 {down, 2},
953 {up, 2},
954 {up, 9},
955 {forward, 1},
956 {down, 5},
957 {down, 1},
958 {forward, 8},
959 {up, 3},
960 {up, 4},
961 {down, 3},
962 {up, 2},
963 {down, 8},
964 {down, 6},
965 {down, 4},
966 {up, 7},
967 {forward, 4},
968 {down, 7},
969 {down, 4},
970 {up, 3},
971 {up, 8},
972 {down, 1},
973 {down, 7},
974 {forward, 1},
975 {down, 2},
976 {forward, 6},
977 {down, 9},
978 {forward, 3},
979 {down, 9},
980 {up, 5},
981 {up, 1},
982 {down, 4},
983 {forward, 1},
984 {down, 4},
985 {forward, 4},
986 {up, 4},
987 {forward, 7},
988 {down, 9},
989 {down, 2},
990 {down, 8},
991 {forward, 2},
992 {up, 3},
993 {forward, 2},
994 {down, 7},
995 {forward, 8},
996 {forward, 6},
997 {forward, 1},
998 {up, 9},
999 {forward, 7},
1000 {up, 4},
1001 {down, 4},
1002 {down, 3},
1003 {down, 7},
1004 {forward, 5},
1005 {forward, 3},
1006 {forward, 7}
1007 ],
1008
1009 solve(A, D).
1010
1011 solve(['1'], D) ->
1012 io:format("The solution to puzzle day2 is: ~p", [solve(1, D)]);
1013 solve(1, D) ->
1014 {X, Y} =
1015 lists:foldl(fun({Dir, Dis}, {X, Y}) ->
1016 case Dir of
1017 'up' -> {X, Y - Dis};
1018 'down' -> {X, Y + Dis};
1019 'forward' -> {X + Dis, Y}
1020 end
1021 end,
1022 {0, 0},
1023 D),
1024 X * Y;
1025 solve(['2'], D) ->
1026 io:format("The solution to puzzle day2 is: ~p", [solve(2, D)]);
1027 solve(2, D) ->
1028 {X, Y, _} =
1029 lists:foldl(fun({Dir, Dis}, {X, Y, Aim}) ->
1030 case Dir of
1031 'up' -> {X, Y, Aim - Dis};
1032 'down' -> {X, Y, Aim + Dis};
1033 'forward' -> {X + Dis, Y + (Dis * Aim), Aim}
1034 end
1035 end,
1036 {0,0,0},
1037 D),
1038 X * Y.
1039