release winning entries of IOCCC28 under the year 2024
Congratulations to: * 2024/anders - Prize in sound coding - layered music generator * 2024/burton - Prize in pentagrammatology - wordle hard mode solver * 2024/cable1 - Prize in bot talk - LLM inference engine * 2024/cable2 - Prize in murky waters - salmon recipe * 2024/carlini - Prize in perfect timing - Intel 4004 emulation * 2024/codemeow - Prize in tray planting - bonsai generator * 2024/endoh1 - Prize in patient pointillism - slow ray tracer in CPP * 2024/endoh2 - Prize in solid body physics - rotating rigid body simulation * 2024/ferguson1 - Prize in diabolical logistics - Oregon trail pact with the devil * 2024/ferguson2 - Prize in yil-tas - Navajo code talker translator * 2024/howe - Nice accent eh-ward - mini vi * 2024/kramer - Prize in linguistic arithmetic - natural language numerical calculator * 2024/kurdyukov1 - Prize in phased periodicity - phase of the Moon * 2024/kurdyukov2 - Prize in art restoration - JPEG artifact removal * 2024/kurdyukov3 - Prize in virtual quietus - gaming VM and doom * 2024/kurdyukov4 - Prize in embiggening - encode without literals * 2024/maffiodo - Prize in creative interpretation - Jav\*script interpreter * 2024/mills - Prize in ℤ₃ - Infocom v3 story interpreter * 2024/stedolan - Best one liner - icon from MD5 * 2024/straadt - Prize in imitative rebooting - OpenRISC CPU and Linux * 2024/tmarrec - Prize in cyclonic coding - 3D tornado simulation * 2024/tompng - Prize in quasi bijection - vortex encryptor decryptor * 2024/weaver - Sur prize - rickroll Ran `make update` to perform the above. new file: 2024/burton/.entry.json
This commit is contained in:
1 parent
10512e6c79
commit
09750f8899
443 files changed
+182938
-231
No files matched your search
@@ -0,0 +1,184 @@
|
||||
## To build:
|
||||
|
||||
``` <!---sh-->
|
||||
make all
|
||||
```
|
||||
|
||||
|
||||
## To use:
|
||||
|
||||
``` <!---sh-->
|
||||
./prog
|
||||
```
|
||||
|
||||
|
||||
## Try:
|
||||
|
||||
``` <!---sh-->
|
||||
./try.sh
|
||||
```
|
||||
|
||||
|
||||
## Judges' remarks:
|
||||
|
||||
When we ran this entry the first time (in a virtual machine window), it felt like the VM has rebooted.
|
||||
Then, after the initial feeling had subsided, we were able to appreciate the entry in greater detail.
|
||||
|
||||
Have you ever wondered would what would happen if you recursively removed
|
||||
files starting from the root directory? Are you curious what happens when
|
||||
you launch a [fork bomb](https://en.wikipedia.org/wiki/Fork_bomb)?
|
||||
Within the safety of an virtual walls, can safely give those and other scenarios:
|
||||
just check out the "[Things You Can Do](#todo")" section below.
|
||||
|
||||
**NOTE**: For those who do not have a clang compiler environment that
|
||||
supports the `wasm32` target, we provide a `prog.wasm` file.
|
||||
|
||||
**SUGGESTION / REQUEST**: Having a way to build custom boot-up images for this entry would be of interest.
|
||||
|
||||
|
||||
## Author's remarks:
|
||||
|
||||
|
||||
### Emulator Running Linux
|
||||
|
||||
|
||||
#### What It Does
|
||||
|
||||
This is an emulator capable of running a full modern Linux system with a minimal set of features. The system includes:
|
||||
|
||||
* An OpenRISC 32-Bit CPU
|
||||
* A Memory Management Unit
|
||||
* A UART connected to the Terminal
|
||||
* An Interrupt Controller
|
||||
* A Timer Controller
|
||||
|
||||
|
||||
<div id="todo">
|
||||
### Things You Can Do
|
||||
</div>
|
||||
|
||||
|
||||
#### Look Up Specs
|
||||
|
||||
First, you can look up the specs of the emulated system. The following commands will give you a good overview:
|
||||
|
||||
``` <!---sh-->
|
||||
uname -a
|
||||
free -h
|
||||
cat /proc/cpuinfo
|
||||
cat /proc/meminfo
|
||||
cat /proc/interrupts
|
||||
cat /proc/timer_list
|
||||
```
|
||||
|
||||
|
||||
#### Fork Bomb Visualized
|
||||
|
||||
For educational purposes, type the following two lines and watch the process tree grow:
|
||||
|
||||
``` <!---sh-->
|
||||
b(){ sleep 2; b|b; }
|
||||
(b &) && watch -n1 pstree -p
|
||||
```
|
||||
|
||||
Or just run:
|
||||
|
||||
``` <!---sh-->
|
||||
./fork_bomb.sh
|
||||
```
|
||||
|
||||
Note: You won't be able to stop the emulator anymore and will need to kill the process.
|
||||
|
||||
|
||||
#### Delete Filesystem
|
||||
|
||||
Ever wanted to know what happens when you delete your computer's filesystem?
|
||||
Now is your chance to find out!
|
||||
|
||||
``` <!---sh-->
|
||||
rm -rf /
|
||||
```
|
||||
|
||||
Even after removal, your system will still be in a well-defined state.
|
||||
For example, you can still run commands such as:
|
||||
|
||||
``` <!---sh-->
|
||||
cd /proc
|
||||
echo *
|
||||
```
|
||||
|
||||
Be careful: You won't be able to stop the emulation anymore and will need to kill the process.
|
||||
|
||||
|
||||
#### Run C64 Emulation
|
||||
|
||||
A full-fledged C64 emulator is included. Run it via:
|
||||
|
||||
``` <!---sh-->
|
||||
./c64
|
||||
```
|
||||
|
||||
Since the C64 is little-endian and runs on a big-endian machine, which itself runs on a little-endian machine, it combines the best of both worlds into a cool intermediate format. Might this be the future of endianness? 🤔
|
||||
|
||||
|
||||
#### Run Itself
|
||||
|
||||
With `./prog`, you can run the emulator within itself. This is a bit meta, but it works.
|
||||
The emulator would be able to run Linux as well, but it is tweaked to run with less memory and on a big-endian machine.
|
||||
|
||||
|
||||
#### Full scripting capabilities
|
||||
|
||||
With `vi`, you got an awesome editor and can write scripts in *ash* such as.
|
||||
|
||||
``` <!---sh-->
|
||||
i=1
|
||||
while [ "$i" -le 10 ]
|
||||
do
|
||||
echo "Hello World"
|
||||
i=$(expr "$i" + 1)
|
||||
done
|
||||
```
|
||||
|
||||
|
||||
#### Run in the Web Browser
|
||||
|
||||
Did you know that you can run this emulator in a web browser?
|
||||
|
||||
First, compile with Clang on systems that support a target of `wasm32`:
|
||||
|
||||
``` <!---sh-->
|
||||
make prog.wasm
|
||||
```
|
||||
|
||||
Then, for example, run a local web server with the following command:
|
||||
|
||||
``` <!---sh-->
|
||||
python3 -m http.server 8000
|
||||
```
|
||||
|
||||
Open your browser and go to `http://localhost:8000/prog.html`. You can now run the emulator in the browser.
|
||||
|
||||
|
||||
### Obsfucation
|
||||
|
||||
The obfuscation is mainly a result of compression, plus a healthy dose of recursion and the usual endian mischief.
|
||||
For some reason, LLMs might think that this is a Smoothed Particle Hydrodynamics (SPH) simulation.
|
||||
|
||||
Sigh, so much space left. More than enough for multi-core support, a full-fledged windowing system, or networking.
|
||||
Well, there's always next year.
|
||||
|
||||
|
||||
<!--
|
||||
|
||||
Copyright © 1984-2025 by Landon Curt Noll and Leonid A. Broukhis. All Rights Reserved.
|
||||
|
||||
You are free to share and adapt this file under the terms of this license:
|
||||
|
||||
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
|
||||
|
||||
For more information, see:
|
||||
|
||||
https://creativecommons.org/licenses/by-sa/4.0/
|
||||
|
||||
-->
|
||||
Reference in new issue
Block a user