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,100 @@
|
||||
The following hints were used for myself but also I offer them for those who
|
||||
wish to more easily follow the code, though that might or might not help that
|
||||
much. If a variable or other kind of symbol is missing or is not what it says
|
||||
here that was by (in some cases) simply missing it or (in other cases) due to
|
||||
having changed things a fair amount; this submission took a lot of work and time
|
||||
to get everything in. One variable, `p`, is for the encrypted version only.
|
||||
|
||||
The following variables are of primary concern (some temporary ones are not
|
||||
documented I think):
|
||||
|
||||
- O: how much you spend on oxen
|
||||
- R: amount spent on food
|
||||
- E: amount spent on ammo
|
||||
- G: amount spent on clothing
|
||||
- O: how much you spend on oxen
|
||||
- N: amount spent on miscellaneous supplies
|
||||
- T: how much money you have
|
||||
- e: ate an ox
|
||||
- b: hp (hit points, starts out at 666, allows for survival in conditions you
|
||||
can't in the original) or stamina (kind of a combination - if you get injured
|
||||
and you see the doctor and can afford it you will not keep losing hp but you
|
||||
won't gain any either).
|
||||
- A: turn number for setting date (the first week, Monday 29 March 1847 is at
|
||||
16 so to print the second week day date month and year (though it does it March
|
||||
29 like the American way) you would do `V(A+16)`) (note that the date is not set
|
||||
in a variable but rather for printing the date)
|
||||
- I: unused except to spell out OREGON TRAIL.
|
||||
- L: amount spent on items at fort (used as a temporary money value for
|
||||
calculations at fort)
|
||||
- q: event number
|
||||
- f: flag for injury
|
||||
- M: total distance travelled
|
||||
- a: flag for illness
|
||||
- z: flag for fort option
|
||||
- K: the `FILE *` (data file)
|
||||
- y: contents of data file
|
||||
- p: used to print (one character at a time) the strings (encrypted version only)
|
||||
- r: (unsigned) answer to certain questions
|
||||
- d: son froze to death (and you ate him)
|
||||
- J: file length read (fun fact: as part of obfuscation in multiple levels, `J
|
||||
!= strlen(y)`!). It's reused in the V function after being set to 0.
|
||||
- l: non-zero when hunting.
|
||||
- W: flag for clearing Blue Mountains.
|
||||
- Q: got dysentery and went to doctor (I think only if you could afford the
|
||||
doctor but not sure)
|
||||
- B: if non-zero, can't afford the doctor, don't try again (this prevents a
|
||||
flood of the message each turn).
|
||||
- h: I believe this is if you were injured and could afford the doctor.
|
||||
- c: hit blizzard.
|
||||
- X: passed South Pass.
|
||||
- i: been poisoned; you will be dead shortly (sorry - that's what happens when
|
||||
you have a pact with the devil!).
|
||||
- g: how many limbs you've had to cut off (surgeon's cut edition)
|
||||
- t: temporary array for purchasing at forts.
|
||||
- u: temporary unsigned int to iterate through array `t` (and maybe other
|
||||
uses, not sure now).
|
||||
- v: non-zero means ran out of oxen so as to not flood user every turn with
|
||||
certain messages. But if you buy more that could in theory happen again. Note
|
||||
that some messages might be printed instead of the you have run out of oxen
|
||||
message, if they're the ones causing it, though I'm not going to say this is in
|
||||
every case as there are a lot of ways for this to happen.
|
||||
- any other variable I haven't the foggiest, even if it's not related to fog (of
|
||||
which there is an event where you encounter fog) - sorry. An example here is
|
||||
`m`.
|
||||
|
||||
When an amount spent (if it happens, not necessarily going to for every
|
||||
variable) spent ends up being < 0 (it's not allowed to go that low when
|
||||
purchasing) it means that there is an insufficient amount (thus a variable
|
||||
reuse).
|
||||
|
||||
The array:
|
||||
|
||||
``` <!---c-->
|
||||
long *o[]={ &O, &R, &E, &G, &N } /* animals, food, ammo, clothing, misc. supplies
|
||||
```
|
||||
|
||||
is used in at least one loop to not have to do checks individually. The
|
||||
variables, btw, are not how many as such (well in some cases it is, although
|
||||
with the number of animals it's a 'taken at liberty' and based on my
|
||||
interpretation of the original 1978 BASIC game) but rather
|
||||
how much was spent on them. As for the ammo: $1 spent on ammo means a belt of 50.
|
||||
That means another variable has to exist (that would be the `I` one) and
|
||||
every time a purchase is made (at fort or initially) `I` is set to `E * 50`.
|
||||
|
||||
The functions:
|
||||
|
||||
- main(): you know what this is: or...do you?
|
||||
- k(): the function that determines if you shoot successfully.
|
||||
- x: uses `rand()` to get a pRNG number in a range.
|
||||
- V: the nasty function that decrypts (one character at a time) strings in the
|
||||
data file. Or doesn't really decrypt it per se.
|
||||
- Z: calculates address of a block in the file (used by function `V` and macro `S`).
|
||||
|
||||
The macro:
|
||||
|
||||
- S: scanf macro.
|
||||
- w: death macro which will 'goto hell'.
|
||||
|
||||
If you expect me to try and describe the labels I will direct you straight to
|
||||
line 22!
|
||||
Reference in new issue
Block a user