heh
add p2
| -rw-r--r-- | lut | 1 | ||||
| -rw-r--r-- | lut2 | 1 | ||||
| -rw-r--r-- | offsets | 1 | ||||
| -rw-r--r-- | out | 46 | ||||
| -rw-r--r-- | p1 | 1 | ||||
| -rw-r--r-- | src/main.rs | 93 |
6 files changed, 92 insertions, 51 deletions
@@ -1 +0,0 @@ -{l[2619] = 0;l[2645] = 1;l[2671] = 2;l[2697] = 3;l[2723] = 4;l[2749] = 5;l[2775] = 6;l[2801] = 7;l[2827] = 8;l[2853] = 9;l[2879] = 10;l[2905] = 11;l[2931] = 12;l[2957] = 13;l[2983] = 14;l[3009] = 15;l[3035] = 16;l[3061] = 17;l[3087] = 18;l[3113] = 19;l[3139] = 20;l[3165] = 21;l[3191] = 22;l[3217] = 23;l[3243] = 24;l[3269] = 25;l[2620] = 26;l[2646] = 27;l[2672] = 28;l[2698] = 29;l[2724] = 30;l[2750] = 31;l[2776] = 32;l[2802] = 33;l[2828] = 34;l[2854] = 35;l[2880] = 36;l[2906] = 37;l[2932] = 38;l[2958] = 39;l[2984] = 40;l[3010] = 41;l[3036] = 42;l[3062] = 43;l[3088] = 44;l[3114] = 45;l[3140] = 46;l[3166] = 47;l[3192] = 48;l[3218] = 49;l[3244] = 50;l[3270] = 51;l[2621] = 52;l[2647] = 53;l[2673] = 54;l[2699] = 55;l[2725] = 56;l[2751] = 57;l[2777] = 58;l[2803] = 59;l[2829] = 60;l[2855] = 61;l[2881] = 62;l[2907] = 63;l[2933] = 64;l[2959] = 65;l[2985] = 66;l[3011] = 67;l[3037] = 68;l[3063] = 69;l[3089] = 70;l[3115] = 71;l[3141] = 72;l[3167] = 73;l[3193] = 74;l[3219] = 75;l[3245] = 76;l[3271] = 77;l[2622] = 78;l[2648] = 79;l[2674] = 80;l[2700] = 81;l[2726] = 82;l[2752] = 83;l[2778] = 84;l[2804] = 85;l[2830] = 86;l[2856] = 87;l[2882] = 88;l[2908] = 89;l[2934] = 90;l[2960] = 91;l[2986] = 92;l[3012] = 93;l[3038] = 94;l[3064] = 95;l[3090] = 96;l[3116] = 97;l[3142] = 98;l[3168] = 99;l[3194] = 100;l[3220] = 101;l[3246] = 102;l[3272] = 103;l[2623] = 104;l[2649] = 105;l[2675] = 106;l[2701] = 107;l[2727] = 108;l[2753] = 109;l[2779] = 110;l[2805] = 111;l[2831] = 112;l[2857] = 113;l[2883] = 114;l[2909] = 115;l[2935] = 116;l[2961] = 117;l[2987] = 118;l[3013] = 119;l[3039] = 120;l[3065] = 121;l[3091] = 122;l[3117] = 123;l[3143] = 124;l[3169] = 125;l[3195] = 126;l[3221] = 127;l[3247] = 128;l[3273] = 129;l[2624] = 130;l[2650] = 131;l[2676] = 132;l[2702] = 133;l[2728] = 134;l[2754] = 135;l[2780] = 136;l[2806] = 137;l[2832] = 138;l[2858] = 139;l[2884] = 140;l[2910] = 141;l[2936] = 142;l[2962] = 143;l[2988] = 144;l[3014] = 145;l[3040] = 146;l[3066] = 147;l[3092] = 148;l[3118] = 149;l[3144] = 150;l[3170] = 151;l[3196] = 152;l[3222] = 153;l[3248] = 154;l[3274] = 155;l[2625] = 156;l[2651] = 157;l[2677] = 158;l[2703] = 159;l[2729] = 160;l[2755] = 161;l[2781] = 162;l[2807] = 163;l[2833] = 164;l[2859] = 165;l[2885] = 166;l[2911] = 167;l[2937] = 168;l[2963] = 169;l[2989] = 170;l[3015] = 171;l[3041] = 172;l[3067] = 173;l[3093] = 174;l[3119] = 175;l[3145] = 176;l[3171] = 177;l[3197] = 178;l[3223] = 179;l[3249] = 180;l[3275] = 181;l[2626] = 182;l[2652] = 183;l[2678] = 184;l[2704] = 185;l[2730] = 186;l[2756] = 187;l[2782] = 188;l[2808] = 189;l[2834] = 190;l[2860] = 191;l[2886] = 192;l[2912] = 193;l[2938] = 194;l[2964] = 195;l[2990] = 196;l[3016] = 197;l[3042] = 198;l[3068] = 199;l[3094] = 200;l[3120] = 201;l[3146] = 202;l[3172] = 203;l[3198] = 204;l[3224] = 205;l[3250] = 206;l[3276] = 207;l[2627] = 208;l[2653] = 209;l[2679] = 210;l[2705] = 211;l[2731] = 212;l[2757] = 213;l[2783] = 214;l[2809] = 215;l[2835] = 216;l[2861] = 217;l[2887] = 218;l[2913] = 219;l[2939] = 220;l[2965] = 221;l[2991] = 222;l[3017] = 223;l[3043] = 224;l[3069] = 225;l[3095] = 226;l[3121] = 227;l[3147] = 228;l[3173] = 229;l[3199] = 230;l[3225] = 231;l[3251] = 232;l[3277] = 233;l[2628] = 234;l[2654] = 235;l[2680] = 236;l[2706] = 237;l[2732] = 238;l[2758] = 239;l[2784] = 240;l[2810] = 241;l[2836] = 242;l[2862] = 243;l[2888] = 244;l[2914] = 245;l[2940] = 246;l[2966] = 247;l[2992] = 248;l[3018] = 249;l[3044] = 250;l[3070] = 251;l[3096] = 252;l[3122] = 253;l[3148] = 254;l[3174] = 255;l[3200] = 256;l[3226] = 257;l[3252] = 258;l[3278] = 259;l[2629] = 260;l[2655] = 261;l[2681] = 262;l[2707] = 263;l[2733] = 264;l[2759] = 265;l[2785] = 266;l[2811] = 267;l[2837] = 268;l[2863] = 269;l[2889] = 270;l[2915] = 271;l[2941] = 272;l[2967] = 273;l[2993] = 274;l[3019] = 275;l[3045] = 276;l[3071] = 277;l[3097] = 278;l[3123] = 279;l[3149] = 280;l[3175] = 281;l[3201] = 282;l[3227] = 283;l[3253] = 284;l[3279] = 285;l[2630] = 286;l[2656] = 287;l[2682] = 288;l[2708] = 289;l[2734] = 290;l[2760] = 291;l[2786] = 292;l[2812] = 293;l[2838] = 294;l[2864] = 295;l[2890] = 296;l[2916] = 297;l[2942] = 298;l[2968] = 299;l[2994] = 300;l[3020] = 301;l[3046] = 302;l[3072] = 303;l[3098] = 304;l[3124] = 305;l[3150] = 306;l[3176] = 307;l[3202] = 308;l[3228] = 309;l[3254] = 310;l[3280] = 311;l[2631] = 312;l[2657] = 313;l[2683] = 314;l[2709] = 315;l[2735] = 316;l[2761] = 317;l[2787] = 318;l[2813] = 319;l[2839] = 320;l[2865] = 321;l[2891] = 322;l[2917] = 323;l[2943] = 324;l[2969] = 325;l[2995] = 326;l[3021] = 327;l[3047] = 328;l[3073] = 329;l[3099] = 330;l[3125] = 331;l[3151] = 332;l[3177] = 333;l[3203] = 334;l[3229] = 335;l[3255] = 336;l[3281] = 337;l[2632] = 338;l[2658] = 339;l[2684] = 340;l[2710] = 341;l[2736] = 342;l[2762] = 343;l[2788] = 344;l[2814] = 345;l[2840] = 346;l[2866] = 347;l[2892] = 348;l[2918] = 349;l[2944] = 350;l[2970] = 351;l[2996] = 352;l[3022] = 353;l[3048] = 354;l[3074] = 355;l[3100] = 356;l[3126] = 357;l[3152] = 358;l[3178] = 359;l[3204] = 360;l[3230] = 361;l[3256] = 362;l[3282] = 363;l[2633] = 364;l[2659] = 365;l[2685] = 366;l[2711] = 367;l[2737] = 368;l[2763] = 369;l[2789] = 370;l[2815] = 371;l[2841] = 372;l[2867] = 373;l[2893] = 374;l[2919] = 375;l[2945] = 376;l[2971] = 377;l[2997] = 378;l[3023] = 379;l[3049] = 380;l[3075] = 381;l[3101] = 382;l[3127] = 383;l[3153] = 384;l[3179] = 385;l[3205] = 386;l[3231] = 387;l[3257] = 388;l[3283] = 389;l[2634] = 390;l[2660] = 391;l[2686] = 392;l[2712] = 393;l[2738] = 394;l[2764] = 395;l[2790] = 396;l[2816] = 397;l[2842] = 398;l[2868] = 399;l[2894] = 400;l[2920] = 401;l[2946] = 402;l[2972] = 403;l[2998] = 404;l[3024] = 405;l[3050] = 406;l[3076] = 407;l[3102] = 408;l[3128] = 409;l[3154] = 410;l[3180] = 411;l[3206] = 412;l[3232] = 413;l[3258] = 414;l[3284] = 415;l[2635] = 416;l[2661] = 417;l[2687] = 418;l[2713] = 419;l[2739] = 420;l[2765] = 421;l[2791] = 422;l[2817] = 423;l[2843] = 424;l[2869] = 425;l[2895] = 426;l[2921] = 427;l[2947] = 428;l[2973] = 429;l[2999] = 430;l[3025] = 431;l[3051] = 432;l[3077] = 433;l[3103] = 434;l[3129] = 435;l[3155] = 436;l[3181] = 437;l[3207] = 438;l[3233] = 439;l[3259] = 440;l[3285] = 441;l[2636] = 442;l[2662] = 443;l[2688] = 444;l[2714] = 445;l[2740] = 446;l[2766] = 447;l[2792] = 448;l[2818] = 449;l[2844] = 450;l[2870] = 451;l[2896] = 452;l[2922] = 453;l[2948] = 454;l[2974] = 455;l[3000] = 456;l[3026] = 457;l[3052] = 458;l[3078] = 459;l[3104] = 460;l[3130] = 461;l[3156] = 462;l[3182] = 463;l[3208] = 464;l[3234] = 465;l[3260] = 466;l[3286] = 467;l[2637] = 468;l[2663] = 469;l[2689] = 470;l[2715] = 471;l[2741] = 472;l[2767] = 473;l[2793] = 474;l[2819] = 475;l[2845] = 476;l[2871] = 477;l[2897] = 478;l[2923] = 479;l[2949] = 480;l[2975] = 481;l[3001] = 482;l[3027] = 483;l[3053] = 484;l[3079] = 485;l[3105] = 486;l[3131] = 487;l[3157] = 488;l[3183] = 489;l[3209] = 490;l[3235] = 491;l[3261] = 492;l[3287] = 493;l[2638] = 494;l[2664] = 495;l[2690] = 496;l[2716] = 497;l[2742] = 498;l[2768] = 499;l[2794] = 500;l[2820] = 501;l[2846] = 502;l[2872] = 503;l[2898] = 504;l[2924] = 505;l[2950] = 506;l[2976] = 507;l[3002] = 508;l[3028] = 509;l[3054] = 510;l[3080] = 511;l[3106] = 512;l[3132] = 513;l[3158] = 514;l[3184] = 515;l[3210] = 516;l[3236] = 517;l[3262] = 518;l[3288] = 519;l[2639] = 520;l[2665] = 521;l[2691] = 522;l[2717] = 523;l[2743] = 524;l[2769] = 525;l[2795] = 526;l[2821] = 527;l[2847] = 528;l[2873] = 529;l[2899] = 530;l[2925] = 531;l[2951] = 532;l[2977] = 533;l[3003] = 534;l[3029] = 535;l[3055] = 536;l[3081] = 537;l[3107] = 538;l[3133] = 539;l[3159] = 540;l[3185] = 541;l[3211] = 542;l[3237] = 543;l[3263] = 544;l[3289] = 545;l[2640] = 546;l[2666] = 547;l[2692] = 548;l[2718] = 549;l[2744] = 550;l[2770] = 551;l[2796] = 552;l[2822] = 553;l[2848] = 554;l[2874] = 555;l[2900] = 556;l[2926] = 557;l[2952] = 558;l[2978] = 559;l[3004] = 560;l[3030] = 561;l[3056] = 562;l[3082] = 563;l[3108] = 564;l[3134] = 565;l[3160] = 566;l[3186] = 567;l[3212] = 568;l[3238] = 569;l[3264] = 570;l[3290] = 571;l[2641] = 572;l[2667] = 573;l[2693] = 574;l[2719] = 575;l[2745] = 576;l[2771] = 577;l[2797] = 578;l[2823] = 579;l[2849] = 580;l[2875] = 581;l[2901] = 582;l[2927] = 583;l[2953] = 584;l[2979] = 585;l[3005] = 586;l[3031] = 587;l[3057] = 588;l[3083] = 589;l[3109] = 590;l[3135] = 591;l[3161] = 592;l[3187] = 593;l[3213] = 594;l[3239] = 595;l[3265] = 596;l[3291] = 597;l[2642] = 598;l[2668] = 599;l[2694] = 600;l[2720] = 601;l[2746] = 602;l[2772] = 603;l[2798] = 604;l[2824] = 605;l[2850] = 606;l[2876] = 607;l[2902] = 608;l[2928] = 609;l[2954] = 610;l[2980] = 611;l[3006] = 612;l[3032] = 613;l[3058] = 614;l[3084] = 615;l[3110] = 616;l[3136] = 617;l[3162] = 618;l[3188] = 619;l[3214] = 620;l[3240] = 621;l[3266] = 622;l[3292] = 623;l[2643] = 624;l[2669] = 625;l[2695] = 626;l[2721] = 627;l[2747] = 628;l[2773] = 629;l[2799] = 630;l[2825] = 631;l[2851] = 632;l[2877] = 633;l[2903] = 634;l[2929] = 635;l[2955] = 636;l[2981] = 637;l[3007] = 638;l[3033] = 639;l[3059] = 640;l[3085] = 641;l[3111] = 642;l[3137] = 643;l[3163] = 644;l[3189] = 645;l[3215] = 646;l[3241] = 647;l[3267] = 648;l[3293] = 649;l[2644] = 650;l[2670] = 651;l[2696] = 652;l[2722] = 653;l[2748] = 654;l[2774] = 655;l[2800] = 656;l[2826] = 657;l[2852] = 658;l[2878] = 659;l[2904] = 660;l[2930] = 661;l[2956] = 662;l[2982] = 663;l[3008] = 664;l[3034] = 665;l[3060] = 666;l[3086] = 667;l[3112] = 668;l[3138] = 669;l[3164] = 670;l[3190] = 671;l[3216] = 672;l[3242] = 673;l[3268] = 674;l[3294] = 675;}
\ No newline at end of file @@ -1 +0,0 @@ -[*b"aa",*b"ab",*b"ac",*b"ad",*b"ae",*b"af",*b"ag",*b"ah",*b"ai",*b"aj",*b"ak",*b"al",*b"am",*b"an",*b"ao",*b"ap",*b"aq",*b"ar",*b"as",*b"at",*b"au",*b"av",*b"aw",*b"ax",*b"ay",*b"az",*b"ba",*b"bb",*b"bc",*b"bd",*b"be",*b"bf",*b"bg",*b"bh",*b"bi",*b"bj",*b"bk",*b"bl",*b"bm",*b"bn",*b"bo",*b"bp",*b"bq",*b"br",*b"bs",*b"bt",*b"bu",*b"bv",*b"bw",*b"bx",*b"by",*b"bz",*b"ca",*b"cb",*b"cc",*b"cd",*b"ce",*b"cf",*b"cg",*b"ch",*b"ci",*b"cj",*b"ck",*b"cl",*b"cm",*b"cn",*b"co",*b"cp",*b"cq",*b"cr",*b"cs",*b"ct",*b"cu",*b"cv",*b"cw",*b"cx",*b"cy",*b"cz",*b"da",*b"db",*b"dc",*b"dd",*b"de",*b"df",*b"dg",*b"dh",*b"di",*b"dj",*b"dk",*b"dl",*b"dm",*b"dn",*b"do",*b"dp",*b"dq",*b"dr",*b"ds",*b"dt",*b"du",*b"dv",*b"dw",*b"dx",*b"dy",*b"dz",*b"ea",*b"eb",*b"ec",*b"ed",*b"ee",*b"ef",*b"eg",*b"eh",*b"ei",*b"ej",*b"ek",*b"el",*b"em",*b"en",*b"eo",*b"ep",*b"eq",*b"er",*b"es",*b"et",*b"eu",*b"ev",*b"ew",*b"ex",*b"ey",*b"ez",*b"fa",*b"fb",*b"fc",*b"fd",*b"fe",*b"ff",*b"fg",*b"fh",*b"fi",*b"fj",*b"fk",*b"fl",*b"fm",*b"fn",*b"fo",*b"fp",*b"fq",*b"fr",*b"fs",*b"ft",*b"fu",*b"fv",*b"fw",*b"fx",*b"fy",*b"fz",*b"ga",*b"gb",*b"gc",*b"gd",*b"ge",*b"gf",*b"gg",*b"gh",*b"gi",*b"gj",*b"gk",*b"gl",*b"gm",*b"gn",*b"go",*b"gp",*b"gq",*b"gr",*b"gs",*b"gt",*b"gu",*b"gv",*b"gw",*b"gx",*b"gy",*b"gz",*b"ha",*b"hb",*b"hc",*b"hd",*b"he",*b"hf",*b"hg",*b"hh",*b"hi",*b"hj",*b"hk",*b"hl",*b"hm",*b"hn",*b"ho",*b"hp",*b"hq",*b"hr",*b"hs",*b"ht",*b"hu",*b"hv",*b"hw",*b"hx",*b"hy",*b"hz",*b"ia",*b"ib",*b"ic",*b"id",*b"ie",*b"if",*b"ig",*b"ih",*b"ii",*b"ij",*b"ik",*b"il",*b"im",*b"in",*b"io",*b"ip",*b"iq",*b"ir",*b"is",*b"it",*b"iu",*b"iv",*b"iw",*b"ix",*b"iy",*b"iz",*b"ja",*b"jb",*b"jc",*b"jd",*b"je",*b"jf",*b"jg",*b"jh",*b"ji",*b"jj",*b"jk",*b"jl",*b"jm",*b"jn",*b"jo",*b"jp",*b"jq",*b"jr",*b"js",*b"jt",*b"ju",*b"jv",*b"jw",*b"jx",*b"jy",*b"jz",*b"ka",*b"kb",*b"kc",*b"kd",*b"ke",*b"kf",*b"kg",*b"kh",*b"ki",*b"kj",*b"kk",*b"kl",*b"km",*b"kn",*b"ko",*b"kp",*b"kq",*b"kr",*b"ks",*b"kt",*b"ku",*b"kv",*b"kw",*b"kx",*b"ky",*b"kz",*b"la",*b"lb",*b"lc",*b"ld",*b"le",*b"lf",*b"lg",*b"lh",*b"li",*b"lj",*b"lk",*b"ll",*b"lm",*b"ln",*b"lo",*b"lp",*b"lq",*b"lr",*b"ls",*b"lt",*b"lu",*b"lv",*b"lw",*b"lx",*b"ly",*b"lz",*b"ma",*b"mb",*b"mc",*b"md",*b"me",*b"mf",*b"mg",*b"mh",*b"mi",*b"mj",*b"mk",*b"ml",*b"mm",*b"mn",*b"mo",*b"mp",*b"mq",*b"mr",*b"ms",*b"mt",*b"mu",*b"mv",*b"mw",*b"mx",*b"my",*b"mz",*b"na",*b"nb",*b"nc",*b"nd",*b"ne",*b"nf",*b"ng",*b"nh",*b"ni",*b"nj",*b"nk",*b"nl",*b"nm",*b"nn",*b"no",*b"np",*b"nq",*b"nr",*b"ns",*b"nt",*b"nu",*b"nv",*b"nw",*b"nx",*b"ny",*b"nz",*b"oa",*b"ob",*b"oc",*b"od",*b"oe",*b"of",*b"og",*b"oh",*b"oi",*b"oj",*b"ok",*b"ol",*b"om",*b"on",*b"oo",*b"op",*b"oq",*b"or",*b"os",*b"ot",*b"ou",*b"ov",*b"ow",*b"ox",*b"oy",*b"oz",*b"pa",*b"pb",*b"pc",*b"pd",*b"pe",*b"pf",*b"pg",*b"ph",*b"pi",*b"pj",*b"pk",*b"pl",*b"pm",*b"pn",*b"po",*b"pp",*b"pq",*b"pr",*b"ps",*b"pt",*b"pu",*b"pv",*b"pw",*b"px",*b"py",*b"pz",*b"qa",*b"qb",*b"qc",*b"qd",*b"qe",*b"qf",*b"qg",*b"qh",*b"qi",*b"qj",*b"qk",*b"ql",*b"qm",*b"qn",*b"qo",*b"qp",*b"qq",*b"qr",*b"qs",*b"qt",*b"qu",*b"qv",*b"qw",*b"qx",*b"qy",*b"qz",*b"ra",*b"rb",*b"rc",*b"rd",*b"re",*b"rf",*b"rg",*b"rh",*b"ri",*b"rj",*b"rk",*b"rl",*b"rm",*b"rn",*b"ro",*b"rp",*b"rq",*b"rr",*b"rs",*b"rt",*b"ru",*b"rv",*b"rw",*b"rx",*b"ry",*b"rz",*b"sa",*b"sb",*b"sc",*b"sd",*b"se",*b"sf",*b"sg",*b"sh",*b"si",*b"sj",*b"sk",*b"sl",*b"sm",*b"sn",*b"so",*b"sp",*b"sq",*b"sr",*b"ss",*b"st",*b"su",*b"sv",*b"sw",*b"sx",*b"sy",*b"sz",*b"ta",*b"tb",*b"tc",*b"td",*b"te",*b"tf",*b"tg",*b"th",*b"ti",*b"tj",*b"tk",*b"tl",*b"tm",*b"tn",*b"to",*b"tp",*b"tq",*b"tr",*b"ts",*b"tt",*b"tu",*b"tv",*b"tw",*b"tx",*b"ty",*b"tz",*b"ua",*b"ub",*b"uc",*b"ud",*b"ue",*b"uf",*b"ug",*b"uh",*b"ui",*b"uj",*b"uk",*b"ul",*b"um",*b"un",*b"uo",*b"up",*b"uq",*b"ur",*b"us",*b"ut",*b"uu",*b"uv",*b"uw",*b"ux",*b"uy",*b"uz",*b"va",*b"vb",*b"vc",*b"vd",*b"ve",*b"vf",*b"vg",*b"vh",*b"vi",*b"vj",*b"vk",*b"vl",*b"vm",*b"vn",*b"vo",*b"vp",*b"vq",*b"vr",*b"vs",*b"vt",*b"vu",*b"vv",*b"vw",*b"vx",*b"vy",*b"vz",*b"wa",*b"wb",*b"wc",*b"wd",*b"we",*b"wf",*b"wg",*b"wh",*b"wi",*b"wj",*b"wk",*b"wl",*b"wm",*b"wn",*b"wo",*b"wp",*b"wq",*b"wr",*b"ws",*b"wt",*b"wu",*b"wv",*b"ww",*b"wx",*b"wy",*b"wz",*b"xa",*b"xb",*b"xc",*b"xd",*b"xe",*b"xf",*b"xg",*b"xh",*b"xi",*b"xj",*b"xk",*b"xl",*b"xm",*b"xn",*b"xo",*b"xp",*b"xq",*b"xr",*b"xs",*b"xt",*b"xu",*b"xv",*b"xw",*b"xx",*b"xy",*b"xz",*b"ya",*b"yb",*b"yc",*b"yd",*b"ye",*b"yf",*b"yg",*b"yh",*b"yi",*b"yj",*b"yk",*b"yl",*b"ym",*b"yn",*b"yo",*b"yp",*b"yq",*b"yr",*b"ys",*b"yt",*b"yu",*b"yv",*b"yw",*b"yx",*b"yy",*b"yz",*b"za",*b"zb",*b"zc",*b"zd",*b"ze",*b"zf",*b"zg",*b"zh",*b"zi",*b"zj",*b"zk",*b"zl",*b"zm",*b"zn",*b"zo",*b"zp",*b"zq",*b"zr",*b"zs",*b"zt",*b"zu",*b"zv",*b"zw",*b"zx",*b"zy",*b"zz"]
\ No newline at end of file diff --git a/offsets b/offsets deleted file mode 100644 index fd4e6bb..0000000 --- a/offsets +++ /dev/null @@ -1 +0,0 @@ -[(0i32, -20i32), (-1, -19), (0, -19), (1, -19), (-2, -18), (-1, -18), (0, -18), (1, -18), (2, -18), (-3, -17), (-2, -17), (-1, -17), (0, -17), (1, -17), (2, -17), (3, -17), (-4, -16), (-3, -16), (-2, -16), (-1, -16), (0, -16), (1, -16), (2, -16), (3, -16), (4, -16), (-5, -15), (-4, -15), (-3, -15), (-2, -15), (-1, -15), (0, -15), (1, -15), (2, -15), (3, -15), (4, -15), (5, -15), (-6, -14), (-5, -14), (-4, -14), (-3, -14), (-2, -14), (-1, -14), (0, -14), (1, -14), (2, -14), (3, -14), (4, -14), (5, -14), (6, -14), (-7, -13), (-6, -13), (-5, -13), (-4, -13), (-3, -13), (-2, -13), (-1, -13), (0, -13), (1, -13), (2, -13), (3, -13), (4, -13), (5, -13), (6, -13), (7, -13), (-8, -12), (-7, -12), (-6, -12), (-5, -12), (-4, -12), (-3, -12), (-2, -12), (-1, -12), (0, -12), (1, -12), (2, -12), (3, -12), (4, -12), (5, -12), (6, -12), (7, -12), (8, -12), (-9, -11), (-8, -11), (-7, -11), (-6, -11), (-5, -11), (-4, -11), (-3, -11), (-2, -11), (-1, -11), (0, -11), (1, -11), (2, -11), (3, -11), (4, -11), (5, -11), (6, -11), (7, -11), (8, -11), (9, -11), (-10, -10), (-9, -10), (-8, -10), (-7, -10), (-6, -10), (-5, -10), (-4, -10), (-3, -10), (-2, -10), (-1, -10), (0, -10), (1, -10), (2, -10), (3, -10), (4, -10), (5, -10), (6, -10), (7, -10), (8, -10), (9, -10), (10, -10), (-11, -9), (-10, -9), (-9, -9), (-8, -9), (-7, -9), (-6, -9), (-5, -9), (-4, -9), (-3, -9), (-2, -9), (-1, -9), (0, -9), (1, -9), (2, -9), (3, -9), (4, -9), (5, -9), (6, -9), (7, -9), (8, -9), (9, -9), (10, -9), (11, -9), (-12, -8), (-11, -8), (-10, -8), (-9, -8), (-8, -8), (-7, -8), (-6, -8), (-5, -8), (-4, -8), (-3, -8), (-2, -8), (-1, -8), (0, -8), (1, -8), (2, -8), (3, -8), (4, -8), (5, -8), (6, -8), (7, -8), (8, -8), (9, -8), (10, -8), (11, -8), (12, -8), (-13, -7), (-12, -7), (-11, -7), (-10, -7), (-9, -7), (-8, -7), (-7, -7), (-6, -7), (-5, -7), (-4, -7), (-3, -7), (-2, -7), (-1, -7), (0, -7), (1, -7), (2, -7), (3, -7), (4, -7), (5, -7), (6, -7), (7, -7), (8, -7), (9, -7), (10, -7), (11, -7), (12, -7), (13, -7), (-14, -6), (-13, -6), (-12, -6), (-11, -6), (-10, -6), (-9, -6), (-8, -6), (-7, -6), (-6, -6), (-5, -6), (-4, -6), (-3, -6), (-2, -6), (-1, -6), (0, -6), (1, -6), (2, -6), (3, -6), (4, -6), (5, -6), (6, -6), (7, -6), (8, -6), (9, -6), (10, -6), (11, -6), (12, -6), (13, -6), (14, -6), (-15, -5), (-14, -5), (-13, -5), (-12, -5), (-11, -5), (-10, -5), (-9, -5), (-8, -5), (-7, -5), (-6, -5), (-5, -5), (-4, -5), (-3, -5), (-2, -5), (-1, -5), (0, -5), (1, -5), (2, -5), (3, -5), (4, -5), (5, -5), (6, -5), (7, -5), (8, -5), (9, -5), (10, -5), (11, -5), (12, -5), (13, -5), (14, -5), (15, -5), (-16, -4), (-15, -4), (-14, -4), (-13, -4), (-12, -4), (-11, -4), (-10, -4), (-9, -4), (-8, -4), (-7, -4), (-6, -4), (-5, -4), (-4, -4), (-3, -4), (-2, -4), (-1, -4), (0, -4), (1, -4), (2, -4), (3, -4), (4, -4), (5, -4), (6, -4), (7, -4), (8, -4), (9, -4), (10, -4), (11, -4), (12, -4), (13, -4), (14, -4), (15, -4), (16, -4), (-17, -3), (-16, -3), (-15, -3), (-14, -3), (-13, -3), (-12, -3), (-11, -3), (-10, -3), (-9, -3), (-8, -3), (-7, -3), (-6, -3), (-5, -3), (-4, -3), (-3, -3), (-2, -3), (-1, -3), (0, -3), (1, -3), (2, -3), (3, -3), (4, -3), (5, -3), (6, -3), (7, -3), (8, -3), (9, -3), (10, -3), (11, -3), (12, -3), (13, -3), (14, -3), (15, -3), (16, -3), (17, -3), (-18, -2), (-17, -2), (-16, -2), (-15, -2), (-14, -2), (-13, -2), (-12, -2), (-11, -2), (-10, -2), (-9, -2), (-8, -2), (-7, -2), (-6, -2), (-5, -2), (-4, -2), (-3, -2), (-2, -2), (-1, -2), (0, -2), (1, -2), (2, -2), (3, -2), (4, -2), (5, -2), (6, -2), (7, -2), (8, -2), (9, -2), (10, -2), (11, -2), (12, -2), (13, -2), (14, -2), (15, -2), (16, -2), (17, -2), (18, -2), (-19, -1), (-18, -1), (-17, -1), (-16, -1), (-15, -1), (-14, -1), (-13, -1), (-12, -1), (-11, -1), (-10, -1), (-9, -1), (-8, -1), (-7, -1), (-6, -1), (-5, -1), (-4, -1), (-3, -1), (-2, -1), (-1, -1), (0, -1), (1, -1), (2, -1), (3, -1), (4, -1), (5, -1), (6, -1), (7, -1), (8, -1), (9, -1), (10, -1), (11, -1), (12, -1), (13, -1), (14, -1), (15, -1), (16, -1), (17, -1), (18, -1), (19, -1), (-20, 0), (-19, 0), (-18, 0), (-17, 0), (-16, 0), (-15, 0), (-14, 0), (-13, 0), (-12, 0), (-11, 0), (-10, 0), (-9, 0), (-8, 0), (-7, 0), (-6, 0), (-5, 0), (-4, 0), (-3, 0), (-2, 0), (-1, 0), (0, 0), (1, 0), (2, 0), (3, 0), (4, 0), (5, 0), (6, 0), (7, 0), (8, 0), (9, 0), (10, 0), (11, 0), (12, 0), (13, 0), (14, 0), (15, 0), (16, 0), (17, 0), (18, 0), (19, 0), (20, 0), (-19, 1), (-18, 1), (-17, 1), (-16, 1), (-15, 1), (-14, 1), (-13, 1), (-12, 1), (-11, 1), (-10, 1), (-9, 1), (-8, 1), (-7, 1), (-6, 1), (-5, 1), (-4, 1), (-3, 1), (-2, 1), (-1, 1), (0, 1), (1, 1), (2, 1), (3, 1), (4, 1), (5, 1), (6, 1), (7, 1), (8, 1), (9, 1), (10, 1), (11, 1), (12, 1), (13, 1), (14, 1), (15, 1), (16, 1), (17, 1), (18, 1), (19, 1), (-18, 2), (-17, 2), (-16, 2), (-15, 2), (-14, 2), (-13, 2), (-12, 2), (-11, 2), (-10, 2), (-9, 2), (-8, 2), (-7, 2), (-6, 2), (-5, 2), (-4, 2), (-3, 2), (-2, 2), (-1, 2), (0, 2), (1, 2), (2, 2), (3, 2), (4, 2), (5, 2), (6, 2), (7, 2), (8, 2), (9, 2), (10, 2), (11, 2), (12, 2), (13, 2), (14, 2), (15, 2), (16, 2), (17, 2), (18, 2), (-17, 3), (-16, 3), (-15, 3), (-14, 3), (-13, 3), (-12, 3), (-11, 3), (-10, 3), (-9, 3), (-8, 3), (-7, 3), (-6, 3), (-5, 3), (-4, 3), (-3, 3), (-2, 3), (-1, 3), (0, 3), (1, 3), (2, 3), (3, 3), (4, 3), (5, 3), (6, 3), (7, 3), (8, 3), (9, 3), (10, 3), (11, 3), (12, 3), (13, 3), (14, 3), (15, 3), (16, 3), (17, 3), (-16, 4), (-15, 4), (-14, 4), (-13, 4), (-12, 4), (-11, 4), (-10, 4), (-9, 4), (-8, 4), (-7, 4), (-6, 4), (-5, 4), (-4, 4), (-3, 4), (-2, 4), (-1, 4), (0, 4), (1, 4), (2, 4), (3, 4), (4, 4), (5, 4), (6, 4), (7, 4), (8, 4), (9, 4), (10, 4), (11, 4), (12, 4), (13, 4), (14, 4), (15, 4), (16, 4), (-15, 5), (-14, 5), (-13, 5), (-12, 5), (-11, 5), (-10, 5), (-9, 5), (-8, 5), (-7, 5), (-6, 5), (-5, 5), (-4, 5), (-3, 5), (-2, 5), (-1, 5), (0, 5), (1, 5), (2, 5), (3, 5), (4, 5), (5, 5), (6, 5), (7, 5), (8, 5), (9, 5), (10, 5), (11, 5), (12, 5), (13, 5), (14, 5), (15, 5), (-14, 6), (-13, 6), (-12, 6), (-11, 6), (-10, 6), (-9, 6), (-8, 6), (-7, 6), (-6, 6), (-5, 6), (-4, 6), (-3, 6), (-2, 6), (-1, 6), (0, 6), (1, 6), (2, 6), (3, 6), (4, 6), (5, 6), (6, 6), (7, 6), (8, 6), (9, 6), (10, 6), (11, 6), (12, 6), (13, 6), (14, 6), (-13, 7), (-12, 7), (-11, 7), (-10, 7), (-9, 7), (-8, 7), (-7, 7), (-6, 7), (-5, 7), (-4, 7), (-3, 7), (-2, 7), (-1, 7), (0, 7), (1, 7), (2, 7), (3, 7), (4, 7), (5, 7), (6, 7), (7, 7), (8, 7), (9, 7), (10, 7), (11, 7), (12, 7), (13, 7), (-12, 8), (-11, 8), (-10, 8), (-9, 8), (-8, 8), (-7, 8), (-6, 8), (-5, 8), (-4, 8), (-3, 8), (-2, 8), (-1, 8), (0, 8), (1, 8), (2, 8), (3, 8), (4, 8), (5, 8), (6, 8), (7, 8), (8, 8), (9, 8), (10, 8), (11, 8), (12, 8), (-11, 9), (-10, 9), (-9, 9), (-8, 9), (-7, 9), (-6, 9), (-5, 9), (-4, 9), (-3, 9), (-2, 9), (-1, 9), (0, 9), (1, 9), (2, 9), (3, 9), (4, 9), (5, 9), (6, 9), (7, 9), (8, 9), (9, 9), (10, 9), (11, 9), (-10, 10), (-9, 10), (-8, 10), (-7, 10), (-6, 10), (-5, 10), (-4, 10), (-3, 10), (-2, 10), (-1, 10), (0, 10), (1, 10), (2, 10), (3, 10), (4, 10), (5, 10), (6, 10), (7, 10), (8, 10), (9, 10), (10, 10), (-9, 11), (-8, 11), (-7, 11), (-6, 11), (-5, 11), (-4, 11), (-3, 11), (-2, 11), (-1, 11), (0, 11), (1, 11), (2, 11), (3, 11), (4, 11), (5, 11), (6, 11), (7, 11), (8, 11), (9, 11), (-8, 12), (-7, 12), (-6, 12), (-5, 12), (-4, 12), (-3, 12), (-2, 12), (-1, 12), (0, 12), (1, 12), (2, 12), (3, 12), (4, 12), (5, 12), (6, 12), (7, 12), (8, 12), (-7, 13), (-6, 13), (-5, 13), (-4, 13), (-3, 13), (-2, 13), (-1, 13), (0, 13), (1, 13), (2, 13), (3, 13), (4, 13), (5, 13), (6, 13), (7, 13), (-6, 14), (-5, 14), (-4, 14), (-3, 14), (-2, 14), (-1, 14), (0, 14), (1, 14), (2, 14), (3, 14), (4, 14), (5, 14), (6, 14), (-5, 15), (-4, 15), (-3, 15), (-2, 15), (-1, 15), (0, 15), (1, 15), (2, 15), (3, 15), (4, 15), (5, 15), (-4, 16), (-3, 16), (-2, 16), (-1, 16), (0, 16), (1, 16), (2, 16), (3, 16), (4, 16), (-3, 17), (-2, 17), (-1, 17), (0, 17), (1, 17), (2, 17), (3, 17), (-2, 18), (-1, 18), (0, 18), (1, 18), (2, 18), (-1, 19), (0, 19), (1, 19), (0, 20)]
\ No newline at end of file @@ -1,46 +0,0 @@ -x00 XOR y00 -> z00 -brk XOR hmc -> z01 -rhd XOR rcm -> z02 -psb XOR sgb -> z03 -jhh XOR vws -> z04 -ckj XOR tbw -> z05 -wtm XOR phh -> z06 -std XOR jfr -> z07 -cct XOR cjn -> z08 -wpc XOR rds -> z09 -kgd OR kqf -> z10 -mwk XOR jtg -> z11 -jnk XOR tqk -> z12 -vbn XOR mkk -> z13 -njj XOR mjm -> z14 -qkj XOR fdg -> z15 -sbt XOR hrt -> z16 -thq XOR mfd -> z17 -y18 AND x18 -> z18 -wsq XOR cvr -> z19 -spr XOR vcn -> z20 -tsq XOR pmr -> z21 -kdn XOR cpv -> z22 -gwq XOR wrn -> z23 -jmh XOR mrs -> z24 -mtn XOR tff -> z25 -png XOR gdq -> z26 -qqs XOR tdp -> z27 -grq XOR vfq -> z28 -wws XOR cdh -> z29 -dkj XOR gqs -> z30 -fkf XOR whs -> z31 -bgf XOR mcr -> z32 -cvt AND wwp -> z33 -vkd XOR vtd -> z34 -swf XOR hqk -> z35 -wfd XOR cwj -> z36 -bmt XOR jsp -> z37 -bhv XOR kqb -> z38 -wpd XOR ndm -> z39 -rbn XOR whm -> z40 -jhm XOR fqt -> z41 -jgh XOR gms -> z42 -bmw XOR bng -> z43 -cwt XOR mcd -> z44 -fmp OR pcq -> z45 @@ -1 +0,0 @@ -[(-2i32, 0i32),(-1, -1),(-1, 1),(0, -2),(0, 2),(1, -1),(1, 1),(2, 0)]
\ No newline at end of file diff --git a/src/main.rs b/src/main.rs index fabbd10..fd0049a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -140,9 +140,100 @@ pub fn p1(x: &str) -> impl Display { z } +#[no_mangle] +pub fn p2(x: &str) -> impl Display { + let mut gates = Vec::with_capacity(128); + let x = &x.as_bytes()[7 * 45 * 2 + 1..]; + fn gate(x: &[u8]) -> [u8; 3] { + x.try_into().unwrap() + } + const XOR: u8 = 0; + const AND: u8 = 1; + const OR: u8 = 2; + for connection in x.行() { + let mut i = connection.split(|x| *x == b' '); + let [i1, op, i2, _, out] = std::array::from_fn(|_| i.Δ()); + let [i1, i2, out] = [i1, i2, out].map(gate); + let op = match op { + b"XOR" => XOR, + b"AND" => AND, + b"OR" => OR, + _ => shucks!(), + }; + gates.push((i1, i2, out, op)); + } + let find = |i1, op: u8, i2| { + gates + .iter() + .find(|x| { + (x.0 == i1 && x.1 == i2 && x.3 == op) || (x.1 == i1 && x.0 == i2 && x.3 == op) + }) + .map(|x| x.2) + }; + let find_using = |op: u8, i2| { + gates.iter().find_map(|x| { + (x.1 == i2 && x.3 == op) + .then_some((x.0, x.2)) + .or((x.0 == i2 && x.3 == op).then_some((x.1, x.2))) + }) + }; + // search for full adders (this is a ripple carry adder) + // x ^ y -> t0 + // x & y -> t1 + // c0 & t0 -> t2 + // c0 ^ t0 -> z + // t1 | t2 -> c1 + let mut swaps = vec![]; + for [x, y, should_z] in const { + let input: [[[u8; 3]; 3]; 44] = car::from_fn!(|i| { + let i = i + 1; + let x = [b'x', (i as u8 / 10) + b'0', (i as u8 % 10) + b'0']; + let y = [b'y', (i as u8 / 10) + b'0', (i as u8 % 10) + b'0']; + let z = [b'z', (i as u8 / 10) + b'0', (i as u8 % 10) + b'0']; + [x, y, z] + }); + input + } { + let t0 = find(x, XOR, y).unwrap(); // x ^ y -> t0 + + // println!("{} ^ {} -> {} (t0)", x.p(), y.p(), t0.p()); + + let t1 = find(x, AND, y).unwrap(); // x & y -> t1 + + // println!("{} & {} -> {} (t1)", x.p(), y.p(), t1.p()); + + // c0 & t0 -> t2 + let Some((_c0, _t2)) = find_using(AND, t0) else { + swaps.push(t0); + swaps.push(t1); + // println!("swap {} with {}", t0.p(), t1.p()); + continue; + }; + // println!("(c0) {} & {} (t0) -> {} (t2)", c0.p(), t0.p(), t2.p()); + let (_, z) = find_using(XOR, t0).unwrap(); // c0 ^ t0 -> z + + // println!("(c0) {} ^ {} (t0) -> {} (z)", c0.p(), t0.p(), z.p()); + if z != should_z { + swaps.push(z); + swaps.push(should_z); + // println!("swap {} with {}", z.p(), format!("z{i:02}")); + continue; + } + // t1 | t2 -> c1 + // let c1 = find(t1, b"OR", t2).unwrap(); + } + swaps.sort_unstable(); + let mut out = String::with_capacity(40); + for swap in swaps { + use std::fmt::Write; + _ = write!(out, "{},", swap.p()); + } + out +} + fn main() { let s = include_str!("inp.txt"); - println!("{}", unsafe { p1(s) }); + println!("{}", unsafe { p2(s) }); // dbg!(exec(&program, regi)); } |