Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
GuavaMoment
Aug 13, 2006

YouTube dude

You need to get some friends. ;)

I have a 27 line solution for this one and boy would I like a hint on how to cut 9 lines from it.

Adbot
ADBOT LOVES YOU

Llamadeus
Dec 20, 2005
gtw123 has done yet another thing: https://www.youtube.com/watch?v=m7vhLmHnXMc

Cirofren
Jun 13, 2005


Pillbug

what the gently caress

Tekopo
Oct 24, 2008

When you see it, you'll shit yourself.


Eagerly awaiting for someone to code EXAPunks IN EXAPunks

mystes
May 31, 2006

Is there any requirement for "leave no trace" other than having your exas terminate and not modifying files or leaving new files outside your host?

I started playing through this and I got to the "Xtreme League Baseball" level and I am producing the correct output file (since the box for "create the specified file in your host" is checked), all my exas terminate, and I haven't written to any other files, but for some reason it doesn't think that I have left no trace.

Chev
Jul 19, 2010
Switchblade Switcharoo
Do you actually complete all other objectives? IIRC it's a prerequisite to leaving no traces.

mystes
May 31, 2006

Chev posted:

Do you actually complete all other objectives? IIRC it's a prerequisite to leaving no traces.
There are only two objectives: create the file and leave no trace and I have created the file.

Edit: The only other thing I can think is that I'm somehow modifying a file accidentally but I shouldn't have any instructions that modify any files other than the new file I create.

Here's my code:
XA: receives calculated result and player name; keeps track of current maximum score and writes the name of the corresponding player to a new file
code:
MAKE
MARK LOOP
COPY M T
TEST T > X
TJMP MAX
COPY M T
FJMP TERM
JUMP LOOP
MARK MAX
COPY T X
COPY M F
SEEK -1
JUMP LOOP
MARK TERM
XB: gets the player ids from file 199 and passes them to XC. Then it receives the calculated score and player name from XC (in local mode) and sends them back to XA (in global mode)
code:
LINK 800
GRAB 199
MARK LOOP
TEST EOF
TJMP TERM
COPY F M
COPY M X
COPY M T
MODE
COPY T M
COPY X M
MODE
JUMP LOOP
MARK TERM
COPY 0 M
MODE
COPY 0 M
COPY 0 M
XC: gets the player ids from XB, reads the player name / calculates the score, and sends them to XB
code:
LINK 800
MARK LOOP
COPY M T
FJMP TERM
GRAB T
COPY F M
ADDI F F X
ADDI F X X
DIVI X 3 X
MULI F F T
DIVI T F T
ADDI X T X
SUBI F F T
DROP
MULI T 20 T
ADDI X T X
COPY X M
JUMP LOOP
MARK TERM

mystes fucked around with this message at 20:11 on Sep 9, 2018

HenryEx
Mar 25, 2009

...your cybernetic implants, the only beauty in that meat you call "a body"...
Grimey Drawer
Can't really tell you what's wrong in regards to trace because the program you posted above doesn't even complete, it hangs on cycle ~27 when all three exas wait for a COPY M T instruction at the same time.

edit: maybe one of your exas was manually set to local mode before runtime?

edit2: yeah on all-global XA catches the name from XC which messes up the flow. The program at least executes if i start XB and XC in local mode, but the first sim never completes because your program fetches the wrong name.

HenryEx fucked around with this message at 20:23 on Sep 9, 2018

mystes
May 31, 2006

HenryEx posted:

Can't really tell you what's wrong in regards to trace because the program you posted above doesn't even complete, it hangs on cycle ~27 when all three exas wait for a COPY M T instruction at the same time.

edit: maybe one of your exas was manually set to local mode before runtime?
Yeah, XB and XC are set to local mode.

HenryEx
Mar 25, 2009

...your cybernetic implants, the only beauty in that meat you call "a body"...
Grimey Drawer
Quoted for visibility

HenryEx posted:

edit2: yeah on all-global XA catches the name from XC which messes up the flow. The program at least executes if i start XB and XC in local mode, but the first sim never completes because your program fetches the wrong name.

Are you sure it actually completes properly?

HenryEx
Mar 25, 2009

...your cybernetic implants, the only beauty in that meat you call "a body"...
Grimey Drawer
Oh yeah i know what your problem is: T permanence. You think you can save both the previous received number in T and the current number in X and compare them against each other, but that only works once, since your previous value gets overwritten once you compare them. Which means you always test the current value against 1, here:

code:
COPY M T
TEST T > X
So you always end up with the last name you test.

