SIC-1 is a free single-instruction (subleq) programming game with "zachlike" global leaderboards.

Introduction:

You have been hired by SIC Systems to produce highly efficient programs for their flagship product: the Single Instruction Computer Mark 1 (SIC-1).

The SIC-1 represents a transformational change in computing, reducing complexity to the point that the processor only executes a single instruction: subtract and branch if less than or equal to zero ("subleq").

Enter the brave new world of single-instruction computing and discover new ways of implementing programs that would be trivial on a conventional computer. Don't adjust the technology to match how you think, adjust your thinking to match how the SIC-1 operates!

StatusReleased
PlatformsHTML5
Rating
(4)
Authorjaredkrinke
GenrePuzzle
Tagscoding, programming, zachlike, zach-like
Average sessionA few minutes
LanguagesEnglish
InputsKeyboard, Mouse

Development log

Comments

Log in with itch.io to leave a comment.

Really cool… just added to my collection! Would you like to join Creactivity #1?

(1 edit)

Before I start to reinvent the wheel.

Are the inputs in "Mode" puzzle in second test as low as in the first test? 

Inputs in test one are from 0 to 3

Is it the same in other tests? or will it hit me with 0-100? 

Do I have to write a HashMap or just use inputs as offsets

I should make it more clear in the instructions, but the numbers can be large (> 100).

Ok, I'm stuck on sorting :D

The worst part is that I know how most of the sorting algorithms work, but I just can't fit my program into 253 bytes...

What algorithm do you recommend to use? I chose Bubble cause it seemed like it would be very simple to code

Nevermind XD

I managed to save the my alg by making it ONE BYTE SMALLER! 

That’s the spirit! :)

For the record, I just inserted in order, shifting values down as needed.

Can I download this? I really like it so much.

One option is to download the game using the Itch App: https://itch.io/app

Note that you'll have to manually copy-paste your solutions from your browser into the downloaded version of the game. Eventually, I'd like to make it possible to share between browser and app, but there is at least one bug in the Itch App that prevents this from working with an Itch account.

It's not available as an .exe file. It opened in my browser.

Just so I understand, why were you looking for an EXE/stand-alone version of the game?

You're correct that there is no EXE; SIC-1 is a browser-based game for now. A desktop version could probably be built using Electron, but I don't have plans to do so. Launching from the Itch app sort of does this (it should open a new window that, while a web view, isn't just a normal browser window); it might even work offline (although all the leaderboards and whatnot won't work since they require Internet access).

Will my progress on the app be saved and will I be able to see my progress in my browser?

(+1)

Sadly, no. The workaround is to just copy-paste your solutions.

I’m hoping to implement that eventually, but I haven’t done the work yet and there’s a bug in the Itch app that prevents it from working seamlessly anyway (although I have an active pull request with them on GitHub to fix that part).

Great game, 10/10.

I only have one gripe. Getting into the next section of the challenge (Arithmetic), I am confused as to what it’s trying to get me to do. I understand the basic objective (for addition, add two numbers together; for multiplication, you multiply two numbers together; etcetera, etcetera), but don’t know how to achieve the goal.

For example, in Addition it asks me to read two numbers and output their sum. I know how, but what is number #2? I can guess number #1 is input, but what would number #2 be? This same problem goes for the rest, except Sign Function and Division.

In Sign Function, I have a basic understanding in what to do, but can’ understand how to do it. I tried storing input in a temp variable and checking that, but for some reason it turned the input “1” into “-3” without me doing anything to it.

In Division, same thing about “read two numbers”, but also how does it expect me to output the remainder after the quotient? Does it want me to append the remainder to the answer, such as 32 for 17/5? If not, what then?

Other than these small issues, it’s a great game, and great learning experience.

I think the design of the In/Expected/Actual table is the problem here. Think of each column as just an ordered list of numbers. For Addition, you just read 2 values sequentially from input and then output their sum. For example, the first 4 inputs (ABCD) are: 1, 1, 1, 2. The expected outputs are A+B (1 + 1 = 2) and C+D (1 + 2 = 3). Note that there are 2 inputs for every 1 output in that puzzle.

For the Sign Function question, try stepping through your computation while watching the "Label / Value" table on the right side. Is it possible a variable is not being erased between loops?

For Division, similar to Addition, just consider input and output as ordered lists. In the case of Division, you just need to write to @OUT twice (first the quotient, then the remainder). The instructions for each task should be explicit about the order of inputs and outputs; if they're not, let me know!

(1 edit)

Very Cool

(+1)

Great game!

Can anyone explain how SIC-1 calculates cycle and byte counts? When Single stepping the cycle counter increments for ever step but the cycle count in the final score is much lower. Also I wanted to optimise the bytes read, but I can't work out how it deduces the number of bytes for each instruction.

Cheers!

(+1)

Sorry I didn’t notice your question until now!

Cycles are counted only for the first set of inputs/outputs (because subsequent tests use random data and the statistics need to be comparable across runs).

For memory bytes, there are 256 possible addresses on the SIC-1 and the statistic represents the number of those addresses that were accessed during the first test set (regardless of the number of times each addressed was accessed). The idea is that it’s the maximum amount of memory required to run the program. Note: each subleq instruction is 3 bytes.

I'm seeing referrals from a Google Classroom. Any idea what class this is for? If you'd rather not share publicly, you can contact me directly at sic1@schemescape.com. Thanks!

Hello,I've been playing on my PC without an itch.io account and I want to play this game on my laptop. If I log in my account on my PC and my laptop will I be able to save my progress?

Unfortunately, all the data is stored locally in the browser’s HTML Local Storage. I’d suggest just saving all your solutions (e.g. email them to yourself) and paste them in on your new device.

Creating an account system is something I’d like to do, but I was waiting to see if there was interest in the game first :)

Update: In the future, I'd like to use itch.io accounts and the itch.io app for "cloud saving" of solutions/settings. At the moment, however, there are a couple of blocking issues in the itch.io app (and the version of Electron the app uses). The bottom line is that this won't be available for quite some time, unfortunately.

Dude, could ypu make this a mobile app?

(+1)

I considered supporting mobile, but I didn’t think programming on a platform where the on-screen keyboard takes up half the screen (leaving maybe 10 - 20 lines of text visible) would be enjoyable.  Let me play around with the layout a bit more...

(+1)

Update: mobile is now "supported" in that the styling for the itch.io-hosted browser version of the game now reflows the UI in a single column (instead of the three column layout used on desktop/landscape mode).

Let me know if you think this is playable, thanks!

I love it, thank you!

If you get stuck on any puzzle (even the last one), feel free to post a comment. It's possible the game's instructions just aren't clear (or there's a typo). I want the game to be difficult and tedious, but not unclear/impossible :)

Just noticed (based on a surge of new players) that SIC-1 was mentioned in a YouTube video by Truttle1 that explains what subleq is and how it works (note that the order of arguments in SIC-1 is slightly different than what is used in Truttle1's video): https://youtu.be/FvwcRaE9yxc

(+1)

Hey, do you think you could somehow implement TOGA (TOGgle bit And jump if true) logic for a series of side puzzles, along with support for macros?

(+2)

If there's interest in a sequel! :)

There is, at least from me!

This is one of the best programming games I have ever played! The rating system kinda reminds me of Zachtronics games :D

(+1)

Thanks! Glad you liked it. It's encouraging to hear that at least one other person finds single-instruction programming to be an enjoyable challenge.

And yes, the ranking system is inspired by various games from Zachtronics (including my personal favorite: TIS-100).

(+1)

Kudos to whoever it was that recently completed the "Reverse Sequence" puzzle -- I haven't even done that one yet!