Merge pull request #234 from xexyl/2018-yang
This commit is contained in:
2 files changed
+33
-33
No files matched your search
@@ -4,9 +4,10 @@ generated3.c
|
|||||||
generated4.c
|
generated4.c
|
||||||
generated5.c
|
generated5.c
|
||||||
left
|
left
|
||||||
msg0
|
msg[0-9]
|
||||||
msg1
|
|
||||||
msg2
|
|
||||||
prog
|
prog
|
||||||
right
|
right
|
||||||
shift
|
shift
|
||||||
|
rotated_counterclockwise.txt
|
||||||
|
rotated_clockwise.txt
|
||||||
|
no_leading_space.txt
|
||||||
+29
-30
@@ -39,15 +39,14 @@ this program left and recompiling will reveal other tools including a right rota
|
|||||||
and a shift program.
|
and a shift program.
|
||||||
|
|
||||||
Strange things happen when the world is upside down! It is entirely possible
|
Strange things happen when the world is upside down! It is entirely possible
|
||||||
that this is remark is completely misleading.
|
that this remark is completely misleading.
|
||||||
|
|
||||||
What exactly does the shift program do?
|
What exactly does the shift program do?
|
||||||
|
|
||||||
Like a great sliding puzzle (hint) this entry has 6 more programs that will
|
Like a great sliding puzzle (hint) this entry has six more programs that will
|
||||||
reveal messages and one more tool that can be used to reveal the final
|
reveal messages and one more tool that can be used to reveal the final message
|
||||||
message hidden in the original source. All of these can be created using
|
hidden in the original source. All of these can be created using combinations
|
||||||
combinations of ./left, ./right and ./shift and the additionally generated
|
of `./left`, `./right` and `./shift` and the additionally generated programs.
|
||||||
programs.
|
|
||||||
|
|
||||||
The final message can be revealed using
|
The final message can be revealed using
|
||||||
|
|
||||||
@@ -55,12 +54,12 @@ The final message can be revealed using
|
|||||||
./msg9 < prog.c
|
./msg9 < prog.c
|
||||||
```
|
```
|
||||||
|
|
||||||
But what combinations will generate ./msg3, ./msg4, ./msg5, ./msg6, ./msg7,
|
But what combinations will generate `./msg3`, `./msg4`, `./msg5`, `./msg6`,
|
||||||
./msg8 and finally ./msg9?
|
`./msg7`, `./msg8` and finally `./msg9`?
|
||||||
|
|
||||||
## Author's comments:
|
## Author's comments:
|
||||||
|
|
||||||
### Tools usage
|
### Tools' usage:
|
||||||
|
|
||||||
Nuko is a text rotator: given some text in stdin, Nuko will write the
|
Nuko is a text rotator: given some text in stdin, Nuko will write the
|
||||||
same text to stdout, but rotated 90 degrees counterclockwise.
|
same text to stdout, but rotated 90 degrees counterclockwise.
|
||||||
@@ -108,7 +107,7 @@ Where this might be useful, besides ruining the formatting of certain
|
|||||||
files, is that it completes the set of tools needed to solve the
|
files, is that it completes the set of tools needed to solve the
|
||||||
puzzle that is embedded in prog.c
|
puzzle that is embedded in prog.c
|
||||||
|
|
||||||
### Puzzle box
|
### Puzzle box:
|
||||||
|
|
||||||
Notice how the edges of prog.c contain two notches. By rotating
|
Notice how the edges of prog.c contain two notches. By rotating
|
||||||
prog.c and removing leading space, the code would be shifted one space
|
prog.c and removing leading space, the code would be shifted one space
|
||||||
@@ -135,20 +134,20 @@ in prog.c, all you need is a C compiler.
|
|||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
- Code compiles when rotated 4 ways. This required a bit of
|
- Code compiles when rotated 4 ways. This required a bit of patience to
|
||||||
patience to achieve. Code still compiles even with one column of
|
achieve. Code still compiles even with one column of text shifted. This
|
||||||
text shifted. This required even more patience.
|
required even more patience.
|
||||||
|
|
||||||
- All rotated and shifted variants compiles without warnings. This
|
- All rotated and shifted variants compiles without warnings. This involves
|
||||||
involves various tweaks to satisfy cases where compiler is overly
|
various tweaks to satisfy cases where compiler is overly protective, including
|
||||||
protective, including but not limited to the "1125" at line 4 as
|
but not limited to the "1125" at line 4 as opposed to "1025", to satisfy
|
||||||
opposed to "1025", to satisfy -Waggresive-loop-optimizations.
|
`-Waggresive-loop-optimizations`.
|
||||||
|
|
||||||
- CRC32 of the code is embedded in the code itself.
|
- CRC32 of the code is embedded in the code itself.
|
||||||
|
|
||||||
- Process for writing prog.c is available in spoiler.html
|
- Process for writing prog.c is available in spoiler.html
|
||||||
|
|
||||||
### Compatibility
|
### Compatibility:
|
||||||
|
|
||||||
Nuko and the rotated tools accepts only ASCII files where each
|
Nuko and the rotated tools accepts only ASCII files where each
|
||||||
character maps to exactly one byte. Also, end-of-line sequence is
|
character maps to exactly one byte. Also, end-of-line sequence is
|
||||||
@@ -158,18 +157,18 @@ will look weird after rotation, for example.
|
|||||||
|
|
||||||
Nuko has been verified to work with these compiler / OS combinations:
|
Nuko has been verified to work with these compiler / OS combinations:
|
||||||
|
|
||||||
- gcc 4.8.4 on Linux
|
- gcc 4.8.4 on Linux
|
||||||
- gcc 4.9.2 on Linux
|
- gcc 4.9.2 on Linux
|
||||||
- gcc 6.1.0 on JS/Linux
|
- gcc 6.1.0 on JS/Linux
|
||||||
- gcc 6.3.0 on Linux
|
- gcc 6.3.0 on Linux
|
||||||
- gcc 6.4.0 on Cygwin
|
- gcc 6.4.0 on Cygwin
|
||||||
- clang 3.5.0 on Linux
|
- clang 3.5.0 on Linux
|
||||||
- clang 3.8.1 on Linux
|
- clang 3.8.1 on Linux
|
||||||
- clang 5.0.1 on Cygwin
|
- clang 5.0.1 on Cygwin
|
||||||
- tcc 0.9.25 on JS/Linux
|
- tcc 0.9.25 on JS/Linux
|
||||||
|
|
||||||
Nuko compiles without warnings with all compilers above, even with
|
Nuko compiles without warnings with all compilers above, even with
|
||||||
"-Wall -Wextra -pedantic" for gcc and clang.
|
`-Wall -Wextra -pedantic` for gcc and clang.
|
||||||
|
|
||||||
## Copyright and CC BY-SA 4.0 License:
|
## Copyright and CC BY-SA 4.0 License:
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user