Update 1994 winning entries' README.md files

Format and typo fixes.
This commit is contained in:
Cody Boone Ferguson committed 2023-04-14 06:28:42 -07:00
1 parent ee4ee3497d
commit 2501c808c6
9 files changed
+155 -119

No files matched your search

+37 -27
View File
@@ -1,28 +1,36 @@
# Most Obfuscated Algorithm
Ian Collier
Oxford University
57 Wyndham Avenue (home address)
BOLTON
BL3 4LG
England
Ian Collier
Oxford University
57 Wyndham Avenue (home address)
Bolton
BL3 4LG
England
## To build:
make all
```sh
make all
```
## To run:
To use:
./imc INTEGER
```sh
./imc [NUMBER]
```
where `[NUMBER]` is an optional number. Default is 5.
## Try:
./imc 3
./imc 3
./imc 4
./imc 4
./imc 6
```sh
./imc 3
./imc 3
./imc 4
./imc 4
./imc 6
./imc 13
```
## Judges' remarks:
@@ -32,15 +40,15 @@ This entry's algorithm is as magic as its output!
## Author's remarks:
This program may be compiled with an ANSI or K&R compiler. A few
harmless warnings are displayed only if "gcc -Wall" is used.
harmless warnings are displayed only if `gcc -Wall` is used.
This entry is really a set of library functions, but an example
main function has been added so that the library can be tested. If
the program appears too large, consider that functions o and s can
the program appears too large, consider that functions `o` and `s` can
each be separated from the rest of the program (except for the short
functions p and r, which they require) and used alone. However, the
main part of the program is the function e, which does require all the
other functions (apart from main).
functions `p` and `r`, which they require) and used alone. However, the
main part of the program is the function `e`, which does require all the
other functions (apart from `main`).
The program should be supplied with an integer parameter. If no
parameter or an invalid parameter is given, then 5 is assumed. The
@@ -53,22 +61,24 @@ OK, so you have probably seen magic square printers before. But what
about one that deals with even sizes as well as odd ones, or one that
prints out a different one each time (or attempts to, at any rate)?
I have formatted the important functions o, s and e to show how useful
the word "for" is, and (in function e) how useful the words "if" and
I have formatted the important functions `o`, `s` and `e` to show how useful
the word "for" is, and (in function `e`) how useful the words "if" and
"else" are. In fact, hardly anything happens that isn't in one of these
instructions. I did this in order to simplify the code - the algorithms
used to make the random squares are quite complex without being shrouded
in obfuscated code! :-) Incidentally, I was surprised to find out how
useful the exclusive-or operator was while writing function s.
useful the exclusive-or operator was while writing function `s`.
Here are the descriptions of the functions in the library:
o(n,a,q,d): makes a magic square of order n when n is odd and at least 3.
s(n,a,q,d): makes a magic square of order n when n equals 4.
e(n,a,q,d): makes a magic square of order n when n is even and at least 6.
```
o(n,a,q,d): makes a magic square of order n when n is odd and at least 3.
s(n,a,q,d): makes a magic square of order n when n equals 4.
e(n,a,q,d): makes a magic square of order n when n is even and at least 6.
```
In the above, `a` (of type `int*`) points to an area of memory in which
the magic square will be stored and `q` (also of type `int*`) points to
In the above, `a` (of type `int *`) points to an area of memory in which
the magic square will be stored and `q` (also of type `int *`) points to
an area of memory of length at least `n*sizeof(int)` bytes which can be
used as a work space. Both `a` and `q` must be allocated by the caller.
The integer parameter `d`, usually zero, indicates the length of a gap