SupSuper
Apr 8, 2009

At the Heart of the city is an Alien horror, so vile and so powerful that not even death can claim it.

mystes posted:

Is there any requirement for "leave no trace" other than having your exas terminate and not modifying files or leaving new files outside your host?

I started playing through this and I got to the "Xtreme League Baseball" level and I am producing the correct output file (since the box for "create the specified file in your host" is checked), all my exas terminate, and I haven't written to any other files, but for some reason it doesn't think that I have left no trace.
Are you accidentally moving host files? If you hold "show goal" you should be able to compare with your outcome.

mystes
May 31, 2006

HenryEx posted:

Oh yeah i know what your problem is: T permanence. You think you can save both the previous received number in T and the current number in X and compare them against each other, but that only works once, since your previous value gets overwritten once you compare them. Which means you always test the current value against 1, here:

code:
COPY M T
TEST T > X
So you always end up with the last name you test.
Argh thanks. I assumed that the file was correct because the "create the specified file in your host" box was checked so I didn't look to closely at what my code was actually doing. I guess that just meant that I had dropped a file there, not that it was necessarily correct.

Edit: Yeah I fixed it and it works now. I probably should have made sure the file was actually correct before posting something dumb.

mystes fucked around with this message at 20:51 on Sep 9, 2018

Samopsa
Nov 9, 2009

Krijgt geen speciaal kerstdiner!
yesss more content
https://twitter.com/zachtronics/status/1041802402259554306

Sax Solo
Feb 18, 2011



Oh yeah there's probably an SA EXAPUNKS thread, I realized.

Zach just lowered a whole bunch of size limits and reset the leaderboards so time to check out the damage..

Sax Solo fucked around with this message at 15:53 on Feb 14, 2019

Sax Solo
Feb 18, 2011



Okay I feel trolled by Zach for what I had to do to match Touch Fuzzy here:

HINT: common pizza topping

GuavaMoment
Aug 13, 2006

YouTube dude

Sax Solo posted:

Okay I feel trolled by Zach for what I had to do to match Touch Fuzzy here:

HINT: common pizza topping

The third one, cheese. I assume? Not sure how that helps yet...

I had a cool thing happen doing the second modem puzzle where you're just wardialing into 8 phones. I was able to watch the top percentile drop each time I improved my solution to match and beat the top percent. I guess not many people are making it that far?

Sillybones
Aug 10, 2013

go away,
spooky skeleton,
go away
All these games need a way to click on one histogram to show the other two relative to your score in that. This will bother me eternally.

