Browse Source

Completed Day 1

A bit behind! :o
Tyler Hallada 5 years ago
commit
4b4ba0602d
7 changed files with 1021 additions and 0 deletions
  1. 2 0
      .gitignore
  2. 4 0
      Cargo.lock
  3. 7 0
      Cargo.toml
  4. 968 0
      inputs/1.txt
  5. 3 0
      inputs/1_test.txt
  6. 31 0
      src/day1.rs
  7. 6 0
      src/main.rs

+ 2 - 0
.gitignore

@@ -0,0 +1,2 @@
1
+/target
2
+**/*.rs.bk

+ 4 - 0
Cargo.lock

@@ -0,0 +1,4 @@
1
+[[package]]
2
+name = "advent-of-code-2018"
3
+version = "0.1.0"
4
+

+ 7 - 0
Cargo.toml

@@ -0,0 +1,7 @@
1
+[package]
2
+name = "advent-of-code-2018"
3
+version = "0.1.0"
4
+authors = ["Tyler Hallada <tyler@hallada.net>"]
5
+edition = "2018"
6
+
7
+[dependencies]

+ 968 - 0
inputs/1.txt

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

+ 3 - 0
inputs/1_test.txt

@@ -0,0 +1,3 @@
1
++5
2
+-5
3
++3

+ 31 - 0
src/day1.rs

@@ -0,0 +1,31 @@
1
+use std::error::Error;
2
+use std::fs::File;
3
+use std::io::{BufRead, BufReader};
4
+
5
+const INPUT: &str = "inputs/1.txt";
6
+
7
+pub fn solve() -> Result<i32, Box<Error>> {
8
+    calculate_resulting_frequency(INPUT)
9
+}
10
+
11
+fn calculate_resulting_frequency(filename: &str) -> Result<i32, Box<Error>> {
12
+    let mut freq: i32 = 0;
13
+    let file = File::open(filename)?;
14
+    for line in BufReader::new(file).lines() {
15
+        let adjustment: i32 = line?.parse()?;
16
+        freq += adjustment;
17
+    }
18
+    Ok(freq)
19
+}
20
+
21
+#[cfg(test)]
22
+mod tests {
23
+    use super::*;
24
+
25
+    const TEST_INPUT: &str = "inputs/1_test.txt";
26
+
27
+    #[test]
28
+    fn finds_resulting_frequency() {
29
+        assert_eq!(calculate_resulting_frequency(TEST_INPUT).unwrap(), 3);
30
+    }
31
+}

+ 6 - 0
src/main.rs

@@ -0,0 +1,6 @@
1
+mod day1;
2
+
3
+fn main() {
4
+    println!("Day 1:");
5
+    println!("{}", day1::solve().unwrap());
6
+}