Browse Source

Add solutions to day 3

Olyol95 5 years ago
parent
commit
f768af13d2
4 changed files with 1974 additions and 0 deletions
  1. 1902 0
      input/day_3
  2. 64 0
      src/day3.rs
  3. 2 0
      src/main.rs
  4. 6 0
      test/day_3

+ 1902 - 0
input/day_3

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

+ 64 - 0
src/day3.rs

@@ -0,0 +1,64 @@
+use std::process::exit;
+use std::error::Error;
+
+pub fn main( input: &str ) {
+    part_one( &input );
+    part_two( &input );
+}
+
+fn is_valid( triangle: &(i32, i32, i32) ) -> bool {
+    triangle.0 + triangle.1 > triangle.2 &&
+        triangle.1 + triangle.2 > triangle.0 &&
+        triangle.0 + triangle.2 > triangle.1
+}
+
+fn part_one( input: &str ) {
+    let mut valid_triangles = 0;
+    for line in input.trim().split( "\n" ) {
+        let triangle: Vec<i32> = line.split_whitespace().map( 
+            |s| match s.parse::<i32>() {
+                Ok ( x ) => { x },
+                Err( f ) => { 
+                    println!( 
+                        "Encountered illegal character {} in line {}: {}", 
+                        s, line, f.description() );
+                    exit( 1 );
+                },
+            }
+        ).collect();
+        if is_valid( &(triangle[0], triangle[1], triangle[2]) ) {
+            valid_triangles += 1;
+        }
+    }
+    println!( "{} valid triangles", valid_triangles );
+}
+
+fn part_two( input: &str ) {
+    let mut valid_triangles = 0;
+    let mut rows: Vec<i32> = Vec::new();
+    for line in input.trim().split( "\n" ) {
+        let mut row: Vec<i32> = line.split_whitespace().map(
+            |s| match s.parse::<i32>() {
+                Ok ( x ) => { x },
+                Err( f ) => { 
+                    println!( 
+                        "Encountered illegal character {}: {}", 
+                        s, f.description() );
+                    exit( 1 );
+                },
+            }
+        ).collect();
+        rows.append( &mut row );
+    }
+    let mut i = 0;
+    while i < rows.len() - 6 {
+        if is_valid( &(rows[i], rows[i + 3], rows[i + 6]) ) {
+            valid_triangles += 1;
+        }
+        i += 1;
+        if i % 3 == 0 {
+            i += 6;
+        }
+    }
+    println!( "{} valid triangles", valid_triangles );
+}

+ 2 - 0
src/main.rs

@@ -10,6 +10,7 @@ use std::process::exit;
 
 mod day1;
 mod day2;
+mod day3;
 
 fn main() {
     let args: Vec<String> = env::args().collect();
@@ -50,6 +51,7 @@ fn parse_opt( args: &Vec<String> ) {
             match x.as_ref() {
                 "1"  => day1::main( &input ),
                 "2"  => day2::main( &input ),
+                "3"  => day3::main( &input ),
                 _    => { 
                     println!( "Unknown day number {}", x );
                     exit( 1 );

+ 6 - 0
test/day_3

@@ -0,0 +1,6 @@
+101 301 501
+102 302 502
+103 303 503
+201 401 601
+202 402 602
+203 403 603