From bf033f67f6fb5fe3ff2093a48529f216ed4b9eee Mon Sep 17 00:00:00 2001 From: jbb01 <32650546+jbb01@users.noreply.github.com> Date: Wed, 10 Sep 2025 17:08:57 +0200 Subject: [PATCH] array transformation --- src/bin/07_weird_assembly_machine.rs | 80 +++++++++++++++++++++++++--- 1 file changed, 72 insertions(+), 8 deletions(-) diff --git a/src/bin/07_weird_assembly_machine.rs b/src/bin/07_weird_assembly_machine.rs index 740fe02..f8170ac 100644 --- a/src/bin/07_weird_assembly_machine.rs +++ b/src/bin/07_weird_assembly_machine.rs @@ -1,6 +1,70 @@ // https://button.qedaka.de/07_weird_assembly_machine.html?name=Jonah&n=10000000000000070&x=4410539207075887818 - -const DATA: &[u8] = b"j\xe9~\x9c\xf5@\x16[\xac|\xf0O\x9e\xf0\x18,\x80Y\xf23`\xdd8\xceS\x9e>\xb6\x15o\xc7 \x22\x97\x8dRF\xc6\x9e+Q\xf4`\xb1\xdf\x82\x9d\xc3p\x86\x1fQ\x17~\xb5_\xa4\x88\x87\xa8\xffK\xec=\xd8\x13\xa8Z\x9a\x8e\xe7\x5c\x06\xefz\xd3\xff\xcc\xe98@L\x12\x03\xc5\xea\xcd\xea#\xe3q$R\xe3\xdbh7Tg\x99\x95\x94z$F\xab)\x94\x016M\x89+]\x8e^\x1a\x04v\x04\xe8e\xf4\xcb\x17\xc5\xeb\x93SS\x81\xe8\xfe\xabT\x1c\x97\xbc`\xe2\xb2Z\xd1\x8d\xa6\xc2!\xfa k:\xe9\x85\xf3\xe7\x1b(\x80X\x8bL\x88<\xa6\xaa\xbb\x87W;=WN<%\xdfh\xcdg\xda5\xfcs\xd7\x8f\x8a\x1e\xe2\xadl\xf2\x919Q\xc6\xddE\x0d\xd0{\x96\xc1\xf0\x89\xdc\xe38\xd9\x97\xc0\x81D\x8483Q\xa9\xc7\x9c*G\x8b\x04o\xb8\xe34K\xcd\xec(\x83\x89#S\xce\xda\xbb\xbcn\x9b\xbbl\x1eh\xf3@\xd7yp^\xfc\x81\xfbh\x17x\xbb\xaa\xf8x?\x95@I\x86\xa6T\x9c\x15qDP\xe4\x1a.\xbb\x88\xd1\xc2p\xd9C?\xca{\x17\x1f\x1f\xe2,\xa6\x0fK\xc4\x977EH5#\xa4:\xd9\xe5\x0c\xc8/c\x91h\xac\x13\x90\x5c;B\xb6\x8f\x18\xf9\xc0\x84g\xd9\xd4\xd6\x83\xa1\xe9\x98\xf8\xf8\xa9\xaf2\x16\xf14\xf0\xb4Z\x22#+\xfa\x17\xd0i\x82\xb3\xdf:\x97\x07\xb2qq\x8b\xb9D\xf8^\xcb\x05\x18\x05\xc9t@h\x8ap\xd4\x09\xb5\xec\x09\x10}\xfc\x1e\xe3?*\x0e>I\x10\x22\x86\xd8\x89\x95\x9f$}\xd2\xb4f\xf5\xabF\x90Bu\xfc\xc6!\xac\x89\xea\xf8\xc7(Q\xa6\x80\xcfqXs1\xabL\xca\xea\x0c\x0c\xcd\xc2g\xfd\xfbMc\x9e%\xed\xac7\xcb+\x11>E\x89\xcf\xbf\xcbc\xf9\xac6\x8f\x87\xce\x1bwT\xbfv_;\x14\x8dL\xc2\xae\x10E\xf6\x83T\x0cn\x83\xd7\x92\xaa\xce\xc9\x07\xc8\x8e\x5c_\xca\x9a\x8d\xae\xe5P\xc8\xc58\xa0,\xddVSZ]\xc1KK\xad;\xfe\xf5\xcf&\xba\xbc\x99\x02\xd5f\xe0\x07\xac\xad\xe6\xca\xb5\xeb\x0d\xf3;xsD\x9a\xbb\xe6\xa6B\xe91\xe7\xdd\x12\x9c\x9eL\x0d\x8e\x96\xc3*0=I\xf43\xbf4\x1c\xcb\xff\xdd\x15\x88\xb8pj\x97\x15\xa2\xf8Xl\x8b\x05\x9a\xfc\xad\xcc\x93(\xc6\x7fq\xdb\xfe\x16\x13\xd3\x8ac\x16F/\x09\x0d'\xd9\xd9\xf0\x86l:\x9e\x1f\xf2\xef\x92\x06\xb5\xe8\x92\xc7a\xa2\xc4\x5c\xe3:\x0f\xf1<\xd6E\x0aw \x8e\xfa[S\xaa\xa2\x125\x1a\xa8\x1f\xbc\x93\x0fJ\xb0\x96n\xba\x85\x9e\xba\x8b\xe6K\x1c2]JGT\xcb\xec\x0a\x03>\x1d%\x06\x18d^d\x8bY\xa0\xa2b\xf5\xa8\xc8\xf1[\xed<\xb6\xc5\xc0D\xf1*d,j{\x17OVk\x00h\x90a\xa7p\xf7\xb0!Ns\xc9\x10\x8c\xc7\xe3\xae\x1f1\x0fw\xa5u\x16\x94\xcaK\x088\x80\x989\x0e|4mE%w~B\xa6\xdd\x81\xdd\x9b\xb9E\xe1P\xceJ\x8dF\x9bP\x94\xb2}\xc2\xfc\xec\xe3\xc8\xf4N\xac\xfe%a\x91\xe4~|\xe5K\xb0P\x7f\xf2\xc8\x19\xeb+4\xae\xa9+}2Q?\xcez \x8b-\xb5t\x80\x07\x17\x84-k?\xcb\x15\xb8\x9a\x93\xf8r\x17\x03\xdbtA*0\xca\xb9z\xaf\xd3\x94@\x8b\x88\xf3\xfb\x06\xd1\x8a\x88\xd6\x95!\x0cw\x08\xc37[)\xd1\xb4\xa1\xa1\x03\xe4\xf4\x88\xa3\x8c\xec'\xc9\xb3\x22(\x0e\xce\x18\xf1\x04\xe9\xc4!\xe4\xd3\xc6+\xbf\xc7\xa5\x84\xfd\xaf\x93\xb3F\xb4\xb9\xe7\xe9}\x8c@'\xbc\xc5\x81\xecQ\xd02\xa3\xd5\xcb\x98\xb8\xba\xd8\xad\xcc\x14\xe3\xe8\xcb\x19\x09\xf1W\xca\x05\xbe\x5c\x80\xdc\xd0\xab\xc0z\xb7\x9d:\xcax\x849\xda\xbb\x7f\xd5d\x1a[\xfb\x05\x05\xf5\x91W*\xf0\x91#\x97\xaf\xc8?\xc57\x89\x1e\x83\x88G_\x19~\xbb\xc6\xc1\xa5\x14\xc4O\xe7\x1d\x90\x85(\x92\x8a\xc4\xd2\x8f\xff\x15\x95\xc1\x1b\x1f\x05\xf2\xe8ehd\xcb\xb8f\x9d\xf5\x8c\x9b\xdc\xff\x00W\xa7\xaf&\xcb\xf4LX\xb4\xc8\xe6}U5J\xf59\xa3\x99J7\xc0\xa2\xf4|\xbfp\xd6\xc1\xc7b\x12:\xccj\x00\x91G\xd6\x06(b\xe2\xc6\x01r\xcc\x0d\x17$\x10\x15\xd5;v3s\xcac**\x8d\xb1/8@h/E\x02\xc2T\xb9k\x05\xb8t5\xcf%\xc1j\xfb\xdd\xce\xd4f\xf7\x95y\xcf\x9a\xa7\xd7\xf1S\xe8\x89>\xbd}\xea%\xb0\xbbf \xbc\xaeFF\xd8M=>\xaa)\xa6E\xc0\xc8\x0d-\x10EF\x9e\xec\xe6\x84\x04\xe8\x04\xd0T8b\xc5\xa2\xe4\x9d\xc7\xbb\x7f8\x85\x11t!\xe8\x1a\x11\xcf\xa4\x9cK\xf1t8M\xcb\xe6\x93A\xa9\x8c\xe2z\x5c:\xa7\xbe\xcc\x93A\xd5R\xafy\xd4\xe2\xa1~\xe0\xc9}t{-\xea\xa2\xd6S\x0dASkL\xe1|ZI`W|\xb3w\x138g\x01\x1a\xd6HD\x1b\x15\xeat8W\x1f\x1f\xf8\x96\xcd\x14\xabPw\x92\xc3<\xc9~\x19cf\x02\xfd\xe3\xd1\xa0\x8bx0\xf5\x8c-\xa8H\xe02\x98(\xde2j\xd1s*:W#\x8bQvt\x14\x96\x88(\xbf>\x89\xaa\xb6n\x90Q\xe1\x16!\xe55f\x12d\x17\x05\x04\xd1\xfd\x09\x918\x0b\xe1-U\xd4\x87k!|iH \x8e\xd8o\x00(@4\x22-!d\xe5\x8a\x15U(X\xa6\xa4\x1b)~C\x9e\xe7\x98\xf5o)\xf6\x16\xa1d\xae[\xfc4\xb8\xd9\x81\x1e\xd5\xfd\xbb\x11\xcc\x9dV@h:\xbe\xd6\xa6P\x14\xf2\xb0B=\x003\x85\x9d\xbf\x8dWx\xfd7\x8cm\x91\xba\xd2\xb64\xaf}\x86\xc2\xe7\xc2\xf1p\xc9\x0eDc=\xb5Q\xc2uZ4W~\xda\xb6L\xea\xa0\x0az'\xb9\xae\x87l\xf4\xda\x1c\xc0\xe4#Xr\xbdgKurV,\x9e\x1d)e0\xae6\xaa\xbf\xff\xea\x08\x12\xf9\xbb\xcf\xf2\xf7\x86\x1d\xa8\x82\xd7\xa0\xd2\xa1\xbbyZ\xe5\xa8\x05o.\x98\xd8\xd1m\xbe\xce\x00\xa8!}\xccT\xcb\x19\x0e\xa6I\xe8\xc4\x00$\xc6\x91n.\x04a\xd3\xfe\xc4\xae|\x17>\x96K1\x12\xfb^%\xd9\xb0(\xfc\xe5\x09b\xa5U\x92;sl\xb7X\xa2\xabf\x02n\xfbG_\x06\xcf\xee\x84O\xbe\xf6\xc3Q\x1d\x8fc\x8d[\x9c\xaf\x05\x0d#q\x80\xec\x87\x07Y\xc7\x10\xcd]sS\xa1\xf49\x225\xb1\xa8!\x0f:Q\x9f\x82\xb1P\x8cE\x864\x82\x972dt\x9e\x90B\xa0\xbbi(!\xcdN\xa2Ti\x84k\xe3c\xb1\xf7\xc1g(\x5c\xb2\x1a0\x9dRO\x1f\x15\xa6\xe9\xbc\x13\x95\xab\xb7)\xa4\xa6\xa1\xcd\xf5l\xd8x\x7f9\xa3\x86\x08\x9d~\xbd57\x15F\x83\xaf\xf8g\x5c\x18\x06\xf5\xb7a\x1cY-\x84\xf8!=]H\xa9\xf9\xbd\xe0\xe3$\xa1\x0eZM\xa4w\xb7/E\xddi1\x03\xf1r\x9c\xddCR\xce\xdf\xd0\xaaYOK\xfd\xbaO\x99\xa7\x05b\x22\xa3\x1dn\x00A\xde\xf1\xf3\xa6\xadp\xef\xfa\xd3\xd2K;\x09d\x80\xd5\x96[M\xd6\xb9}2[\xd45\x0a\x91D\xdd\x07e\xd4a*$\xe4H\x87\xf1\x0d\xe2\xd4\xe5\x8d\xc9W\xa8\xc3\xe1yI\x99p\xff\xad\xa1\xe8\xb8\x999v\xe6\xc0\xdc\xa6\xaf\xf2\xb6\x1a\xd7_\x07\x17/\xd4\xd1=\xe7\xb3\xa3\xcaPT\xc1y8\x07%\xfc1\x9e\xa2\xfe\x87v\x0f\x97gu>\xdb(,\xa7"; +const DATA: &[i64] = &[ + 6563504930575804778, 3177554099846544556, -3586873697942480512, 2361978668621667923, + 3143167595286206242, -4351177767704791983, 6896557042998150768, 4462024892233517220, + 6694476164706603992, 4101034334834323206, -1527306566727742400, 7555882741782405923, + 2628576702768829495, -8553120736898077882, 321448934705618219, -7787914424610429464, + 2041445642416509779, -8227695319880516457, -1640881324843482458, -8405827794731797627, + 6307216144763488332, 7556799640693587259, -8081863479220607027, 4148363280372604554, + -7603254790459636143, -7504904752727461695, -6246154890355899968, -5156898052074988345, + -8537935471042677533, -7246647235376688349, 8779557412750126267, 8653500638442577520, + 5278382863123262139, 5783872159081604742, 8125287062915914468, 2242536959895356377, + 4005886220233485538, -1884410492438099899, 1417622956358486028, -497489745866433392, + -6808362001985207104, 1599533962231322857, 3108365940793816305, 4242306746708662266, + 4952142584625629079, 8415262979453050616, -1390194101948094400, 3044401595350323209, + -8513907614683677170, -763724270657036395, 2433910229198456491, -6462339150960227924, + 5524563739374899072, -186966673586328886, 4011842113907150331, -4625327361799148597, + 6047075845099054027, -2658748364270733797, -2860381304708279422, -8899565194812712952, + 7095984364360639673, -6560496321436620621, -8461599891579215954, -5195573135431067130, + 4652450378788876572, 1718813027742122072, 663918887826880444, 6670740316248663863, + 6700009143044041388, -1523277892154506242, -7059531187577599568, -4480764905626768907, + 2422236213071595233, 4699138634002865087, 6493539149331166441, 7518901355855126514, + -2301185110106020155, -3660719921603998966, 6994957500730603671, 6969343254888557997, + -4605760951839656378, -4786181076344625856, -1181021799306461272, -1728607980726133024, + 4687774949942350684, 1375392036798645113, 2003687933393780368, -8280928533627317129, + 6089981897628107340, -3904996279225979380, -8243053657024706553, 3215632556062991790, + 5425642782789424861, -4847519374283752531, -5932357948774481255, 8663785549291965158, + -1638563804489300877, 958315213891692337, -844076178070071666, 1575696692466204467, + -530838066006280056, -3698021980553122728, 1657002993440401555, 661824732220019475, + 4209888120689731341, -1678428057965027426, 4243337273520801682, 2339349826505601295, + 3824297886017649294, -5743761247566845926, -1834167233212158314, -3795330201249768373, + 1731111914295200492, 7107419468395208292, -5315112481049761547, 7650600002594848965, + -8041176673660496005, 8308615406494459745, 3539740125465153737, 5461340322324117263, + 3781913427618838536, -2475217834261265043, -3580114014176551551, 9057464874518875466, + -6030613707347919678, -1910512621755226626, -1505951656535084981, 5850876492391527467, + 8409677954752892479, -3801201717243607168, 222773118531975189, 8843321651534853339, + -291739419183623249, 874144551332925702, -5417503404995704713, -8312649901816962655, + -3598894922712143892, -3178378307410005736, -5765306100408702010, 9073037709094073235, + 5903235897841107084, -4992072185710169392, 1858835333224639960, -9197267406918520567, + 4223733763389771996, -3062522675646400310, -7929426045665863068, -3985800966171514281, + 5154513940699923775, 1487808311209105759, -7914929491080163388, -4497664465485773686, + 7235144852537941787, -2550289777439622965, -807509172314242817, 3843116287193798732, + -4596122870979365558, -4052722409919417182, 5156903507008819810, 8215065870912194262, + 4311375377346268620, -8274754757253188746, 163589086269419441, 3851905914730271938, + -3112306220568861233, -2907184818555586714, -1549874620446256143, 5093215075951161381, + -6473455805075171258, 5063471141738823749, -3457383507806458722, -4062839901070935980, + -1719965964080480325, 8426599513938923802, -8311039533847458504, -7796647229437216030, + -6781624469768972991, -1572464954625630082, 5506586508252141218, -5513435772749185823, + 5248411009075909495, 2258335812944206660, 8597559794487195679, 7377768646895780754, + 3492695033858227458, -7479669428445147915, 4191289746488745512, -7632347416963112105, + 7977751296373368968, 7365044695914860944, 719961330644640786, -8659202527989122927, + -2842298819444727445, 2390604585013608559, -6460369319564221084, -7428795047607723100, + -5880398093447761931, -3089889522231215013, 7512099414187555837, -5696468242041225670, + -8232688398398112446, -5003097262029703081, -1746685831097829678, 4423454089307812290, + 9103802734880117173, 2844597800879830746, -4603563975751782727, 8451963189055726564, + 3487238693652813426, 1299546876649551534, -6332757101524304903, 6519448239293388674, + -3325740999614551835, -3711773512431649171, -4258072470128833708, 6990763574012814336, + -7620627695188771117, -5703486363218595509, -7902228130660221912, 7398185314804331323, + -1238764366204277246, -8134255449861107836, 2525681217825377635, 1209032913852334193, + 2466271244689038797, -6966723311901822667, -9064472516725001854, -6898792668946222441, + 6098523488344631739, -4469909062566574999, 5952967173673330791, -7704606825800982705, + -734753427100682325, 614357866529740908, -8987472679502250339, -5191236293775329105, + 4405075157125241953, 2658215311620786269, 3438348388076752545, -7173406260431561403, + 6461206275074180061, 407462859018947407, -2431661850859724190, -3171959720300317711, + -7578009630841025582, -3144864399218029221, -3142096518101530059, 1004732939015301729, + -4348128917045521182, -6796495403559061023, -2539776794390054680, 531379790791487398, + -6650717971996725481, 2668163399826034890, 1114227485540495868, -6400696048289486953, +]; fn main() { } @@ -88,26 +152,26 @@ fn func0(a: i64, mut b: i64) -> i64 { ) */ fn func1(mut var0: i64, mut var1: i64) -> i64 { - let mut var2: i32 = 0; + let mut var2: usize = 0; let mut x = 0; 'label0: loop { println!("{var0} {var1} {var2}"); - x = func0(x, var0) ^ i64::from_le_bytes((&DATA[var2 as usize..var2 as usize + 8]).try_into().unwrap()); // TODO wrong parameter order? TODO address or index? + x = func0(x, var0) ^ DATA[var2]; - var2 += 8; - if var2 & 0b1111111000 != 0 { + var2 += 1; + if var2 & 127 != 0 { continue 'label0; } var0 = x; - if var0 as u64 <= var1 as u64{ + if var0 as u64 <= var1 as u64 { var1 += 1; } println!("b{var0} {var1} {var2}"); - if var2 & 0b11111111000 != 0 { + if var2 < 256 { var0 -= var1; x = 0; } else {