Name Mode Size
.gitignore 100644 0 kb
LICENSE 100644 1 kb
Makefile 100644 1 kb
README.md 100644 2 kb
um.cpp 100644 2 kb
README.md
# [`boundvariable`][] Research notes regarding the [Cult of the Bound Variable][] and affiliates. [`boundvariable`]: https://git.rcrnstn.net/rcrnstn/cult-of-the-bound-variable [Cult of the Bound Variable]: http://boundvariable.org ## Universal Machine (UM) ### An puzzling appeal The association of amateur computational archaeolinguistics, of which I am a/the member, has heard the call of Professor Emeritus Harry Q. Bovik and intend to contribute to the [task][] outlined if we can. As an archaeolinguist my first instinct is to sort through what we know so far and archive it locally, I hope Professor Bovik doesn't not mind. I also hope you like [AWK][]. The [`Makefile`][] now downloads/generates the following: - [`task.txt`][]: Slightly trimmed plain text version of the task. - [`sha1sums.txt`][]: File hashes extracted from the task. - [`codex-key.txt`][]: Codex key extracted from the task. - `codex.umz`: The codex. - `sandmark.umz`: The benchmark. - [`sandmark-output.txt`][]: Expected output of the benchmark. - [`um-spec.txt`][]: Specification for the Universal Machine. - `um.um`: CMU Reference implementation of the Universal Machine. These files are all committed but also added to `.gitignore` and removed by `make clean`. [tasks]: http://www.boundvariable.org/task.shtml [AWK]: https://en.wikipedia.org/wiki/AWK [`Makefile`]: Makefile [`task.txt`]: task.txt [`sha1sums.txt`]: sha1sums.txt [`codex-key.txt`]: codex-key.txt [`sandmark-output.txt`]: sandmark-output.txt [`um-spec.txt`]: um-spec.txt ### Mostly Vetted Platterer (MVP) I have completed the first version of the implementation, see [`um.cpp`][]. It is as pure as I can make it. If someone wants a concise, readable, programmatic description of the spec this is the version they should look at (though reading the spec "blind" is a pleasure). The `um()` function is 45 self-contained lines. 65 lines total in the file, the difference being `#include`s and a 11 line `main` to deal with the ugliness of the outside world. Note that guardrails are only present in `main`, if the scroll itself has bugs there might be [UB][] galore (which is in spec). I have added a `um` [Makefile][] target, which is a dependency of the default `all` target: ```sh make um # or simply make ``` [`um.cpp`]: um.cpp [UB]: https://en.wikipedia.org/wiki/Undefined_behavior ## License Licensed under the [ISC License][] unless otherwise noted, see the [`LICENSE`][] file. [ISC License]: https://choosealicense.com/licenses/isc [`LICENSE`]: LICENSE