Turing Complete

Turing Complete

View Stats:
Eterm Oct 31, 2021 @ 3:23am
Spacial Invasion
Are we supposed to brute force & hard-code this level?

It feels like a really odd jump from building our computer to needing to program a special case.

I'm happy enough with needing to program our custom assembler but it feels odd that we're not trying to implement any algorithm but just brute force a way to kill the space invaders.

Even playing "manually" with the keyboard controls I found it difficult to beat the level. Turning those steps into code feels more boring than an interesting puzzle, am I missing something about this level?
< >
Showing 1-8 of 8 comments
wbradley Oct 31, 2021 @ 3:34am 
You'll improve your computer's capabilities in later levels, so you can come back and do something fancier here. But on a first attempt, brute forcing the robot's actions is totally fine.
>Even playing "manually" with the keyboard controls I found it difficult to beat the level.

There is an easy way to win. Find that first and you will have an insanely easier time with this challenge.
nyda Oct 31, 2021 @ 3:54am 
I think the only thing you need to hard code is that the robot needs to move up a few fields at the beginning. You could write an algorithm to get around the obstacle if you wanted (I didn't). Everything afterwards needs no hard-coding, i.e. all robot actions can be a response to inputs at that point.
pickupsticks Oct 31, 2021 @ 6:12am 
Brute force is fine - what's more important, creating an elegant algorithm, or getting rid of those pesky space critters?

6 OUT # shoot through inconvenient crate 3 OUT OUT OUT OUT OUT # take up heroic pose near oncoming rats label wait 4 OUT # taunt the rats whilst remaining calm label robot_sense INP|LDS wait JEZ # if there is nothing here, who cares? 6 OUT # eat laser death, furry space fiend! robot_sense JMP


pew pew!
Budalu Apr 27, 2023 @ 5:45am 
here is an assembly code agnostic version for anyone looking to copy paste:
5 # shoot 134 # reg0_to_out 1 # move forward 134 # reg0_to_out 1 # move forward 134 # reg0_to_out 1 # move forward 134 # reg0_to_out 1 # move forward 134 # reg0_to_out 1 # move forward 134 # reg0_to_out 179 # in_to_reg3 19 # instruction addr 197 # if_neq_0 3 # enjoy the moment 134 # reg0_to_out 11 # instruction addr 196 # if_always 5 # shoot 134 # reg0_to_out 11 # instruction addr 196 # if_always
doG Himself Nov 22, 2023 @ 3:12pm 
Last edited by doG Himself; Nov 22, 2023 @ 4:15pm
=^・^= Aug 26, 2024 @ 10:47am 
I spent so much time on it because some bug happened and it wasn't writing to input...
symphony Sep 7, 2024 @ 10:19pm 
You can store each instruction in a different register and use aliases to output each register as needed

const left r0_to_out const move r1_to_out const right r2_to_out const wait r3_to_out const use r4_to_out const shoot r5_to_out # define controls 5 r5 4 r4 3 r3 2 r2 1 r1 0 # runner right move move move move move left move move move move wait wait wait shoot wait shoot wait wait wait wait wait wait wait shoot wait shoot move move move move move move move use move move
< >
Showing 1-8 of 8 comments
Per page: 1530 50