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