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