TIS-100 | Programming puzzle game from SpaceChem dev & GAF's 77th Best GOTY 2015

I feel this way about most of the early levels. Probably 1/3 of my total playtime was the game sitting with Signal Multiplier open and me occasionally going over to it and trying some new way to beat Cyan's score (I eventually did, and our solutions are nothing alike, but I did only get mine after looking at his). It's great how easy it is to try something radically different from what you were doing before.

The later ones definitely feel tedious to me in the same way that later Spacechem levels did, though. Sequence Sorter is probably the best example of one that I really have no desire to try to optimize or rework. For a bunch of those I basically just went through and got a solution, and then maybe I parallelized it for some easy cycle gains, before moving on. I've had the most fun trying to optimize some of the really simple levels. Really happy with my 127 on Differential Converter (#3) or my 232 on Comparator (#4), for example, but those are the ones where it's fun for me to keep trying new kinds of solutions. I like the later ones too, but the appeal is in doing them once and not in going back and doing them over and over to minimize cycles.
Yeah, the final row (I've completed everything previous to that now) does seem like it contains some rather heavy stuff.

Anyway, I'm exceedingly curious about how your image test pattern programs work, especially #2. I really thought the one I just implemented was rather close to optimal (given that the output node has 0% idle time according to the game and spends what I considered the maximum possible amount of time just pushing "pixels"), and it looks good enough compared to everyone else on my list, but yours still saves over 100 cycles (almost 10%!).

(Note: "exceedingly curious" as in "this won't let me sleep", not as in "tell me". Please don't tell me ;))

In terms of optimization, my first major breakthrough idea to get good scores on the cycles metric was realizing that you can (and should) use
loop unrolling
. However, some things do seem completely implausible. Like the images, or the 140 cycle pattern detector.
 
I remember reading about this game and being intrigued. How would this be for someone with very little coding knowledge?

The manual that comes with the game tells you everything you need to know about the instruction set. Having experience with actual assembly certainly helps to hit the ground running but it's simple enough for a non-programmer to learn and play the game.
 
We're gonna have to have an intervention for Durante soon. :p
I have a forced intervention now, given that I need to start working again tomorrow.

It's kind of a good thing that I started playing this on the last few days of my vacation rather than the beginning, otherwise I probably wouldn't have done anything else at all.
 
After my leaderboard exploded with people, i'm going through my old missions and optimize the code for scores :)
Guys how are You going below 204 cycles mark in Signal Multiplexer? I've optimized it by 60 cycles (i had 264 earlier i think), but have no idea how to go below that
Am i missing some kind of trick? Like for example more efficient way of using jumps? Or You just used all available nods and duplicated the logic?
My solution:
 
After my leaderboard exploded with people, i'm going through my old missions and optimize the code for scores :)
Guys how are You going below 204 cycles mark in Signal Multiplexer? I've optimized it by 60 cycles (i had 264 earlier i think), but have no idea how to go below that
Am i missing some kind of trick? Like for example more efficient way of using jumps? Or You just used all available nods and duplicated the logic?
My solution:

Without looking at actually restructuring your answer, look at Node 7 (second row, IN.S column):
ADD LEFT
ADD RIGHT
MOV ACC, DOWN
MOV 0, ACC

Why didn't you use:
MOV LEFT, ACC
ADD RIGHT
MOV ACC, DOWN
 
After my leaderboard exploded with people, i'm going through my old missions and optimize the code for scores :)
Guys how are You going below 204 cycles mark in Signal Multiplexer? I've optimized it by 60 cycles (i had 264 earlier i think), but have no idea how to go below that
Am i missing some kind of trick? Like for example more efficient way of using jumps? Or You just used all available nods and duplicated the logic?
My solution:

This is mostly just general strategic considerations but I'm going to spoiler tag them just in case someone wants to be trying to figure everything out for themselves:

Parallelism is huge for many of the tasks where you're given many more nodes than you need. You're only using 4 real nodes to do work there. You can make a solution parallel in completely different nodes (maybe having the input node send half of the inputs to the left and half to the right) or parallel in the same nodes (passing every other input down and then doing work in the input node on the other half and work in the next node on the first half). You can also set up an assembly line, breaking up your task into several subtasks and doing subtask 3 on input 1 while doing subtask 2 on input 2 and subtask 1 on input 3.

You can often deduce properties of a solution given that it has fewer than some number of cycles. Tasks commonly have 39 inputs. Your IN.S node takes 5 cycles to handle one input (everything is one cycle except for instructions that send something to another node which take two cycles minimum). So even if your other nodes are just moving IN.S to output you're going to be taking 195 + maybe 8 cycles. You're not getting below 200 unless you can handle each input in fewer than 5 cycles on average.
 
It's kind of a good thing that I started playing this on the last few days of my vacation rather than the beginning, otherwise I probably wouldn't have done anything else at all.

This is basically what happened to the mod staff on Thanksgiving break, a bunch of us spent pretty much the whole last 2-3 days just fighting back and forth on the leaderboards.

The later ones definitely feel tedious to me in the same way that later Spacechem levels did, though.

Yeah, I think TIS-100 is better about this since I didn't really feel this at all until the last row, but it's certainly still an issue.
 
I just added everyone in the thread who posted profiles. Having something to compare against might give me more inspiration to do more than just get solutions =p

This games cool.
 
I tried this game for 0.9 hour last night, before a friend asked me to play Chivalry with him, and made a staggering revelation about myself.

Apparently, I can't differentiate between LEFT and RIGHT.

First thing at work today I did was printing out the manual.

I have a feeling the big bosses won't be too pleased.
 
The game is afoot!

Data%2BQuoting%2BThe%2BGame%2Bis%2BAfoot.png

Signal Pattern Detector


tis100nuomb.png


Feel free to add me, although I expect Durante might be competition enough. I need to go back and optimize several solutions that were not very efficient.
 
This inspired me to clean mine up. Got it down to 177 by removing an extra node that I didn't need, and adding a cheat initial zero. Then down to 160 by changing a poorly thought-out use of JEZ and JMP to just JNZ. Not seeing much more tightening though, which suggests Gotchaye might just be doing something totally different.

...I really need to go to bed.

You guys doing this one made me curious so I loaded it up after having not played for a month or two. This one required I skip one before it. And I ended up finally doing it and did okay! My one attempt is at 214/4/16 and considering my main goal was to keep it down to four nodes since I saw others were doing so I'm fairly happy with the results. It's the first time I've used
JRO
and I realized how useful it is now. In fact I spent around 15 minutes toying with the program before swapping over to that command and then wrote something up in a couple minutes that passed on the first try. At this point it's just cleaning it up a little and being better optimized.

I did wonder if people were getting the top results for each challenge with a single program and couldn't figure out how. Makes sense to top each one you'd want to possibly use three different resulting programs (which also explains why each one has three save slots).

I've mainly done some C++ programming in years past for school so nothing really close to assembly. This has required me to think about how I'd do things in a different way with the limitations. Human Resource Machine also made me tweak how my mind works through loops and such but this one really causes me to struggle.
 
What's more important to you guys? Lower cycles or lower node count?

Lower Cycles is harder, much harder. Lowest node is generally get go solution for me with the lowest instruction count.

---
@Cyan
Thanks, i have not thought about that yesterday, but it was after 11pm when i code that ;p

@Gotchaye
Thanks :)
 
I sit here at work and all I can think of is TIS 100.

I've seen You playing it like 30 minutes ago :P

---
My solution for Sequence Reverser makes me feel dirty. I clearly overthought it.
Yeah, i have a lot of dirty solutions for later stages of the game, because i just passed them and moved to the next one. Without leaderboards i didnt have a motivation, but now i have ;p
 
I would have such a good solution for the sequence counter if you could add acc to bak... now I don't have a solution unless going for a 7th node. I'm stupid :(
 
Anyone trying to get the HIGHEST number of cycles on the first "Self Test Diagnostic" challenge? There was a steam achievement to get more than 100,000 cycles which was pretty easy but got me thinking how high I could go...

I have got 117,195,043 on my current attempt although it hasn't completed yet. It's on the third pass and been running for 16 hours so far on fast! I got it running in the background on my laptop at work, had to dodge a question off a colleague asking why my computer was running hot with the fan going!

TBH I am not quite sure even why I am trying to do this...
 
Now thanks to y'all I enter Steam and there's always at least a couple of friends playing it. Uggghhh, I wish I had more time to put into it!
 
I need to get back in this game. I got busy in early December and stopped playing. Looks like I got my ass kicked since then.

Added everyone who added me.

How many of you are CS majors or work in a related field? I'm taking some CS night classes to augment my main qualifications (science, teaching), but I'm still a beginner.
 
I have a PhD in CS (which already identifies me as either obsessive, a romanticist, a fool, or all 3).

Edit:
I tried at least 4 ideas before arriving at the above by the way. 2 were > 300 cycles (so worse than the very first thing I implemented), the other 2 in the ~170 range I already got with an extremely simple approach, but infinitely more complicated.
 
You could
add up
the four incoming digits where you have "Move Any Down". The
sum
will always be the number you want.
 
You could
add up
the four incoming digits where you have "Move Any Down". The
sum
will always be the number you want.

hm? I don't get it. How do I know how many cycles passed where a 0 should be written when I look at the
sum
?
 
hm? I don't get it. How do I know how many cycles passed where a 0 should be written when I look at the
sum
?

Ah, I just noticed you're not moving 0s down from each In. I thought that was what you meant by getting rid of the 0s.
 
Ah, I just noticed you're not moving 0s down from each In. I thought that was what you meant by getting rid of the 0s.

Nah. :D I'm just moving the input numbers as soon as the input reads a 1 after a zero. But if no such change is happening, I need to write a zero. No idea how I should continue with this approach. I guess I have to start over. :(
 
I'm pleased to see even after friending the great Durante, I'm still top on the first two image puzzles. I spent a long time optimizing those last year.

Physics/CS doctorate here by the way.

I'm Hexanol on steam if anyone wants to add me.
 
CS here as well, just started the last semester of my BSc.

Also, I think that leaderboard Durante posted above was one of the two where I actually had a better score than him. I kinda figured it was only a matter of time. :(

I really need to get back into this game, if only to finish the last row, but I just bought Infinifactory in the Steam sale and I'm kind of addicted to it right now lol.
 
Ah ok. Now I see that the single high scores for cycles, nodes and instructions are not tied together. Now I'm feeling less stupid. lol
 
I'm pleased to see even after friending the great Durante, I'm still top on the first two image puzzles. I spent a long time optimizing those last year.
Yeah, the image ones I really need to look at again. Those and the pattern detector were where I really couldn't understand how to improve on my time, and I got the former now (until someone shows up with sub-125, at which point I'm well and truly out of options). By the way, Gotchaye is even faster than you at the images ;)

But can you (or anyone) build an 11 instruction (or less of course) image test pattern 2 solution?
(The closest on my friend list is at 14)
 
CS here also, 2 semesters away from graduating and then I'm going to get my masters

Had to give up on the game for a little bit until i dissect the logic flow of the system. Hit a brick wall in my solution because my understanding of execution order was wrong lol
 
Top Bottom