Olpainless
Jun 30, 2003
... Insert something brilliantly witty here.
Well I accidentally wrote a sort algorithm with 2 EXAs I didn't even need for one of the puzzles, Digital Library Project, to make sure they go in the right order (though I think I will need it for a lowest-possible-activity solution?). I really don't know how some of the cycle solutions are even possible, mind. (Say, the 4th tutorial in about 100 cycles, i can't figure out any way to make a loop run that fast!)

This game is so goddamn fun though.

Oh, and the hacker battles are delicious.

Olpainless fucked around with this message at 14:39 on Sep 26, 2018

GotLag
Jul 17, 2005

食べちゃダメだよ
What's your Steam profile?

Edit: never mind, found you in the group

Olpainless
Jun 30, 2003
... Insert something brilliantly witty here.
Well I've finished the main campaign now - I'm still utterly mystified as to some of the cycle counts on some of these (EG: sub 300 for Exa Blaster 3, HOW? The file length changes each time so you can't realistically unroll loops afaik, and just sending that data across 8 times is more than 300 cycles)

Final mission is really enjoyable, US Government is probably the hardest mission in the game to suss out, Unknown Network 2 is a breath of fresh air in the final sprint.

Sax Solo
Feb 18, 2011



Olpainless posted:

(EG: sub 300 for Exa Blaster 3, HOW?)

How fast can you make eight copies of a file?

Olpainless
Jun 30, 2003
... Insert something brilliantly witty here.

Sax Solo posted:

How fast can you make eight copies of a file?

If it's variable length? Approx 3 cycles per string, plus the initialisation and finalising cycle cost. It doesn't seem amicable to just a bunch of Copy F M commands because of the variable length.

Edit: I've got it down to 365 by padding the file to be at least 12 characters, just copying 12 across, and then later removing numeric values, but I'm struggling to see where else I can save on this. Can gif/code on request.

Double edit: Even on this I think I can improve, I've got some stuff going on I don't think I need to.

Triple edit: 350 on this approach. (Then 326 with an improvement to the sync loop)

Fourth edit: 272! Partially unrolled the write to data loop, the first 9 characters you can just stream - 2586! ( then did some manual unroll and optimising the last 3 checks then altering the counter logic to exit earlier)

I GET THIS NOW

EDIT: Ahahahahaha 244 and better than top percentile (you only need to copy the file 7 times)

Olpainless fucked around with this message at 16:28 on Oct 24, 2018

Jabor
Jul 16, 2010

#1 Loser at SpaceChem

Olpainless posted:

If it's variable length? Approx 3 cycles per string, plus the initialisation and finalising cycle cost. It doesn't seem amicable to just a bunch of Copy F M commands because of the variable length.

That sounds about right for making one copy of a file. The question was, how fast can you make eight copies?

Olpainless
Jun 30, 2003
... Insert something brilliantly witty here.

Jabor posted:

That sounds about right for making one copy of a file. The question was, how fast can you make eight copies?

... I think you saying this has just given me some different insight here. I'll put something together.

Reveilled
Apr 19, 2007

Take up your rifles
I'm on the satellite mission, trying to encrypt a signal. I have to take two numbers, add them together and output them, and if the number is bigger than 9999, roll over to 0. But I can't store any number larger than 9999, so I can't modulo 10000 as I'd want to do. Right now the only way I can think of doing this is summing the values, checking if the result is 9999, stepping back and subtracting 5000 from both values and then doing the sum again. Probably having then to double check the value isn't -1 if the two original values summed to exactly 9999 in the event a later test run throws that at me.

OR, swizzle the values, sum the digits individually, and then truncate any oversized values before concatenating them back together


I know that will work but it feels like such a godawful kludge for just doing MODI 10k that I feel like there must be a simple way to do this I'm missing.

ymgve
Jan 2, 2004


:dukedog:
Offensive Clock
My method, which IMO is slightly better: Take value A which is in range [0, 9999], subtract 9999, and the new value is now in the range [-9999, 0]. Add value B. This will never overflow. If the result is 0 or below, add 9999, otherwise subtract 1. You now have A + B mod 10000.

Reveilled
Apr 19, 2007

Take up your rifles

ymgve posted:

My method, which IMO is slightly better: Take value A which is in range [0, 9999], subtract 9999, and the new value is now in the range [-9999, 0]. Add value B. This will never overflow. If the result is 0 or below, add 9999, otherwise subtract 1. You now have A + B mod 10000.

That is much better since it doesn't require multiple reads of the file, thank you.

Butter Activities
May 4, 2018

HenryEx posted:

Oh yeah i know what your problem is: T permanence.

This drove me up a loving wall trying to figure out on the first pizza mission. I wrote a whole one shot thing and spent way too long trying to figure out why it didn't work until I realized this.

So far it's still an awesome game though, even though I find the "zine" tutorial thing kinda inadequate for teaching the basics of how exas work.

Tetraptous
Nov 11, 2004

Dynamic instability during transition.
Just picked this up (finally) in the holiday sale; no one I know is playing it, so I just spammed a bunch of you on Steam to add to my histograms. Just beat the library level, so far I'm finding it easier than Shenzhen or TIS-100.

https://steamcommunity.com/id/tetraptous/

Tiny Timbs
Sep 6, 2008

Can someone tell me how to gracefully check when an Exa is done writing to a file so I can have the Exa doing the reading stop and move on? For the first modem mission I have the writer copy a value to M when it's done and have the reader TEST MRD at the beginning of its loop so when that becomes true it copies M to X in order to allow the writer to die. The last step is necessary because TEST MRD on its own doesn't clear M. I feel like there's got to be a better way!

Here's code I'm not proud of that gets the job done:

XA
code:
;GRAB NUMBERS & SEND
GRAB 301
MARK LOOP
COPY F M
TEST EOF
FJMP LOOP
XB
code:
GRAB 300
LINK 800

;DIAL NUMBERS
MARK LOOP
@REP 11
COPY M #DIAL
@END

;ENTER STATION
LINK 800

;SET LOCAL&MAKE WRITER
MODE
REPL DROPOFF

;READ SONG TO WRITER
MARK LOOP2
NOOP
NOOP
TEST MRD
TJMP BREAK1
COPY F M
COPY F M
SEEK -2
FJMP LOOP2

MARK BREAK1
;READ M, ALLOW DEATH
COPY M X

;BACK OUT & GO AGAIN
MODE
LINK -1
COPY -1 #DIAL
TEST MRD
TJMP LOOP
WIPE
HALT

;WRITE SONG NAME
MARK DROPOFF
GRAB 200
MARK LOOP3
COPY M F
COPY M F
TEST EOF
FJMP LOOP3

;REQUEST DEATH
COPY 999 M
HALT

Tiny Timbs fucked around with this message at 03:50 on Jan 8, 2019

Jabor
Jul 16, 2010

#1 Loser at SpaceChem
There are a bunch of different ways you can do it.

- have one exa that loops forever, that is then KILLed by the other exa when the job is done
- have one exa count how many iterations are needed first, and send that to the other exa so that it can use a counted loop
- have one exa tell the other exa after every iteration whether it's done yet (e.g. send 0 when done, or 1 if it needs to keep going)

Usually the first one is the most "elegant" in terms of cycles and code size, but it's bad for your activity score.

Sometimes you can do a clever trick, for example if you're copying numbers into a file, instead of COPY M F you can use ADDI M 0 F, and then the sending exa can write a string instead of a number to "kill" the receiver without actually using a KILL command.

Tiny Timbs
Sep 6, 2008

Thanks! I might try to rewrite it to implement your 3rd option since I'm already half doing it. I really don't like TEST MRD because it forces me to use NOOPs to wait for the other Exa's loop to cycle around and that displeases me.

Edit: Or I could have the writer TEST EOF, kill the reader, restart the loop, and become the next reader...

Tiny Timbs fucked around with this message at 04:07 on Jan 8, 2019

Bobulus
Jan 28, 2007

Hello, all. Picked up this game in late December, have been slowly playing through it. I'm on the post-epilogue tasks now, and wow are some of these are really twisting my brain! I've got 5 of 8 done so far, and a couple of those are real slop, hitting the 150 command limit exactly or running into the 10,000s of cycles.

My Steam-ID is Bobulus, if anyone is still playing and wants to add me.
https://steamcommunity.com/id/bobulus

Right now, I'm on the airport one, and I thought I had a fairly elegant solution mapped out, but it required each repl clone creating a file, dropping it, and then picking it back up and unfortunately that broke my code, because I forgot about the file number increment. D'oh! I'll probably have to fix it by never actually dropping the file, and making a new replicate EXA to do the job instead.

Bobulus fucked around with this message at 23:19 on Jan 24, 2019

AgentCow007
May 20, 2004
TITLE TEXT
Sup [fellow] nerds

Zach is kickstarting a book detailing the design processes for his games... it was an insta-buy for me.

https://www.kickstarter.com/projects/1812249267/zach-like

Subjunctive
Sep 12, 2006

✨sparkle and shine✨

AgentCow007 posted:

Sup [fellow] nerds

Zach is kickstarting a book detailing the design processes for his games... it was an insta-buy for me.

https://www.kickstarter.com/projects/1812249267/zach-like

$30 USD to ship a paperback to Canada. That’s a yikes.

Jeffrey of YOSPOS
Dec 22, 2005

GET LOSE, YOU CAN'T COMPARE WITH MY POWERS

AgentCow007 posted:

Sup [fellow] nerds

Zach is kickstarting a book detailing the design processes for his games... it was an insta-buy for me.

https://www.kickstarter.com/projects/1812249267/zach-like
Yeah I instabacked this.

Black Griffon
Mar 12, 2005

Now, in the quantum moment before the closure, when all become one. One moment left. One point of space and time.

I know who you are. You are destiny.


hello friends of zach, I look forward to getting my annual zachtronics migraine, and I love to suffer together

https://steamcommunity.com/id/marchidian/

I hope I'm not the only one who occasionally has to go through my solution step by step just to marvel at the fact that I'm not as loving dumb as I convince myself that I am

Deathlove
Feb 20, 2003

Pillbug

Black Griffon posted:

hello friends of zach, I look forward to getting my annual zachtronics migraine, and I love to suffer together

https://steamcommunity.com/id/marchidian/

I hope I'm not the only one who occasionally has to go through my solution step by step just to marvel at the fact that I'm not as loving dumb as I convince myself that I am

EXAPUNKS has been a great game to remind myself that yes, I was once a programmer in another life, and when I complete a job, the histograms come up to remind me that yes, I was never a very good one.

Adbot
ADBOT LOVES YOU

ymgve
Jan 2, 2004


:dukedog:
Offensive Clock
Someone is not a good programmer just because they get on top of the Exapunks scoreboards. Rather the contrary, if the hacks required for size/speed domination was used in a real programming job, your code reviewer would murder you with a rusty spoon.

Collorary to this is that being on the bottom of the scoreboards does not make you a bad programmer.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply