|
Do you have the physical version of this game? Good luck getting through all the levels! There's one in particular at the end only 3 of my steam friends have beaten.
|
# ¿ Nov 28, 2021 19:04 |
|
|
# ¿ Apr 26, 2024 02:07 |
|
Carbon dioxide posted:As it turns out, this is actually the best solution possible for this assignment. It's not, you can do it in 12 cycles. It's complicated. Glancing at my code it has something to do with storing two values of your order, using the CHEESE that's always there in the file, then transmitting the last two values. The rest is an exercise for the reader. You wouldn't hack your own body?
|
# ¿ Dec 24, 2021 19:03 |
|
You get used to it This is a lovely haiku This is so silly Quackles posted:There is a way to be very clever here: it turns out EXAs have built-in clamping functionality. If a number goes above 9999 or -9999, it is set to 9999 or -9999. Integer division also truncates, making a multiply/divide ideal for clamping. My best is 123/14/6 by adding and subtracting 9949 (and then subtracting and adding 9879) to every number. However, some of my wizard steam friends have scores of 36 cycles - that's about how fast you could simply feed numbers from one location to the other, so I imagine there's some kind of state-machine-esque solution here. Carbon dioxide posted:Interesting. I attempted this but couldn't make it work. You could start with an EXA that stores the first two values in X and T, then REPLs, write those two into a file, and meanwhile another EXA grabs the "Cheese" from file 280. But no matter what I tried it would take more than 13 cycles. OK, there's some really slick M register copying and timing going on here, but you do have to store "Cheese" from the original file first. code:
|
# ¿ Jan 1, 2022 01:57 |
|
GuavaMoment posted:My best is 123/14/6 by adding and subtracting 9949 (and then subtracting and adding 9879) to every number. Oh, I can get 96/50/6 by unrolling some loops, I guess I never went back to this one to try advanced concepts.
|
# ¿ Jan 1, 2022 02:01 |
|
Carbon dioxide posted:If there are further improvements possible, I don't know them. Unroll the loops! Instead of FJUMPing to the start of the loop you're going to have to TJUMP to an end condition (which is SEEK -1, VOID F). This will get you 27 cycles. You can save one more cycle by not having the line COPY M X and testing over M every time. One exa grabs file 300 and constantly sends PEANUTS over M. But how does that exa know when to stop? It doesn't. You have a third exa wait exactly 21 cycles and KILL your transmitting exa. Five cycles later you complete the level, worst case scenario. 26/45/3 There's a really good pun over the name Snaxnet but that should come into play in the next Snaxnet level.
|
# ¿ Jan 8, 2022 18:49 |
|
silentsnack posted:For whatever reason, the distribution of file lengths and position of the target line make the longest solution faster to find by jumping to the end and searching backwards, even with the added time to get the file pointer into the right position this one runs 55/50/4. Huh. I'd never done that, so I modified my fastest solution, and got 54 cycles. Then I realized I could again test over M every time, and that saved one more cycle. You have to perfectly time a kill command once again, but that exa has nothing but time to set that up. 53/41/7 code:
|
# ¿ Jan 16, 2022 04:11 |
|
Carbon dioxide posted:93/43/3 You can have one exa feeding in the row data: code:
code:
code:
code:
GuavaMoment fucked around with this message at 23:00 on Jan 22, 2022 |
# ¿ Jan 22, 2022 22:58 |
|
Carbon dioxide posted:
Also here you can just test for EOF instead of X, then change TJMP DONE to FJMP LOOP. Remove the ADDI and JUMP lines to get a 10 line solution.
|
# ¿ Jan 22, 2022 23:07 |
|
silentsnack posted:83/41/29 I've also got an 83 cycle solution now. Sending file 300 data over M saves a cycle from not having to wipe the file. I have a bunch of killer exas though and the solution is entirely dependent on exa ordering (which I found from trial and error) so the right exas get killed at the right times to save the last two cycles. It's clunky but it works. Carbon dioxide posted:Your suggestion is basically equivalent to the 10-line solution I show in my update, right? Yes, whoops, I missed it. :P
|
# ¿ Jan 23, 2022 09:24 |
|
My fastest solution is fundamentally identical to yours, I've just found a few cycles to squeeze out of some places, and I squoze one more cycle out from the seek 124 trick; I was previously seeking to the end and going backwards through the files. 89/70/7code:
Carbon dioxide posted:Part 12.5 - ПАСЬЯНС Russian is difficult, but Cyrillic is rather easy when you're dealing with nouns or english loanwords, it only took me like a week of vacation immersion to pick up the letter substitutions. П is the symbol for Pi, so is a P A is A C becomes S in Cyrillic Ь can pretty much be ignored, it does some kind of modifier to the previous letter I don't understand? Я can be replaced with "ya" H becomes N which makes this word PASYANS, and if you say that in a thick Russian accent you can see how it's supposed to be 'patience". GuavaMoment fucked around with this message at 18:42 on Feb 5, 2022 |
# ¿ Feb 5, 2022 18:40 |
|
silentsnack posted:And you don't necessarily have to find the correct host since the filename is unique. Oh yeah, completely remove that part of the code and the files in the wrong host die on their own. That saves 4 cycles.
|
# ¿ Feb 5, 2022 21:07 |
|
Carbon dioxide posted:And that's where I'll stop. The top percentile is 218 so let me know what further improvements are possible. My 216 solution is not elegant. Mostly identical to yours, but I run 21 lines of "Copy 75 F", until X < 2500, where I run 9 lines of "Copy 75 F" until X < 750, then keep alternating between copying 75 and testing every time until X is zero. Next assignment: I do something very similar. Your suggestion got UC Berkeley down to 84 cycles, thanks!
|
# ¿ Feb 12, 2022 22:53 |
|
So first off you can get a 12 line, 10 activity solution with this by combining some tricks:code:
For getting things fast, you need lots of loop unrolling, so I populate the exas differently that doesn't need a killer. It's a tiny bit slower to do that task but saves a bunch of lines, making things overall faster. Why giant loops of 21 and 8? No idea, ask me years ago when I did this by trial and error until it worked. Why do I test for #CASH > 29 even at a time when I know it's not? No idea, but it's faster! 1102/50/10 code:
|
# ¿ Feb 19, 2022 18:10 |
|
Carbon dioxide posted:The top percentile value is 24 so further improvement is possible but I'm not sure what. 23 Lines by having a main EXA send out AVN and SAN pairs. In pairs, the first value (AVN) is -70, then two 40 values (SAN then AVN), then -70 until you're done. AVN and SAN exas die graciously by trying to link to a non-existent node or just by running out of code. And a swizzle for style points. code:
Late edit: As pointed out a few posts below, change REPL SAN and JUMP COPY lines with REPL COPY to save one more line. GuavaMoment fucked around with this message at 22:54 on Feb 26, 2022 |
# ¿ Feb 26, 2022 20:43 |
|
This level is pretty straightforward without any neat tricks.code:
code:
|
# ¿ Mar 5, 2022 21:08 |
|
Hacker battles are a neat idea, buh ehh.....it's seemingly impossible to make a robust solution. It's like trying to optimize rock paper scissors, you're always going to be vulnerable to one tactic when using another.
|
# ¿ Mar 12, 2022 18:16 |
|
Huh, you know I tried searching backwards for the keywords at one point since I noticed the same issue - one test has all the keywords near the end. It didn't work out for me. I'm shocked it works at all, the search is 50% slower due to the extra SEEK command.
|
# ¿ Mar 12, 2022 18:27 |
|
Start at 967 in X, make a new exa, subtract one from X and make another new exa forever. The new exa inputs the code stored in X and attempts to go into the secret node. It either makes it or fails and dies. Nothing terribly fancy, 2880/28/10 You can make a 19 line solution, again no real tricks... code:
Edit: You have the bog witch's approval, complete the rite of passage! GuavaMoment fucked around with this message at 18:32 on Mar 19, 2022 |
# ¿ Mar 19, 2022 18:28 |
|
Carbon dioxide posted:By the way I didn't want to bring it up in the update but I'm wondering how you managed to count down from here while silentsnack's solutions hardcode a check up till 990. Or do those do the digits in different orders? No idea. Spacechem has different properties on different platforms, so maybe he's not on windows?
|
# ¿ Mar 27, 2022 00:20 |
|
Ok, I see I swizzle in the order 1, 3, 2 from 976, so I input 796, 696, 596....096, 995, 895... Why do I do this? I don't know, but it works. I guess I'm a real computer engineer!
|
# ¿ Mar 27, 2022 01:38 |
|
My fastest was 251 cycles, so you've done better. My lowest size was 31 but was functionally identical to your 26 line solution, it only required a tiny bit of tweaking. I was still checking if my exas were in the correct place instead of YOLOing trying to grab non-existent files. So I have nothing to add. Never ask an indie musician why their parents names are blue on wikipedia.
|
# ¿ Apr 2, 2022 19:18 |
|
silentsnack posted:
Huh? The heck is this for? code:
|
# ¿ Apr 2, 2022 23:12 |
|
Carbon dioxide posted:Since I spent a lot of time getting the cycles down to 122, I'll leave the low size optimization to the threads. Seeking back 6 and copying over the last six entries is a good trick and that got me down to 122 also. I only had a 32 line solution so thanks for the help on that one too silentsnack! I'm really looking forward to the next level as I liked it a lot, and spent a lot of time on it. I'm still chasing down one cycle I know is possible, so maybe you all can help?
|
# ¿ Apr 10, 2022 03:48 |
|
Carbon dioxide posted:This clocks in at 47/27/20. I'll leave the further improvement to the top percentile size of 25 lines to the threads. 25 lines? How about 18. code:
As for speed, 24/46/31: code:
|
# ¿ Apr 18, 2022 16:52 |
|
silentsnack posted:"depends on which cycle you mean" and/or "maybe you can figure the rest of this mess out" because 23 is feasible with a bit of effort and paying attention to order of operations, so i'm blaming you for this one: I'm not picky, it could have been any cycle. If one exa is filling the map it's the same speed to read and wipe the file, or travel first and have another exa transmit over M. But I see now if you have two exas receiving M data, one can fill the three eastern columns and one can then fill the first north column, and this is one cycle faster. There is an order of operation issue to make the three column exa get the M data first, but this just squeaks it out. 23/75/30 code:
|
# ¿ Apr 18, 2022 17:45 |
|
Carbon dioxide posted:
Very easy to tweak this to save two cycles - have XA do a file copy of 7 length instead of 14, replicate an exa to do it again, and transfer 7 digits over at a time. It's a little faster because now you have two exas who can read and copy values at the same time instead of one doing everything. 35/56/21 I have a 24 line solution that has two exas cycling between the nodes on the left and right, transmitting (or receiving) one value before moving to the next node. 155/24/115 silentsnack continues to otherwise kick my rear end.
|
# ¿ Apr 30, 2022 22:54 |
|
silentsnack posted:TBF quite a few times you've posted solutions better optimized than mine, in one stat or another, and it might not have been obvious but in going back through the game I've used some tricks derived from your posts, which I probably never would have thought up on my own. I completely understand. When I did the Spacechem LP, often times rather average middle of the pack solutions had a really clever idea inside it, just not perfectly optimized. It was always fun to find those and show them off. This level was one I knew there were way better solutions, I just couldn't get there. I'm feeling pretty good about my solutions for the next level, even before I go off one more time to see if I can improve (first I have to figure out what the hell I did since I never annotate anything).
|
# ¿ May 1, 2022 02:30 |
|
Major speed tips - the files are always multiples of 12, so unroll files into 12 long loops. I transmit the files, then go back through and replace the SSEA code. There's a third timing exa IN LOCAL MODE that exas in the buffer must communicate with first so that long files get done before short files.code:
Your low line was better than mine, I never tried going back through a file as I'm writing it to check for the region code.
|
# ¿ May 7, 2022 21:32 |
|
The only way I found to get 100000 hackmatch points in a reasonable timeframe was to download a lua file (I think) that played for you and ran it overnight. Essentially hacking the hacking game to win a different hacking game. I found it appropriate.
|
# ¿ May 17, 2022 04:27 |
|
Carbon dioxide posted:So, I will stop here and wait to see how you got a better cycle count than 25 and a smaller size than 28. 18 cycles! code:
My lowest size is 25, and I know 21 is possible. code:
|
# ¿ May 21, 2022 21:50 |
|
These two lines: DIVI 0 T #POWR SUBI 1 T #POWR oooh that's nice, that alone might save me lines and cycles, it's very elegant. The first crashes the exa when it's in the wrong place, and the latter does nothing when in the wrong place. I love it!
|
# ¿ May 26, 2022 00:03 |
|
Yeah, we're getting to the point where optimization is really really hard. My lowest line is worse than yours at 42 (it significantly uses MODE for what seems like the first time), but I can save a bunch of cycles. I send the score results twice, one to do the testing directly, and again to save/void the data if needed. Probably not optimal but ehhhh I guess it works. 86/47/3. 75 cycles is possible! Hmmm, 11 cycles off, and I send about...11 values over M that I theoretically don't need...code:
|
# ¿ Jun 4, 2022 16:53 |
|
Alright here we go! Speed time. 28/85/33code:
Now for low line - 1623/20/25. So we need each exa to go into rooms numbered around 800, and then grab files in the 200s, right? Start at 806 and count down attempting both! Enter every room from from 0 to 806, grab every file from 0 to 806. After thousands upon thousands of exas die, the countdown reaches 0 and die for good. Weapons have a number in the second file spot, so those get excluded. code:
|
# ¿ Jun 12, 2022 18:05 |
|
Carbon dioxide posted:I got it! I have done something quite different than you, and I still need to optimize a bit. I'll assume you'll want to wait until you post your solution for me to post mine. I'm around 85 lines right now, but about 4-5x slower.
|
# ¿ Jun 14, 2022 06:15 |
|
I see you at LINES 100 and I thought the amount of lines was going to be the limiting factor in the solution, so I used my really low line filegrabbing solution as the base. 1823/81/24 There's a LOT of timewasting to get everything synced up. I still try to grab a LOT of non-existent files which wastes more time. Lower any of the timewasting values by even 1 and something breaks.code:
|
# ¿ Jun 15, 2022 05:07 |
|
Carbon dioxide posted:Also, the TJMP MANY is just a convenient way to make those EXAs that grabbed a weapon harmless. It may have been said before, but there are just so many times when you want something to die after a conditional, the first thing I do is look over the code to see if jumping somewhere completely unrelated kills the exa in that case. There almost always is one. I don't have good solutions for this one. I won't have good ones for a while it seems, the difficulty is ramping up.
|
# ¿ Jun 19, 2022 15:52 |
|
I had a 60 cycle solution I was playing with last week, but it's gone? I must have done something and accidentally deleted it. I remade at least it but with more lines somehow? 50 cycles is possible. 60/59/8 code:
|
# ¿ Jun 25, 2022 15:35 |
|
852/77/9 The "Area code" (472) is always the same so you can skip some of the digits of phone numbers. That's the only serious change I think, it's a pretty straightforward challenge. code:
|
# ¿ Jul 9, 2022 17:40 |
|
silentsnack posted:thought about that but didn't manage to get anywhere with it Oh well then allow me! code:
685/76/21 Edit: 676/67/21 cycles by deleting the SUCCESS branch and the REPL SUCCESS line, and replacing XB with this: code:
GuavaMoment fucked around with this message at 04:32 on Jul 10, 2022 |
# ¿ Jul 10, 2022 04:14 |
|
|
# ¿ Apr 26, 2024 02:07 |
|
After receiving a signal over M, create 5 exas, one for each centrifuge. Test to see if your centrifuge has the highest pressure, otherwise die. Yes, there's only room for 4 exas, but one will die soon enough for the 5th to enter the testing room. Then go turn off your centrifuge and send a done signal. 136/97/22. My low line is, uh, 86, so I don't think I've ever tried very hard at making one. 44 is the best low line among my friends, so good job on that! For all you wizards, get a solution down to 54 cycles. Somehow.code:
https://www.youtube.com/watch?v=U_7CGl6VWaQ
|
# ¿ Jul 16, 2022 19:51 |