summaryrefslogtreecommitdiffstats
path: root/2015/rs/code/six/src
diff options
context:
space:
mode:
Diffstat (limited to '2015/rs/code/six/src')
-rw-r--r--2015/rs/code/six/src/input.txt300
-rw-r--r--2015/rs/code/six/src/main.rs57
2 files changed, 357 insertions, 0 deletions
diff --git a/2015/rs/code/six/src/input.txt b/2015/rs/code/six/src/input.txt
new file mode 100644
index 0000000..c4357c6
--- /dev/null
+++ b/2015/rs/code/six/src/input.txt
@@ -0,0 +1,300 @@
+turn on 887,9 through 959,629
+turn on 454,398 through 844,448
+turn off 539,243 through 559,965
+turn off 370,819 through 676,868
+turn off 145,40 through 370,997
+turn off 301,3 through 808,453
+turn on 351,678 through 951,908
+toggle 720,196 through 897,994
+toggle 831,394 through 904,860
+toggle 753,664 through 970,926
+turn off 150,300 through 213,740
+turn on 141,242 through 932,871
+toggle 294,259 through 474,326
+toggle 678,333 through 752,957
+toggle 393,804 through 510,976
+turn off 6,964 through 411,976
+turn off 33,572 through 978,590
+turn on 579,693 through 650,978
+turn on 150,20 through 652,719
+turn off 782,143 through 808,802
+turn off 240,377 through 761,468
+turn off 899,828 through 958,967
+turn on 613,565 through 952,659
+turn on 295,36 through 964,978
+toggle 846,296 through 969,528
+turn off 211,254 through 529,491
+turn off 231,594 through 406,794
+turn off 169,791 through 758,942
+turn on 955,440 through 980,477
+toggle 944,498 through 995,928
+turn on 519,391 through 605,718
+toggle 521,303 through 617,366
+turn off 524,349 through 694,791
+toggle 391,87 through 499,792
+toggle 562,527 through 668,935
+turn off 68,358 through 857,453
+toggle 815,811 through 889,828
+turn off 666,61 through 768,87
+turn on 27,501 through 921,952
+turn on 953,102 through 983,471
+turn on 277,552 through 451,723
+turn off 64,253 through 655,960
+turn on 47,485 through 734,977
+turn off 59,119 through 699,734
+toggle 407,898 through 493,955
+toggle 912,966 through 949,991
+turn on 479,990 through 895,990
+toggle 390,589 through 869,766
+toggle 593,903 through 926,943
+toggle 358,439 through 870,528
+turn off 649,410 through 652,875
+turn on 629,834 through 712,895
+toggle 254,555 through 770,901
+toggle 641,832 through 947,850
+turn on 268,448 through 743,777
+turn off 512,123 through 625,874
+turn off 498,262 through 930,811
+turn off 835,158 through 886,242
+toggle 546,310 through 607,773
+turn on 501,505 through 896,909
+turn off 666,796 through 817,924
+toggle 987,789 through 993,809
+toggle 745,8 through 860,693
+toggle 181,983 through 731,988
+turn on 826,174 through 924,883
+turn on 239,228 through 843,993
+turn on 205,613 through 891,667
+toggle 867,873 through 984,896
+turn on 628,251 through 677,681
+toggle 276,956 through 631,964
+turn on 78,358 through 974,713
+turn on 521,360 through 773,597
+turn off 963,52 through 979,502
+turn on 117,151 through 934,622
+toggle 237,91 through 528,164
+turn on 944,269 through 975,453
+toggle 979,460 through 988,964
+turn off 440,254 through 681,507
+toggle 347,100 through 896,785
+turn off 329,592 through 369,985
+turn on 931,960 through 979,985
+toggle 703,3 through 776,36
+toggle 798,120 through 908,550
+turn off 186,605 through 914,709
+turn off 921,725 through 979,956
+toggle 167,34 through 735,249
+turn on 726,781 through 987,936
+toggle 720,336 through 847,756
+turn on 171,630 through 656,769
+turn off 417,276 through 751,500
+toggle 559,485 through 584,534
+turn on 568,629 through 690,873
+toggle 248,712 through 277,988
+toggle 345,594 through 812,723
+turn off 800,108 through 834,618
+turn off 967,439 through 986,869
+turn on 842,209 through 955,529
+turn on 132,653 through 357,696
+turn on 817,38 through 973,662
+turn off 569,816 through 721,861
+turn on 568,429 through 945,724
+turn on 77,458 through 844,685
+turn off 138,78 through 498,851
+turn on 136,21 through 252,986
+turn off 2,460 through 863,472
+turn on 172,81 through 839,332
+turn on 123,216 through 703,384
+turn off 879,644 through 944,887
+toggle 227,491 through 504,793
+toggle 580,418 through 741,479
+toggle 65,276 through 414,299
+toggle 482,486 through 838,931
+turn off 557,768 through 950,927
+turn off 615,617 through 955,864
+turn on 859,886 through 923,919
+turn on 391,330 through 499,971
+toggle 521,835 through 613,847
+turn on 822,787 through 989,847
+turn on 192,142 through 357,846
+turn off 564,945 through 985,945
+turn off 479,361 through 703,799
+toggle 56,481 through 489,978
+turn off 632,991 through 774,998
+toggle 723,526 through 945,792
+turn on 344,149 through 441,640
+toggle 568,927 through 624,952
+turn on 621,784 through 970,788
+toggle 665,783 through 795,981
+toggle 386,610 through 817,730
+toggle 440,399 through 734,417
+toggle 939,201 through 978,803
+turn off 395,883 through 554,929
+turn on 340,309 through 637,561
+turn off 875,147 through 946,481
+turn off 945,837 through 957,922
+turn off 429,982 through 691,991
+toggle 227,137 through 439,822
+toggle 4,848 through 7,932
+turn off 545,146 through 756,943
+turn on 763,863 through 937,994
+turn on 232,94 through 404,502
+turn off 742,254 through 930,512
+turn on 91,931 through 101,942
+toggle 585,106 through 651,425
+turn on 506,700 through 567,960
+turn off 548,44 through 718,352
+turn off 194,827 through 673,859
+turn off 6,645 through 509,764
+turn off 13,230 through 821,361
+turn on 734,629 through 919,631
+toggle 788,552 through 957,972
+toggle 244,747 through 849,773
+turn off 162,553 through 276,887
+turn off 569,577 through 587,604
+turn off 799,482 through 854,956
+turn on 744,535 through 909,802
+toggle 330,641 through 396,986
+turn off 927,458 through 966,564
+toggle 984,486 through 986,913
+toggle 519,682 through 632,708
+turn on 984,977 through 989,986
+toggle 766,423 through 934,495
+turn on 17,509 through 947,718
+turn on 413,783 through 631,903
+turn on 482,370 through 493,688
+turn on 433,859 through 628,938
+turn off 769,549 through 945,810
+turn on 178,853 through 539,941
+turn off 203,251 through 692,433
+turn off 525,638 through 955,794
+turn on 169,70 through 764,939
+toggle 59,352 through 896,404
+toggle 143,245 through 707,320
+turn off 103,35 through 160,949
+toggle 496,24 through 669,507
+turn off 581,847 through 847,903
+turn on 689,153 through 733,562
+turn on 821,487 through 839,699
+turn on 837,627 through 978,723
+toggle 96,748 through 973,753
+toggle 99,818 through 609,995
+turn on 731,193 through 756,509
+turn off 622,55 through 813,365
+turn on 456,490 through 576,548
+turn on 48,421 through 163,674
+turn off 853,861 through 924,964
+turn off 59,963 through 556,987
+turn on 458,710 through 688,847
+toggle 12,484 through 878,562
+turn off 241,964 through 799,983
+turn off 434,299 through 845,772
+toggle 896,725 through 956,847
+turn on 740,289 through 784,345
+turn off 395,840 through 822,845
+turn on 955,224 through 996,953
+turn off 710,186 through 957,722
+turn off 485,949 through 869,985
+turn on 848,209 through 975,376
+toggle 221,241 through 906,384
+turn on 588,49 through 927,496
+turn on 273,332 through 735,725
+turn on 505,962 through 895,962
+toggle 820,112 through 923,143
+turn on 919,792 through 978,982
+toggle 489,461 through 910,737
+turn off 202,642 through 638,940
+turn off 708,953 through 970,960
+toggle 437,291 through 546,381
+turn on 409,358 through 837,479
+turn off 756,279 through 870,943
+turn off 154,657 through 375,703
+turn off 524,622 through 995,779
+toggle 514,221 through 651,850
+toggle 808,464 through 886,646
+toggle 483,537 through 739,840
+toggle 654,769 through 831,825
+turn off 326,37 through 631,69
+turn off 590,570 through 926,656
+turn off 881,913 through 911,998
+turn on 996,102 through 998,616
+turn off 677,503 through 828,563
+turn on 860,251 through 877,441
+turn off 964,100 through 982,377
+toggle 888,403 through 961,597
+turn off 632,240 through 938,968
+toggle 731,176 through 932,413
+turn on 5,498 through 203,835
+turn on 819,352 through 929,855
+toggle 393,813 through 832,816
+toggle 725,689 through 967,888
+turn on 968,950 through 969,983
+turn off 152,628 through 582,896
+turn off 165,844 through 459,935
+turn off 882,741 through 974,786
+turn off 283,179 through 731,899
+toggle 197,366 through 682,445
+turn on 106,309 through 120,813
+toggle 950,387 through 967,782
+turn off 274,603 through 383,759
+turn off 155,665 through 284,787
+toggle 551,871 through 860,962
+turn off 30,826 through 598,892
+toggle 76,552 through 977,888
+turn on 938,180 through 994,997
+toggle 62,381 through 993,656
+toggle 625,861 through 921,941
+turn on 685,311 through 872,521
+turn on 124,934 through 530,962
+turn on 606,379 through 961,867
+turn off 792,735 through 946,783
+turn on 417,480 through 860,598
+toggle 178,91 through 481,887
+turn off 23,935 through 833,962
+toggle 317,14 through 793,425
+turn on 986,89 through 999,613
+turn off 359,201 through 560,554
+turn off 729,494 through 942,626
+turn on 204,143 through 876,610
+toggle 474,97 through 636,542
+turn off 902,924 through 976,973
+turn off 389,442 through 824,638
+turn off 622,863 through 798,863
+turn on 840,622 through 978,920
+toggle 567,374 through 925,439
+turn off 643,319 through 935,662
+toggle 185,42 through 294,810
+turn on 47,124 through 598,880
+toggle 828,303 through 979,770
+turn off 174,272 through 280,311
+turn off 540,50 through 880,212
+turn on 141,994 through 221,998
+turn on 476,695 through 483,901
+turn on 960,216 through 972,502
+toggle 752,335 through 957,733
+turn off 419,713 through 537,998
+toggle 772,846 through 994,888
+turn on 881,159 through 902,312
+turn off 537,651 through 641,816
+toggle 561,947 through 638,965
+turn on 368,458 through 437,612
+turn on 290,149 through 705,919
+turn on 711,918 through 974,945
+toggle 916,242 through 926,786
+toggle 522,272 through 773,314
+turn on 432,897 through 440,954
+turn off 132,169 through 775,380
+toggle 52,205 through 693,747
+toggle 926,309 through 976,669
+turn off 838,342 through 938,444
+turn on 144,431 through 260,951
+toggle 780,318 through 975,495
+turn off 185,412 through 796,541
+turn on 879,548 through 892,860
+turn on 294,132 through 460,338
+turn on 823,500 through 899,529
+turn off 225,603 through 483,920
+toggle 717,493 through 930,875
+toggle 534,948 through 599,968
+turn on 522,730 through 968,950
+turn off 102,229 through 674,529
diff --git a/2015/rs/code/six/src/main.rs b/2015/rs/code/six/src/main.rs
new file mode 100644
index 0000000..6342cd9
--- /dev/null
+++ b/2015/rs/code/six/src/main.rs
@@ -0,0 +1,57 @@
+static INPUT: &'static str = include_str!("input.txt");
+
+#[derive(Debug)]
+enum LightCommand {
+ TurnOff,
+ TurnOn,
+ Toggle
+}
+
+fn main() {
+ let valueified = INPUT.split('\n').filter(|s| !s.is_empty()).map(|s| {
+ let mut rsplit = s.rsplit(' ');
+ let mut cd = rsplit.next().unwrap().split(',').map(str::parse::<usize>).map(Result::unwrap);
+ let mut ab = rsplit.nth(1).unwrap().split(',').map(str::parse::<usize>).map(Result::unwrap);
+ let ab = (ab.next().unwrap(), ab.next().unwrap());
+ let cd = (cd.next().unwrap(), cd.next().unwrap());
+ match &s[0..7] {
+ "turn on" => (LightCommand::TurnOn, ab,cd),
+ "toggle " => (LightCommand::Toggle, ab,cd),
+ "turn of" => (LightCommand::TurnOff, ab,cd),
+ _ => unreachable!()
+ }
+ });
+
+ let mut lights = vec![false; 1_000_000];
+ for (cmd, (x1, y1), (x2, y2)) in valueified.clone() {
+ use LightCommand::*;
+ for x in x1..=x2 {
+ for y in y1..=y2 {
+ match cmd {
+ TurnOff => { lights[x + y * 1000] = false; },
+ TurnOn => { lights[x + y * 1000] = true; },
+ Toggle => { lights[x + y * 1000] = !lights[x + y * 1000]; }
+ }
+ }
+ }
+ }
+ let light_count = lights.into_iter().filter(|a| *a).count();
+ println!("Lit light count: {light_count}");
+
+ let mut lights = vec![0u64; 1_000_000];
+ for (cmd, (x1, y1), (x2, y2)) in valueified {
+ use LightCommand::*;
+ for x in x1..=x2 {
+ for y in y1..=y2 {
+ match cmd {
+ TurnOff if lights[x + y * 1000] != 0 => { lights[x + y * 1000] -= 1; },
+ TurnOn => { lights[x + y * 1000] += 1; },
+ Toggle => { lights[x + y * 1000] += 2 },
+ _ => ()
+ }
+ }
+ }
+ }
+ let light_count = lights.into_iter().sum::<u64>();
+ println!("Lit light count(Ancient Nordic Elvish): {light_count}");
+}