add hack-a-round for language specified markdown code blocks
When language is specified in a markdown code block such as:
````
```c
printf("Hello, world!\n");
```
````
is used, the resulting HTML as produced by `pandoc(1)` combined
with our revised `ioccc.css` is not intent the code block well.
A temporary "_hack-a-round_" is to turn the "markdown code language
specifier" into an HTML comment. For example:
````
```<!---c-->
printf("Hello, world!\n");
```
````
This commits turns off existing markdown code language specifiers
for now, while preserving our ability to restore them in the future
when a better "_hack-a-round_" to the "markdown code language
specifier" problem is found.
The HTML impact if this "_hack-a-round_" is to produce HTML that
looks like this:
```
<pre class="<!---c-->"><code> .. </code></pre>
```
We might be able to create a complex set of classes for each markdown
code language (there won't be very many) in `ioccc.css`, or we might
find a more general CSS (or maybe `pandoc(1)`?) solution.
For now, this hack-a-round will have to do.
This commit is contained in:
1 parent
3919df50fb
commit
b66c79254a
700 files changed
+7052
-7056
No files matched your search
+12
-12
@@ -1,6 +1,6 @@
|
||||
## To build:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
make
|
||||
```
|
||||
|
||||
@@ -11,7 +11,7 @@ there is a firewall issue, and also lets you redefine the timing constant,
|
||||
|
||||
## To use:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
./prog < some_secret_or_something
|
||||
|
||||
./prog http://host[:port]
|
||||
@@ -20,19 +20,19 @@ there is a firewall issue, and also lets you redefine the timing constant,
|
||||
|
||||
## Try:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
./prog < README.md
|
||||
```
|
||||
|
||||
or maybe:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
echo "IOCCC 2014!" | ./prog
|
||||
```
|
||||
|
||||
Next, try in another terminal, as the above one is running:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
./prog http://127.0.0.1:1701
|
||||
```
|
||||
|
||||
@@ -55,13 +55,13 @@ described by the author. See [configuration](#configuration) below.
|
||||
|
||||
To specify the port to say, 31337, try:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
make clobber PORT=31337 alt
|
||||
```
|
||||
|
||||
To change the timing constant, `STARDATE`, try:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
make clobber TIME=5000000 alt
|
||||
```
|
||||
|
||||
@@ -101,26 +101,26 @@ the server.
|
||||
|
||||
## To use web server
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
./prog < secret_file_to_be_downloaded
|
||||
```
|
||||
|
||||
Try using the program's source code as the secret file:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
./prog < prog.c
|
||||
```
|
||||
|
||||
## To use client-side downloader
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
./prog http://host[:port]
|
||||
```
|
||||
|
||||
The optional port defaults to 1701. If the web server instance is started on
|
||||
the same box, try:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
./prog http://127.0.0.1:1701
|
||||
```
|
||||
|
||||
@@ -246,7 +246,7 @@ numerical values.
|
||||
For space considerations, the following include statements were dropped
|
||||
resulting in compiler warnings:
|
||||
|
||||
```c
|
||||
```<!---c-->
|
||||
#include <asm/byteorder.h>
|
||||
#include <ctype.h>
|
||||
#include <netinet/in.h>
|
||||
|
||||
+22
-22
@@ -144,20 +144,20 @@ Location: <a href="../../location.html#US">US</a> - <em>United States of America
|
||||
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||||
|
||||
<h2 id="to-build">To build:</h2>
|
||||
<div class="sourceCode" id="cb1"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a> <span class="fu">make</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> make</code></pre>
|
||||
<p>There is alternate code that lets you redefine the port to bind to, in case
|
||||
there is a firewall issue, and also lets you redefine the timing constant,
|
||||
<code>STARDATE</code>. See <a href="#alternate%20code">Alternate code</a> below.</p>
|
||||
<h2 id="to-use">To use:</h2>
|
||||
<div class="sourceCode" id="cb2"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./prog</span> <span class="op"><</span> some_secret_or_something</span>
|
||||
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb2-3"><a href="#cb2-3" aria-hidden="true" tabindex="-1"></a> <span class="ex">./prog</span> http://host<span class="pp">[</span><span class="ss">:port</span><span class="pp">]</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> ./prog < some_secret_or_something
|
||||
|
||||
./prog http://host[:port]</code></pre>
|
||||
<h2 id="try">Try:</h2>
|
||||
<div class="sourceCode" id="cb3"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./prog</span> <span class="op"><</span> README.md</span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> ./prog < README.md</code></pre>
|
||||
<p>or maybe:</p>
|
||||
<div class="sourceCode" id="cb4"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a> <span class="bu">echo</span> <span class="st">"IOCCC 2014!"</span> <span class="kw">|</span> <span class="ex">./prog</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> echo "IOCCC 2014!" | ./prog</code></pre>
|
||||
<p>Next, try in another terminal, as the above one is running:</p>
|
||||
<div class="sourceCode" id="cb5"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./prog</span> http://127.0.0.1:1701</span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> ./prog http://127.0.0.1:1701</code></pre>
|
||||
<p>What happens if you specify instead of a regular file something like
|
||||
<code>/dev/null</code> ?</p>
|
||||
<p>But there’s more! Try opening in a browser the same address and then see what
|
||||
@@ -168,9 +168,9 @@ problem for some reason, and it also allows you to change the timing as
|
||||
described by the author. See <a href="#configuration">configuration</a> below.</p>
|
||||
<h3 id="alternate-build">Alternate build:</h3>
|
||||
<p>To specify the port to say, 31337, try:</p>
|
||||
<div class="sourceCode" id="cb6"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a> <span class="fu">make</span> clobber PORT=31337 alt</span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> make clobber PORT=31337 alt</code></pre>
|
||||
<p>To change the timing constant, <code>STARDATE</code>, try:</p>
|
||||
<div class="sourceCode" id="cb7"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a> <span class="fu">make</span> clobber TIME=5000000 alt</span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> make clobber TIME=5000000 alt</code></pre>
|
||||
<p>You can combine them both of course.</p>
|
||||
<h3 id="alternate-use">Alternate use:</h3>
|
||||
<p>Use <code>prog.alt</code> as you would <code>prog</code> above. Remember that ports < 1024 are
|
||||
@@ -194,14 +194,14 @@ a client-side downloader. The hidden transmitted data cannot be reconstructed
|
||||
or even detected from the binary content of the traffic between the client and
|
||||
the server.</p>
|
||||
<h2 id="to-use-web-server">To use web server</h2>
|
||||
<div class="sourceCode" id="cb8"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./prog</span> <span class="op"><</span> secret_file_to_be_downloaded</span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> ./prog < secret_file_to_be_downloaded</code></pre>
|
||||
<p>Try using the program’s source code as the secret file:</p>
|
||||
<div class="sourceCode" id="cb9"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./prog</span> <span class="op"><</span> prog.c</span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> ./prog < prog.c</code></pre>
|
||||
<h2 id="to-use-client-side-downloader">To use client-side downloader</h2>
|
||||
<div class="sourceCode" id="cb10"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./prog</span> http://host<span class="pp">[</span><span class="ss">:port</span><span class="pp">]</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> ./prog http://host[:port]</code></pre>
|
||||
<p>The optional port defaults to 1701. If the web server instance is started on
|
||||
the same box, try:</p>
|
||||
<div class="sourceCode" id="cb11"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./prog</span> http://127.0.0.1:1701</span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> ./prog http://127.0.0.1:1701</code></pre>
|
||||
<p>It will incrementally display the contents of the hidden file at a rate of
|
||||
approximately 1 baud.</p>
|
||||
<p>The client-side downloader will automatically terminate if the web server is
|
||||
@@ -296,15 +296,15 @@ numerical values.</li>
|
||||
<h3 id="compiler-warnings">Compiler warnings</h3>
|
||||
<p>For space considerations, the following include statements were dropped
|
||||
resulting in compiler warnings:</p>
|
||||
<div class="sourceCode" id="cb12"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true" tabindex="-1"></a> <span class="pp">#include </span><span class="im"><asm/byteorder.h></span></span>
|
||||
<span id="cb12-2"><a href="#cb12-2" aria-hidden="true" tabindex="-1"></a> <span class="pp">#include </span><span class="im"><ctype.h></span></span>
|
||||
<span id="cb12-3"><a href="#cb12-3" aria-hidden="true" tabindex="-1"></a> <span class="pp">#include </span><span class="im"><netinet/in.h></span></span>
|
||||
<span id="cb12-4"><a href="#cb12-4" aria-hidden="true" tabindex="-1"></a> <span class="pp">#include </span><span class="im"><stdlib.h></span></span>
|
||||
<span id="cb12-5"><a href="#cb12-5" aria-hidden="true" tabindex="-1"></a> <span class="pp">#include </span><span class="im"><string.h></span></span>
|
||||
<span id="cb12-6"><a href="#cb12-6" aria-hidden="true" tabindex="-1"></a> <span class="pp">#include </span><span class="im"><sys/select.h></span></span>
|
||||
<span id="cb12-7"><a href="#cb12-7" aria-hidden="true" tabindex="-1"></a> <span class="pp">#include </span><span class="im"><sys/socket.h></span></span>
|
||||
<span id="cb12-8"><a href="#cb12-8" aria-hidden="true" tabindex="-1"></a> <span class="pp">#include </span><span class="im"><sys/types.h></span></span>
|
||||
<span id="cb12-9"><a href="#cb12-9" aria-hidden="true" tabindex="-1"></a> <span class="pp">#include </span><span class="im"><sys/unistd.h></span></span></code></pre></div>
|
||||
<pre class="<!---c-->"><code> #include <asm/byteorder.h>
|
||||
#include <ctype.h>
|
||||
#include <netinet/in.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <sys/select.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/unistd.h></code></pre>
|
||||
<p>It may be necessary to restore some of these under certain environments.</p>
|
||||
<!--
|
||||
|
||||
|
||||
+7
-7
@@ -1,6 +1,6 @@
|
||||
## To build:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
make
|
||||
```
|
||||
|
||||
@@ -12,14 +12,14 @@ code](#alternate-code) below.
|
||||
|
||||
## To use:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
./prog
|
||||
```
|
||||
|
||||
|
||||
## Try:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
./prog
|
||||
```
|
||||
|
||||
@@ -36,7 +36,7 @@ recognisable and also to let you reconfigure the coordinates.
|
||||
|
||||
### Alternate build:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
make alt
|
||||
```
|
||||
|
||||
@@ -45,7 +45,7 @@ If you wish to redefine the coordinates you can do so by defining `X1`, `X2`,
|
||||
For instance:
|
||||
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
make clobber X1=-3 X2=2 Y1=-2.3 Y2=2.3 alt
|
||||
```
|
||||
|
||||
@@ -59,7 +59,7 @@ Use `prog.alt` as you would `prog`.
|
||||
|
||||
### Alternate try:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
./try.alt.sh
|
||||
```
|
||||
|
||||
@@ -94,7 +94,7 @@ The usage of recognizable elements from the C programming language in the
|
||||
application source code is intentionally kept to a bare minimum. If this phrase
|
||||
would not be true, the application would be the following:
|
||||
|
||||
```c
|
||||
```<!---c-->
|
||||
double _[]={-2
|
||||
,1,-1.3 ,1.3, 0, 0,0,0
|
||||
,0 ,0,50, 80, 0,0,0 ,255
|
||||
|
||||
+25
-25
@@ -141,15 +141,15 @@ Location: <a href="../../location.html#ZZ">ZZ</a> - <em>Unknown location</em></l
|
||||
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||||
|
||||
<h2 id="to-build">To build:</h2>
|
||||
<div class="sourceCode" id="cb1"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a> <span class="fu">make</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> make</code></pre>
|
||||
<p>There is an alternate version that the author provided but fixed in 2023 to
|
||||
compile with modern systems and to allow one to reconfigure the constants <code>X1</code>,
|
||||
<code>X2</code>, <code>Y1</code> and <code>Y2</code> (which were magic numbers). See <a href="#alternate-code">Alternate
|
||||
code</a> below.</p>
|
||||
<h2 id="to-use">To use:</h2>
|
||||
<div class="sourceCode" id="cb2"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./prog</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> ./prog</code></pre>
|
||||
<h2 id="try">Try:</h2>
|
||||
<div class="sourceCode" id="cb3"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./prog</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> ./prog</code></pre>
|
||||
<p>Try changing bounding box coordinates in the source to explore
|
||||
various regions of the fractal.</p>
|
||||
<h2 id="alternate-code">Alternate code:</h2>
|
||||
@@ -157,16 +157,16 @@ various regions of the fractal.</p>
|
||||
easily see the difference in what it might look like if the C was more
|
||||
recognisable and also to let you reconfigure the coordinates.</p>
|
||||
<h3 id="alternate-build">Alternate build:</h3>
|
||||
<div class="sourceCode" id="cb4"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a> <span class="fu">make</span> alt</span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> make alt</code></pre>
|
||||
<p>If you wish to redefine the coordinates you can do so by defining <code>X1</code>, <code>X2</code>,
|
||||
<code>Y1</code> and/or <code>Y2</code>, which default to: <code>-2</code>, <code>1</code>, <code>-1.3</code> and <code>1.3</code> respectively.
|
||||
For instance:</p>
|
||||
<div class="sourceCode" id="cb5"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a> <span class="fu">make</span> clobber X1=-3 X2=2 Y1=-2.3 Y2=2.3 alt</span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> make clobber X1=-3 X2=2 Y1=-2.3 Y2=2.3 alt</code></pre>
|
||||
<p>You may pick and choose which ones to redefine.</p>
|
||||
<h3 id="alternate-use">Alternate use:</h3>
|
||||
<p>Use <code>prog.alt</code> as you would <code>prog</code>.</p>
|
||||
<h3 id="alternate-try">Alternate try:</h3>
|
||||
<div class="sourceCode" id="cb6"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./try.alt.sh</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> ./try.alt.sh</code></pre>
|
||||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||||
<p>We consider this entry a tribute to all “Abuse of the C preprocessor”
|
||||
and Mandelbrot fractal drawing entries we’ve seen over the years.</p>
|
||||
@@ -186,25 +186,25 @@ drawer. There are tools much better suited for drawing fractals.</p>
|
||||
<p>The usage of recognizable elements from the C programming language in the
|
||||
application source code is intentionally kept to a bare minimum. If this phrase
|
||||
would not be true, the application would be the following:</p>
|
||||
<div class="sourceCode" id="cb7"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a> <span class="dt">double</span> _<span class="op">[]={-</span><span class="dv">2</span></span>
|
||||
<span id="cb7-2"><a href="#cb7-2" aria-hidden="true" tabindex="-1"></a> <span class="op">,</span><span class="dv">1</span><span class="op">,-</span><span class="fl">1.3</span> <span class="op">,</span><span class="fl">1.3</span><span class="op">,</span> <span class="dv">0</span><span class="op">,</span> <span class="dv">0</span><span class="op">,</span><span class="dv">0</span><span class="op">,</span><span class="dv">0</span></span>
|
||||
<span id="cb7-3"><a href="#cb7-3" aria-hidden="true" tabindex="-1"></a> <span class="op">,</span><span class="dv">0</span> <span class="op">,</span><span class="dv">0</span><span class="op">,</span><span class="dv">50</span><span class="op">,</span> <span class="dv">80</span><span class="op">,</span> <span class="dv">0</span><span class="op">,</span><span class="dv">0</span><span class="op">,</span><span class="dv">0</span> <span class="op">,</span><span class="dv">255</span></span>
|
||||
<span id="cb7-4"><a href="#cb7-4" aria-hidden="true" tabindex="-1"></a> <span class="op">,</span> <span class="dv">8</span><span class="op">,</span><span class="dv">0</span><span class="op">};</span> <span class="dt">int</span> main <span class="op">(</span></span>
|
||||
<span id="cb7-5"><a href="#cb7-5" aria-hidden="true" tabindex="-1"></a> <span class="dt">int</span> j<span class="op">)</span> <span class="op">{</span><span class="cf">if</span> <span class="op">(</span>j<span class="op">==</span> <span class="dv">1</span> <span class="op">){</span> <span class="cf">if</span><span class="op">(</span></span>
|
||||
<span id="cb7-6"><a href="#cb7-6" aria-hidden="true" tabindex="-1"></a> _<span class="op">[</span><span class="dv">12</span><span class="op">]</span> <span class="op">></span>_<span class="op">[</span><span class="dv">10</span><span class="op">]</span> <span class="op">)</span>_<span class="op">[</span><span class="dv">17</span><span class="op">]=</span><span class="dv">1</span> <span class="op">;}</span> <span class="cf">if</span></span>
|
||||
<span id="cb7-7"><a href="#cb7-7" aria-hidden="true" tabindex="-1"></a> <span class="op">(</span>_<span class="op">[</span><span class="dv">13</span><span class="op">]</span> <span class="op">></span>_<span class="op">[</span><span class="dv">11</span> <span class="op">]</span> <span class="op">||</span>_<span class="op">[</span><span class="dv">17</span><span class="op">]==</span><span class="dv">1</span><span class="op">)</span> <span class="cf">return</span> <span class="dv">1</span></span>
|
||||
<span id="cb7-8"><a href="#cb7-8" aria-hidden="true" tabindex="-1"></a> <span class="op">;</span>_<span class="op">[</span><span class="dv">6</span><span class="op">]</span> <span class="op">=</span> _ <span class="op">[</span><span class="dv">13</span><span class="op">]</span> <span class="op">/</span> _<span class="op">[</span><span class="dv">11</span><span class="op">]*(</span>_<span class="op">[</span><span class="dv">1</span><span class="op">]-</span>_<span class="op">[</span> <span class="dv">0</span><span class="op">])</span></span>
|
||||
<span id="cb7-9"><a href="#cb7-9" aria-hidden="true" tabindex="-1"></a> <span class="op">+</span>_<span class="op">[</span> <span class="dv">0</span><span class="op">];</span> _ <span class="op">[</span><span class="dv">7</span><span class="op">]=</span>_<span class="op">[</span><span class="dv">12</span><span class="op">]/</span>_<span class="op">[</span><span class="dv">10</span><span class="op">]*(</span>_<span class="op">[</span><span class="dv">3</span><span class="op">]-</span>_<span class="op">[</span><span class="dv">2</span><span class="op">]</span> <span class="op">)+</span>_</span>
|
||||
<span id="cb7-10"><a href="#cb7-10" aria-hidden="true" tabindex="-1"></a> <span class="op">[</span><span class="dv">2</span><span class="op">];</span>_<span class="op">[</span><span class="dv">8</span><span class="op">]=</span>_<span class="op">[</span><span class="dv">9</span><span class="op">]=</span>_<span class="op">[</span><span class="dv">14</span><span class="op">]=</span><span class="dv">0</span><span class="op">;</span>l2<span class="op">:</span>_<span class="op">[</span><span class="dv">4</span><span class="op">]=</span>_<span class="op">[</span><span class="dv">8</span><span class="op">]</span> <span class="op">*</span> _ <span class="op">[</span><span class="dv">8</span><span class="op">]</span></span>
|
||||
<span id="cb7-11"><a href="#cb7-11" aria-hidden="true" tabindex="-1"></a> <span class="op">;</span>_<span class="op">[</span> <span class="dv">5</span><span class="op">]=</span> _ <span class="op">[</span><span class="dv">9</span><span class="op">]*</span>_<span class="op">[</span><span class="dv">9</span><span class="op">];</span>_<span class="op">[</span><span class="dv">9</span><span class="op">]=</span><span class="dv">2</span><span class="op">*</span>_<span class="op">[</span><span class="dv">8</span><span class="op">]*</span>_<span class="op">[</span><span class="dv">9</span><span class="op">]+</span> _<span class="op">[</span><span class="dv">7</span></span>
|
||||
<span id="cb7-12"><a href="#cb7-12" aria-hidden="true" tabindex="-1"></a> <span class="op">];</span>_<span class="op">[</span><span class="dv">8</span> <span class="op">]</span> <span class="op">=</span> _ <span class="op">[</span> <span class="dv">4</span> <span class="op">]-</span>_<span class="op">[</span><span class="dv">5</span><span class="op">]+</span>_<span class="op">[</span><span class="dv">6</span><span class="op">];</span>_<span class="op">[</span><span class="dv">14</span> <span class="op">]++</span></span>
|
||||
<span id="cb7-13"><a href="#cb7-13" aria-hidden="true" tabindex="-1"></a> <span class="op">;</span><span class="cf">if</span><span class="op">((</span>_ <span class="op">[</span><span class="dv">14</span><span class="op">]<</span> _ <span class="op">[</span><span class="dv">15</span><span class="op">])&&(</span>_<span class="op">[</span><span class="dv">4</span><span class="op">]+</span> _<span class="op">[</span> <span class="dv">5</span><span class="op">]</span></span>
|
||||
<span id="cb7-14"><a href="#cb7-14" aria-hidden="true" tabindex="-1"></a> <span class="op"><</span>_<span class="op">[</span><span class="dv">16</span> <span class="op">]))</span> <span class="cf">goto</span> l2<span class="op">;</span> putchar<span class="op">(</span></span>
|
||||
<span id="cb7-15"><a href="#cb7-15" aria-hidden="true" tabindex="-1"></a> <span class="st">" #@*+ "</span><span class="op">[(</span> <span class="dt">int</span><span class="op">)</span> _<span class="op">[</span><span class="dv">14</span><span class="op">]%</span></span>
|
||||
<span id="cb7-16"><a href="#cb7-16" aria-hidden="true" tabindex="-1"></a> <span class="dv">5</span> <span class="op">]);</span>_ <span class="op">[</span><span class="dv">13</span> <span class="op">]</span> <span class="op">++</span> <span class="op">;</span> main <span class="op">(</span></span>
|
||||
<span id="cb7-17"><a href="#cb7-17" aria-hidden="true" tabindex="-1"></a> <span class="dv">0</span><span class="op">)</span> <span class="op">;</span>_<span class="op">[</span><span class="dv">12</span><span class="op">]++;</span> _<span class="op">[</span><span class="dv">13</span><span class="op">]</span> <span class="op">=</span><span class="dv">0</span></span>
|
||||
<span id="cb7-18"><a href="#cb7-18" aria-hidden="true" tabindex="-1"></a> <span class="op">;</span><span class="cf">if</span><span class="op">(</span>_ <span class="op">[</span><span class="dv">17</span><span class="op">]</span> <span class="op">!=</span><span class="dv">1</span><span class="op">)</span> putchar</span>
|
||||
<span id="cb7-19"><a href="#cb7-19" aria-hidden="true" tabindex="-1"></a> <span class="op">(</span><span class="bn">0xa</span><span class="op">);</span> main<span class="op">(</span><span class="dv">1</span><span class="op">);}</span></span></code></pre></div>
|
||||
<pre class="<!---c-->"><code> double _[]={-2
|
||||
,1,-1.3 ,1.3, 0, 0,0,0
|
||||
,0 ,0,50, 80, 0,0,0 ,255
|
||||
, 8,0}; int main (
|
||||
int j) {if (j== 1 ){ if(
|
||||
_[12] >_[10] )_[17]=1 ;} if
|
||||
(_[13] >_[11 ] ||_[17]==1) return 1
|
||||
;_[6] = _ [13] / _[11]*(_[1]-_[ 0])
|
||||
+_[ 0]; _ [7]=_[12]/_[10]*(_[3]-_[2] )+_
|
||||
[2];_[8]=_[9]=_[14]=0;l2:_[4]=_[8] * _ [8]
|
||||
;_[ 5]= _ [9]*_[9];_[9]=2*_[8]*_[9]+ _[7
|
||||
];_[8 ] = _ [ 4 ]-_[5]+_[6];_[14 ]++
|
||||
;if((_ [14]< _ [15])&&(_[4]+ _[ 5]
|
||||
<_[16 ])) goto l2; putchar(
|
||||
" #@*+ "[( int) _[14]%
|
||||
5 ]);_ [13 ] ++ ; main (
|
||||
0) ;_[12]++; _[13] =0
|
||||
;if(_ [17] !=1) putchar
|
||||
(0xa); main(1);}</code></pre>
|
||||
<p>The application expects no parameters, the only way you can change the behaviour
|
||||
is to modify the source code at the indicated location: the line
|
||||
<code>/* <-- Configure here: X1, X2, Y1, Y2 */</code> is intentionally not obfuscated so
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
## To build:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
make
|
||||
```
|
||||
|
||||
|
||||
## To use:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
./prog > foo.c
|
||||
```
|
||||
|
||||
|
||||
## Try:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
./try.sh
|
||||
```
|
||||
|
||||
@@ -36,14 +36,14 @@ What is the difference between running `./prog` and `main`?
|
||||
Big terminals with tiny fonts have their uses in certain cases.
|
||||
One of them is:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
make treacl
|
||||
./treacl
|
||||
```
|
||||
|
||||
which is shorthand for:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
./prog < prog.c > treacle.c
|
||||
make treacle
|
||||
./treacle
|
||||
|
||||
@@ -141,11 +141,11 @@ Location: <a href="../../location.html#JP">JP</a> - <em>Japan</em></li>
|
||||
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||||
|
||||
<h2 id="to-build">To build:</h2>
|
||||
<div class="sourceCode" id="cb1"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a> <span class="fu">make</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> make</code></pre>
|
||||
<h2 id="to-use">To use:</h2>
|
||||
<div class="sourceCode" id="cb2"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./prog</span> <span class="op">></span> foo.c</span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> ./prog > foo.c</code></pre>
|
||||
<h2 id="try">Try:</h2>
|
||||
<div class="sourceCode" id="cb3"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./try.sh</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> ./try.sh</code></pre>
|
||||
<p>The script will ask you if you wish to run <code>make rake</code> but this is not necessary
|
||||
to fully enjoy the entry. <code>make rake</code> will run the <a href="rake.sh">rake.sh</a> script and
|
||||
then <code>prog</code> if all is built okay. If <code>rake</code> is not installed then it will check
|
||||
@@ -159,12 +159,12 @@ build <code>main.c</code>.</p>
|
||||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||||
<p>Big terminals with tiny fonts have their uses in certain cases.
|
||||
One of them is:</p>
|
||||
<div class="sourceCode" id="cb4"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a> <span class="fu">make</span> treacl</span>
|
||||
<span id="cb4-2"><a href="#cb4-2" aria-hidden="true" tabindex="-1"></a> <span class="ex">./treacl</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> make treacl
|
||||
./treacl</code></pre>
|
||||
<p>which is shorthand for:</p>
|
||||
<div class="sourceCode" id="cb5"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./prog</span> <span class="op"><</span> prog.c <span class="op">></span> treacle.c</span>
|
||||
<span id="cb5-2"><a href="#cb5-2" aria-hidden="true" tabindex="-1"></a> <span class="fu">make</span> treacle</span>
|
||||
<span id="cb5-3"><a href="#cb5-3" aria-hidden="true" tabindex="-1"></a> <span class="ex">./treacle</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> ./prog < prog.c > treacle.c
|
||||
make treacle
|
||||
./treacle</code></pre>
|
||||
<p>When using a smartphone to read the output, you may need to
|
||||
step back to see the bigger picture because that picture is worth
|
||||
more than 1000 words.</p>
|
||||
|
||||
+10
-10
@@ -134,7 +134,7 @@ the program!</p>
|
||||
<h2 id="how-did-i-achieve-that">How did I achieve that?</h2>
|
||||
<p>It is known that we can mitigate the quine restriction by <code>eval</code>.
|
||||
For example, this is a quine written in Ruby:</p>
|
||||
<div class="sourceCode" id="cb1"><pre class="sourceCode ruby"><code class="sourceCode ruby"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a> <span class="fu">eval</span> s<span class="kw">=</span><span class="st">"print 'eval s='; p s"</span></span></code></pre></div>
|
||||
<pre class="<!---ruby-->"><code> eval s="print 'eval s='; p s"</code></pre>
|
||||
<p>Note that <code>print</code> appears just once in the program.</p>
|
||||
<p>To emulate this approach in C, I adopted the following structure.</p>
|
||||
<pre><code> char s[]="<main code>int main() { <VM code> }";
|
||||
@@ -230,8 +230,8 @@ renaming and automatic register allocation only for this purpose.</p>
|
||||
<li><a href="gen-prog.c">gen-prog.c</a> generates <a href="prog.c">prog.c</a> based on <code>main.c</code>.</li>
|
||||
</ul>
|
||||
<p>You can run the process by <code>rake</code> command. <code>ruby-minisat</code> gem is needed.</p>
|
||||
<div class="sourceCode" id="cb4"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">$</span> gem install ruby-minisat</span>
|
||||
<span id="cb4-2"><a href="#cb4-2" aria-hidden="true" tabindex="-1"></a> <span class="ex">$</span> rake</span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> $ gem install ruby-minisat
|
||||
$ rake</code></pre>
|
||||
<h2 id="tools">Tools</h2>
|
||||
<p>I checked that the following QR code readers can read the output of my program.</p>
|
||||
<ul>
|
||||
@@ -243,13 +243,13 @@ found at
|
||||
<code>https://play.google.com/store/apps/details?id=com.google.zxing.client.android</code>
|
||||
but it appears to no longer exist.</p>
|
||||
<p>You can use <a href="tool.rb">tool.rb</a> to convert the output to a png file.</p>
|
||||
<div class="sourceCode" id="cb5"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./main</span> Hello <span class="kw">|</span> <span class="ex">ruby</span> tool.rb <span class="op">></span> hello.png</span>
|
||||
<span id="cb5-2"><a href="#cb5-2" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb5-3"><a href="#cb5-3" aria-hidden="true" tabindex="-1"></a> <span class="ex">$</span> zbarimg <span class="at">-q</span> hello.png</span>
|
||||
<span id="cb5-4"><a href="#cb5-4" aria-hidden="true" tabindex="-1"></a> <span class="ex">QR-Code:Hello</span></span>
|
||||
<span id="cb5-5"><a href="#cb5-5" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb5-6"><a href="#cb5-6" aria-hidden="true" tabindex="-1"></a> <span class="ex">$</span> ruby tool.rb prog.c</span>
|
||||
<span id="cb5-7"><a href="#cb5-7" aria-hidden="true" tabindex="-1"></a> <span class="ex">$</span> ruby tool.rb prog.c <span class="kw">|</span> <span class="ex">ruby</span> tool.rb</span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> ./main Hello | ruby tool.rb > hello.png
|
||||
|
||||
$ zbarimg -q hello.png
|
||||
QR-Code:Hello
|
||||
|
||||
$ ruby tool.rb prog.c
|
||||
$ ruby tool.rb prog.c | ruby tool.rb</code></pre>
|
||||
<h2 id="limitations">Limitations</h2>
|
||||
<ul>
|
||||
<li>QR code error correction level is fixed to L (Low).</li>
|
||||
|
||||
@@ -18,7 +18,7 @@ Do you think that it is possible to write QR code encoder in C within *1kB*?
|
||||
It is known that we can mitigate the quine restriction by `eval`.
|
||||
For example, this is a quine written in Ruby:
|
||||
|
||||
```ruby
|
||||
```<!---ruby-->
|
||||
eval s="print 'eval s='; p s"
|
||||
```
|
||||
|
||||
@@ -122,7 +122,7 @@ The compiler tool chain is the following.
|
||||
|
||||
You can run the process by `rake` command. `ruby-minisat` gem is needed.
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
$ gem install ruby-minisat
|
||||
$ rake
|
||||
```
|
||||
@@ -145,7 +145,7 @@ but it appears to no longer exist.
|
||||
|
||||
You can use [tool.rb](tool.rb) to convert the output to a png file.
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
./main Hello | ruby tool.rb > hello.png
|
||||
|
||||
$ zbarimg -q hello.png
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
## To build:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
make
|
||||
```
|
||||
|
||||
|
||||
## To use:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
./prog < input > output
|
||||
```
|
||||
|
||||
|
||||
## Try:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
./try.sh
|
||||
```
|
||||
|
||||
|
||||
@@ -141,11 +141,11 @@ Location: <a href="../../location.html#JP">JP</a> - <em>Japan</em></li>
|
||||
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||||
|
||||
<h2 id="to-build">To build:</h2>
|
||||
<div class="sourceCode" id="cb1"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a> <span class="fu">make</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> make</code></pre>
|
||||
<h2 id="to-use">To use:</h2>
|
||||
<div class="sourceCode" id="cb2"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./prog</span> <span class="op"><</span> input <span class="op">></span> output</span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> ./prog < input > output</code></pre>
|
||||
<h2 id="try">Try:</h2>
|
||||
<div class="sourceCode" id="cb3"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./try.sh</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> ./try.sh</code></pre>
|
||||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||||
<p>If you look closely at the source, you will see code that appears
|
||||
to puts C code that includes itself. How and why? Perhaps it is
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
This entry requires SDL to be installed. See [FAQ 3.8](../../faq.html#SDL) if you
|
||||
don't know how to do this for your system.
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
make
|
||||
```
|
||||
|
||||
@@ -21,7 +21,7 @@ For more detailed information see [2014 maffiodo1 bugs](../../bugs.html#2014_maf
|
||||
|
||||
## To use:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
cat game.level | ./prog 320 200 800 300 128 144 game.rgba game.wav 10343679
|
||||
```
|
||||
|
||||
@@ -41,7 +41,7 @@ note on macOS.
|
||||
|
||||
## Try:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
./giana.sh
|
||||
|
||||
./mario.sh
|
||||
@@ -61,7 +61,7 @@ try:
|
||||
If you wish to change the width and height, defaulting at 640 x 480, say to
|
||||
800 x 800, try:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
ROWS=800 COLS=800 ./mario.sh
|
||||
|
||||
ROWS=800 COLS=800 ./giana.sh
|
||||
@@ -92,14 +92,14 @@ immediately take effect.
|
||||
|
||||
Use `tabsize=4` to see the magic.
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
expand -t 4 prog.c
|
||||
```
|
||||
|
||||
The program returns 0 if the player wins or *non-zero* if the player loses so
|
||||
you can test it and make something useful (or not), like this:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
cat mario.level | ./prog 320 200 800 300 128 144 mario.rgba mario8.wav 10343679 && telnet telehack.com 23
|
||||
```
|
||||
|
||||
@@ -228,7 +228,7 @@ You can input as many objects as you want but the maximum number of objects
|
||||
handled by the program is 333. You can modify this value by editing the source
|
||||
here:
|
||||
|
||||
```c
|
||||
```<!---c-->
|
||||
C[333*7],d=333;
|
||||
```
|
||||
|
||||
|
||||
+11
-11
@@ -143,13 +143,13 @@ Location: <a href="../../location.html#IT">IT</a> - <em>Italian Republic</em> (<
|
||||
<h2 id="to-build">To build:</h2>
|
||||
<p>This entry requires SDL to be installed. See <a href="../../faq.html#SDL">FAQ 3.8</a> if you
|
||||
don’t know how to do this for your system.</p>
|
||||
<div class="sourceCode" id="cb1"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a> <span class="fu">make</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> make</code></pre>
|
||||
<h3 id="bugs-and-misfeatures">Bugs and (Mis)features:</h3>
|
||||
<p>The current status of this entry is:</p>
|
||||
<pre><code> STATUS: INABIAF - please **DO NOT** fix</code></pre>
|
||||
<p>For more detailed information see <a href="../../bugs.html#2014_maffiodo1">2014 maffiodo1 bugs</a>.</p>
|
||||
<h2 id="to-use">To use:</h2>
|
||||
<div class="sourceCode" id="cb3"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a> <span class="fu">cat</span> game.level <span class="kw">|</span> <span class="ex">./prog</span> 320 200 800 300 128 144 game.rgba game.wav 10343679</span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> cat game.level | ./prog 320 200 800 300 128 144 game.rgba game.wav 10343679</code></pre>
|
||||
<p>The parameters to the program are:</p>
|
||||
<ol type="1">
|
||||
<li>Window width.</li>
|
||||
@@ -164,9 +164,9 @@ don’t know how to do this for your system.</p>
|
||||
note on macOS.</li>
|
||||
</ol>
|
||||
<h2 id="try">Try:</h2>
|
||||
<div class="sourceCode" id="cb4"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./giana.sh</span></span>
|
||||
<span id="cb4-2"><a href="#cb4-2" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb4-3"><a href="#cb4-3" aria-hidden="true" tabindex="-1"></a> <span class="ex">./mario.sh</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> ./giana.sh
|
||||
|
||||
./mario.sh</code></pre>
|
||||
<p>If you end up telnetting to the server (feature of <a href="mario.sh">mario.sh</a>) you can
|
||||
try:</p>
|
||||
<pre><code> ls # show files including games
|
||||
@@ -175,9 +175,9 @@ try:</p>
|
||||
starwars # animated Star Wars 'film'</code></pre>
|
||||
<p>If you wish to change the width and height, defaulting at 640 x 480, say to
|
||||
800 x 800, try:</p>
|
||||
<div class="sourceCode" id="cb6"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a> <span class="va">ROWS</span><span class="op">=</span>800 <span class="va">COLS</span><span class="op">=</span>800 <span class="ex">./mario.sh</span></span>
|
||||
<span id="cb6-2"><a href="#cb6-2" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb6-3"><a href="#cb6-3" aria-hidden="true" tabindex="-1"></a> <span class="va">ROWS</span><span class="op">=</span>800 <span class="va">COLS</span><span class="op">=</span>800 <span class="ex">./giana.sh</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> ROWS=800 COLS=800 ./mario.sh
|
||||
|
||||
ROWS=800 COLS=800 ./giana.sh</code></pre>
|
||||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||||
<p>A classic for a particular generation. Like all good programs, being data
|
||||
driven means you can do fun things in small spaces.</p>
|
||||
@@ -191,10 +191,10 @@ immediately take effect.</p>
|
||||
<h2 id="authors-remarks">Author’s remarks:</h2>
|
||||
<h3 id="remarks">Remarks</h3>
|
||||
<p>Use <code>tabsize=4</code> to see the magic.</p>
|
||||
<div class="sourceCode" id="cb8"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a> <span class="fu">expand</span> <span class="at">-t</span> 4 prog.c</span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> expand -t 4 prog.c</code></pre>
|
||||
<p>The program returns 0 if the player wins or <em>non-zero</em> if the player loses so
|
||||
you can test it and make something useful (or not), like this:</p>
|
||||
<div class="sourceCode" id="cb9"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a> <span class="fu">cat</span> mario.level <span class="kw">|</span> <span class="ex">./prog</span> 320 200 800 300 128 144 mario.rgba mario8.wav 10343679 <span class="kw">&&</span> <span class="ex">telnet</span> telehack.com 23</span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> cat mario.level | ./prog 320 200 800 300 128 144 mario.rgba mario8.wav 10343679 && telnet telehack.com 23</code></pre>
|
||||
<p>and type in: <code>starwars</code></p>
|
||||
<p>This is an engine for <a href="https://en.wikipedia.org/wiki/Platform_game">platform
|
||||
game</a>. It can be used to create
|
||||
@@ -288,7 +288,7 @@ to create.</p>
|
||||
You can input as many objects as you want but the maximum number of objects
|
||||
handled by the program is 333. You can modify this value by editing the source
|
||||
here:</p>
|
||||
<div class="sourceCode" id="cb12"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true" tabindex="-1"></a> C<span class="op">[</span><span class="dv">333</span><span class="op">*</span><span class="dv">7</span><span class="op">],</span>d<span class="op">=</span><span class="dv">333</span><span class="op">;</span></span></code></pre></div>
|
||||
<pre class="<!---c-->"><code> C[333*7],d=333;</code></pre>
|
||||
<p>Each row has six columns:</p>
|
||||
<ol type="1">
|
||||
<li><code>Screen X</code> : <code>x</code> position of the object in the level.</li>
|
||||
|
||||
+10
-10
@@ -1,6 +1,6 @@
|
||||
## To build:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
make
|
||||
```
|
||||
|
||||
@@ -21,14 +21,14 @@ For more detailed information see [2014 maffiodo2 bugs](../../bugs.html#2014_maf
|
||||
|
||||
## To use:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
./prog arg
|
||||
```
|
||||
|
||||
|
||||
## Try:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
./try.sh
|
||||
```
|
||||
|
||||
@@ -41,14 +41,14 @@ as fun but it's 121 bytes instead of 140.
|
||||
|
||||
### Alternate build:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
make alt
|
||||
```
|
||||
|
||||
|
||||
### Alternate use:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
cat image.rgb | ./prog.alt
|
||||
```
|
||||
|
||||
@@ -91,7 +91,7 @@ The program will crash if run without parameters.
|
||||
If you have a terminal geometry than is different from the common 80x25 you can
|
||||
modify the *output width* by changing the value of the first variable:
|
||||
|
||||
```c
|
||||
```<!---c-->
|
||||
d=80,
|
||||
```
|
||||
|
||||
@@ -99,14 +99,14 @@ modify the *output width* by changing the value of the first variable:
|
||||
|
||||
Type this:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
cat image.rgb | ./prog " .:;Y0"
|
||||
```
|
||||
|
||||
You can use your own image. Convert the image to a raw RGB image. Using
|
||||
ImageMagick it's very simple:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
convert -geometry 80x source.jpg image.rgb
|
||||
```
|
||||
|
||||
@@ -116,7 +116,7 @@ program is the *conversion ramp*. You can use different ramps or create your own
|
||||
|
||||
These are some ramps you can try:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
./prog " :1"
|
||||
./prog " .:;Y0"
|
||||
./prog " .:-=+*#%@"
|
||||
@@ -127,7 +127,7 @@ These are some ramps you can try:
|
||||
|
||||
An alternative version of this program is only 121bytes long:
|
||||
|
||||
```c
|
||||
```<!---c-->
|
||||
d=80,e,j;g(){j+=getchar();}main(){for(;;){j=0;g();if(j<0)break;g(g());putchar(" .:#@"[j/3*5>>8]);if(!(++e%d))puts("");}}
|
||||
```
|
||||
|
||||
|
||||
+13
-13
@@ -141,7 +141,7 @@ Location: <a href="../../location.html#IT">IT</a> - <em>Italian Republic</em> (<
|
||||
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||||
|
||||
<h2 id="to-build">To build:</h2>
|
||||
<div class="sourceCode" id="cb1"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a> <span class="fu">make</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> make</code></pre>
|
||||
<p>There is a 121 byte version provided by the author. See <a href="#alternate-code">Alternate
|
||||
code</a> below.</p>
|
||||
<h3 id="bugs-and-misfeatures">Bugs and (Mis)features:</h3>
|
||||
@@ -149,16 +149,16 @@ code</a> below.</p>
|
||||
<pre><code> STATUS: INABIAF - please **DO NOT** fix</code></pre>
|
||||
<p>For more detailed information see <a href="../../bugs.html#2014_maffiodo2">2014 maffiodo2 bugs</a>.</p>
|
||||
<h2 id="to-use">To use:</h2>
|
||||
<div class="sourceCode" id="cb3"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./prog</span> arg</span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> ./prog arg</code></pre>
|
||||
<h2 id="try">Try:</h2>
|
||||
<div class="sourceCode" id="cb4"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./try.sh</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> ./try.sh</code></pre>
|
||||
<h2 id="alternate-code">Alternate code:</h2>
|
||||
<p>This shorter version is provided by the author. It has a fixed ramp and so not
|
||||
as fun but it’s 121 bytes instead of 140.</p>
|
||||
<h3 id="alternate-build">Alternate build:</h3>
|
||||
<div class="sourceCode" id="cb5"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a> <span class="fu">make</span> alt</span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> make alt</code></pre>
|
||||
<h3 id="alternate-use">Alternate use:</h3>
|
||||
<div class="sourceCode" id="cb6"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a> <span class="fu">cat</span> image.rgb <span class="kw">|</span> <span class="ex">./prog.alt</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> cat image.rgb | ./prog.alt</code></pre>
|
||||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||||
<p>On the face of it :-) given what this program does one might wonder what makes
|
||||
this winning entry special. But when you realize the source is small enough for posting
|
||||
@@ -185,24 +185,24 @@ from <code>stdin</code> and print the ASCII ART to <code>stdout</code>.</p>
|
||||
<h3 id="screen-size">Screen size</h3>
|
||||
<p>If you have a terminal geometry than is different from the common 80x25 you can
|
||||
modify the <em>output width</em> by changing the value of the first variable:</p>
|
||||
<div class="sourceCode" id="cb7"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a> d<span class="op">=</span><span class="dv">80</span><span class="op">,</span></span></code></pre></div>
|
||||
<pre class="<!---c-->"><code> d=80,</code></pre>
|
||||
<h3 id="something-to-try">Something to try</h3>
|
||||
<p>Type this:</p>
|
||||
<div class="sourceCode" id="cb8"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a> <span class="fu">cat</span> image.rgb <span class="kw">|</span> <span class="ex">./prog</span> <span class="st">" .:;Y0"</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> cat image.rgb | ./prog " .:;Y0"</code></pre>
|
||||
<p>You can use your own image. Convert the image to a raw RGB image. Using
|
||||
ImageMagick it’s very simple:</p>
|
||||
<div class="sourceCode" id="cb9"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">convert</span> <span class="at">-geometry</span> 80x source.jpg image.rgb</span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> convert -geometry 80x source.jpg image.rgb</code></pre>
|
||||
<p>This program require one parameter or it will crash. The parameter of the
|
||||
program is the <em>conversion ramp</em>. You can use different ramps or create your own
|
||||
(for example using some letters of your name).</p>
|
||||
<p>These are some ramps you can try:</p>
|
||||
<div class="sourceCode" id="cb10"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./prog</span> <span class="st">" :1"</span></span>
|
||||
<span id="cb10-2"><a href="#cb10-2" aria-hidden="true" tabindex="-1"></a> <span class="ex">./prog</span> <span class="st">" .:;Y0"</span></span>
|
||||
<span id="cb10-3"><a href="#cb10-3" aria-hidden="true" tabindex="-1"></a> <span class="ex">./prog</span> <span class="st">" .:-=+*#%@"</span></span>
|
||||
<span id="cb10-4"><a href="#cb10-4" aria-hidden="true" tabindex="-1"></a> <span class="ex">./prog</span> <span class="st">" .,:!-iots&8%#@$"</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> ./prog " :1"
|
||||
./prog " .:;Y0"
|
||||
./prog " .:-=+*#%@"
|
||||
./prog " .,:!-iots&8%#@$"</code></pre>
|
||||
<h3 id="byte-version">121 byte version</h3>
|
||||
<p>An alternative version of this program is only 121bytes long:</p>
|
||||
<div class="sourceCode" id="cb11"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true" tabindex="-1"></a> d<span class="op">=</span><span class="dv">80</span><span class="op">,</span>e<span class="op">,</span>j<span class="op">;</span>g<span class="op">(){</span>j<span class="op">+=</span>getchar<span class="op">();}</span>main<span class="op">(){</span><span class="cf">for</span><span class="op">(;;){</span>j<span class="op">=</span><span class="dv">0</span><span class="op">;</span>g<span class="op">();</span><span class="cf">if</span><span class="op">(</span>j<span class="op"><</span><span class="dv">0</span><span class="op">)</span><span class="cf">break</span><span class="op">;</span>g<span class="op">(</span>g<span class="op">());</span>putchar<span class="op">(</span><span class="st">" .:#@"</span><span class="op">[</span>j<span class="op">/</span><span class="dv">3</span><span class="op">*</span><span class="dv">5</span><span class="op">>></span><span class="dv">8</span><span class="op">]);</span><span class="cf">if</span><span class="op">(!(++</span>e<span class="op">%</span>d<span class="op">))</span>puts<span class="op">(</span><span class="st">""</span><span class="op">);}}</span></span></code></pre></div>
|
||||
<pre class="<!---c-->"><code> d=80,e,j;g(){j+=getchar();}main(){for(;;){j=0;g();if(j<0)break;g(g());putchar(" .:#@"[j/3*5>>8]);if(!(++e%d))puts("");}}</code></pre>
|
||||
<p>This alternative version has a <strong>fixed ramp</strong>. It’s smaller but it’s not so fun to use…</p>
|
||||
<!--
|
||||
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
## To build:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
make
|
||||
```
|
||||
|
||||
|
||||
## To use:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
./prog [arg ..]
|
||||
```
|
||||
|
||||
|
||||
## Try:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
./try.sh
|
||||
```
|
||||
|
||||
|
||||
@@ -141,11 +141,11 @@ Location: <a href="../../location.html#FR">FR</a> - <em>French Republic</em> (<e
|
||||
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||||
|
||||
<h2 id="to-build">To build:</h2>
|
||||
<div class="sourceCode" id="cb1"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a> <span class="fu">make</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> make</code></pre>
|
||||
<h2 id="to-use">To use:</h2>
|
||||
<div class="sourceCode" id="cb2"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./prog</span> [arg ..]</span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> ./prog [arg ..]</code></pre>
|
||||
<h2 id="try">Try:</h2>
|
||||
<div class="sourceCode" id="cb3"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./try.sh</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> ./try.sh</code></pre>
|
||||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||||
<p>Think of this as a Maker Faire’s make. :-)</p>
|
||||
<p>It works reasonably well. While not super ultra-featured, it does fair well
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
## To build:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
make
|
||||
```
|
||||
|
||||
|
||||
## To use:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
./hecate.sh
|
||||
|
||||
./glock.sh
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
## Try:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
./try.sh
|
||||
```
|
||||
|
||||
@@ -41,7 +41,7 @@ under one minute.
|
||||
To start, compile and run the program. To resume, compile and run the
|
||||
output repeatedly until you have won/lost the game. For example:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
cp prog.c run.c
|
||||
gcc -O0 run.c -o run && ./run | tee run.c
|
||||
gcc -O2 run.c -o run && ./run | tee run.c
|
||||
@@ -106,7 +106,7 @@ a primary input.
|
||||
that there are no files named "run" and "run.c" in current directory
|
||||
(they will be overwritten) and run:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
perl prog.c | bash
|
||||
```
|
||||
|
||||
|
||||
+10
-10
@@ -141,13 +141,13 @@ Location: <a href="../../location.html#US">US</a> - <em>United States of America
|
||||
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||||
|
||||
<h2 id="to-build">To build:</h2>
|
||||
<div class="sourceCode" id="cb1"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a> <span class="fu">make</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> make</code></pre>
|
||||
<h2 id="to-use">To use:</h2>
|
||||
<div class="sourceCode" id="cb2"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./hecate.sh</span></span>
|
||||
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb2-3"><a href="#cb2-3" aria-hidden="true" tabindex="-1"></a> <span class="ex">./glock.sh</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> ./hecate.sh
|
||||
|
||||
./glock.sh</code></pre>
|
||||
<h2 id="try">Try:</h2>
|
||||
<div class="sourceCode" id="cb3"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./try.sh</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> ./try.sh</code></pre>
|
||||
<p>This script will ask you if you wish to try again after each run. Type in any
|
||||
character other than <code>y</code> or <code>Y</code> to exit at this point.</p>
|
||||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||||
@@ -160,10 +160,10 @@ or unspecified behavior?</p>
|
||||
under one minute.</p>
|
||||
<p>To start, compile and run the program. To resume, compile and run the
|
||||
output repeatedly until you have won/lost the game. For example:</p>
|
||||
<div class="sourceCode" id="cb4"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a> <span class="fu">cp</span> prog.c run.c</span>
|
||||
<span id="cb4-2"><a href="#cb4-2" aria-hidden="true" tabindex="-1"></a> <span class="fu">gcc</span> <span class="at">-O0</span> run.c <span class="at">-o</span> run <span class="kw">&&</span> <span class="ex">./run</span> <span class="kw">|</span> <span class="fu">tee</span> run.c</span>
|
||||
<span id="cb4-3"><a href="#cb4-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">gcc</span> <span class="at">-O2</span> run.c <span class="at">-o</span> run <span class="kw">&&</span> <span class="ex">./run</span> <span class="kw">|</span> <span class="fu">tee</span> run.c</span>
|
||||
<span id="cb4-4"><a href="#cb4-4" aria-hidden="true" tabindex="-1"></a> <span class="ex">...</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> cp prog.c run.c
|
||||
gcc -O0 run.c -o run && ./run | tee run.c
|
||||
gcc -O2 run.c -o run && ./run | tee run.c
|
||||
...</code></pre>
|
||||
<h3 id="details">Details</h3>
|
||||
<p><code>Sinon</code> is played by compiling and running the output repeatedly. Two
|
||||
factors determine what actions are taken:</p>
|
||||
@@ -211,7 +211,7 @@ a primary input.</p>
|
||||
<p><code>Sinon</code> has a demo mode that plays the game automatically. Make sure
|
||||
that there are no files named “run” and “run.c” in current directory
|
||||
(they will be overwritten) and run:</p>
|
||||
<div class="sourceCode" id="cb5"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a> <span class="fu">perl</span> prog.c <span class="kw">|</span> <span class="fu">bash</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> perl prog.c | bash</code></pre>
|
||||
<p>File size and CRC32 of <a href="prog.c">prog.c</a> are embedded in line 7.</p>
|
||||
<p>Process for making <code>Sinon</code> is included in <a href="spoiler.html">spoiler.html</a>.</p>
|
||||
<p>Layout of this code is based on Asada Shino, also known as “<code>Sinon</code>”,
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
## To build:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
make
|
||||
```
|
||||
|
||||
|
||||
## To use:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
./prog
|
||||
```
|
||||
|
||||
|
||||
@@ -141,9 +141,9 @@ Location: <a href="../../location.html#US">US</a> - <em>United States of America
|
||||
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||||
|
||||
<h2 id="to-build">To build:</h2>
|
||||
<div class="sourceCode" id="cb1"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a> <span class="fu">make</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> make</code></pre>
|
||||
<h2 id="to-use">To use:</h2>
|
||||
<div class="sourceCode" id="cb2"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./prog</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> ./prog</code></pre>
|
||||
<p>HINT: Try pressing the left and right arrow keys as needed.
|
||||
Also try pressing space/enter to select options.
|
||||
Pressing Q or Escape may end the fun before you are ready. :-)</p>
|
||||
|
||||
+8
-8
@@ -1,6 +1,6 @@
|
||||
## To build:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
make
|
||||
```
|
||||
|
||||
@@ -22,7 +22,7 @@ For more detailed information see [2014 vik bugs](../../bugs.html#2014_vik).
|
||||
|
||||
## To use:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
echo foo | ./prog > audio_file.raw
|
||||
|
||||
echo foo | ./prog | mplayer -demuxer rawaudio -
|
||||
@@ -31,7 +31,7 @@ For more detailed information see [2014 vik bugs](../../bugs.html#2014_vik).
|
||||
|
||||
## Try:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
./try.sh
|
||||
```
|
||||
|
||||
@@ -44,7 +44,7 @@ instructions on how to get it to work with Windows.
|
||||
|
||||
### Alternate build:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
make alt
|
||||
```
|
||||
|
||||
@@ -59,13 +59,13 @@ Use `prog.alt` as you would `prog` above as well as below.
|
||||
This program sets a new tone for obfuscation. But do you understand
|
||||
what it says about obfuscation? Perhaps:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
./prog < prog.c > prog.raw
|
||||
```
|
||||
|
||||
might speak to your coding style? If not, then perhaps:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
./prog < README.md | mplayer -demuxer rawaudio -
|
||||
```
|
||||
|
||||
@@ -87,7 +87,7 @@ Don't forget the last '`-`' as it makes `mplayer(1)` read from `stdin`.
|
||||
|
||||
## Convert audio file with Morse signals to text
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
./prog e < audio_file.raw
|
||||
```
|
||||
|
||||
@@ -106,7 +106,7 @@ Microsoft compilers add a carriage return to newlines, and to compile the
|
||||
program with this platform, the following line can be added to `main()` before
|
||||
any code in order for the program to run correctly:
|
||||
|
||||
```c
|
||||
```<!---c-->
|
||||
_setmode(_fileno(stdout), 0x8000);
|
||||
```
|
||||
|
||||
|
||||
+10
-10
@@ -141,7 +141,7 @@ Location: <a href="../../location.html#US">US</a> - <em>United States of America
|
||||
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||||
|
||||
<h2 id="to-build">To build:</h2>
|
||||
<div class="sourceCode" id="cb1"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a> <span class="fu">make</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> make</code></pre>
|
||||
<p>There is an alternate version that will theoretically work with Windows
|
||||
compilers (if anything in Windows works :-) ). See the <a href="#alternate-code">Alternate
|
||||
code</a> section below.</p>
|
||||
@@ -150,24 +150,24 @@ code</a> section below.</p>
|
||||
<pre><code> STATUS: known bug - please help us fix</code></pre>
|
||||
<p>For more detailed information see <a href="../../bugs.html#2014_vik">2014 vik bugs</a>.</p>
|
||||
<h2 id="to-use">To use:</h2>
|
||||
<div class="sourceCode" id="cb3"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a> <span class="bu">echo</span> foo <span class="kw">|</span> <span class="ex">./prog</span> <span class="op">></span> audio_file.raw</span>
|
||||
<span id="cb3-2"><a href="#cb3-2" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb3-3"><a href="#cb3-3" aria-hidden="true" tabindex="-1"></a> <span class="bu">echo</span> foo <span class="kw">|</span> <span class="ex">./prog</span> <span class="kw">|</span> <span class="ex">mplayer</span> <span class="at">-demuxer</span> rawaudio <span class="at">-</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> echo foo | ./prog > audio_file.raw
|
||||
|
||||
echo foo | ./prog | mplayer -demuxer rawaudio -</code></pre>
|
||||
<h2 id="try">Try:</h2>
|
||||
<div class="sourceCode" id="cb4"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./try.sh</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> ./try.sh</code></pre>
|
||||
<h2 id="alternate-code">Alternate code:</h2>
|
||||
<p>The alternate code, <a href="prog.alt.c">prog.alt.c</a>, is based on the author’s
|
||||
instructions on how to get it to work with Windows.</p>
|
||||
<h3 id="alternate-build">Alternate build:</h3>
|
||||
<div class="sourceCode" id="cb5"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a> <span class="fu">make</span> alt</span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> make alt</code></pre>
|
||||
<h3 id="alternate-use">Alternate use:</h3>
|
||||
<p>Use <code>prog.alt</code> as you would <code>prog</code> above as well as below.</p>
|
||||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||||
<p>This program sets a new tone for obfuscation. But do you understand
|
||||
what it says about obfuscation? Perhaps:</p>
|
||||
<div class="sourceCode" id="cb6"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./prog</span> <span class="op"><</span> prog.c <span class="op">></span> prog.raw</span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> ./prog < prog.c > prog.raw</code></pre>
|
||||
<p>might speak to your coding style? If not, then perhaps:</p>
|
||||
<div class="sourceCode" id="cb7"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./prog</span> <span class="op"><</span> README.md <span class="kw">|</span> <span class="ex">mplayer</span> <span class="at">-demuxer</span> rawaudio <span class="at">-</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> ./prog < README.md | mplayer -demuxer rawaudio -</code></pre>
|
||||
<p>might help? :-)</p>
|
||||
<h2 id="authors-remarks">Author’s remarks:</h2>
|
||||
<h3 id="remarks">Remarks</h3>
|
||||
@@ -177,7 +177,7 @@ I can tell, there are at least six chocolate references in this program.</p>
|
||||
Via streaming to <code>mplayer(1)</code>, you can listen to the Morse audio.</p>
|
||||
<p>Don’t forget the last ‘<code>-</code>’ as it makes <code>mplayer(1)</code> read from <code>stdin</code>.</p>
|
||||
<h2 id="convert-audio-file-with-morse-signals-to-text">Convert audio file with Morse signals to text</h2>
|
||||
<div class="sourceCode" id="cb8"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./prog</span> e <span class="op"><</span> audio_file.raw</span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> ./prog e < audio_file.raw</code></pre>
|
||||
<p>or alternatively pass a .wav file as input.</p>
|
||||
<p>The preferred input format 44.1kHz stereo, but it does a decent job on mono
|
||||
input and different frequencies as well.</p>
|
||||
@@ -187,7 +187,7 @@ the program relies on writing binary data to <code>stdout</code>.</p>
|
||||
<p>Microsoft compilers add a carriage return to newlines, and to compile the
|
||||
program with this platform, the following line can be added to <code>main()</code> before
|
||||
any code in order for the program to run correctly:</p>
|
||||
<div class="sourceCode" id="cb9"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a> _setmode<span class="op">(</span>_fileno<span class="op">(</span>stdout<span class="op">),</span> <span class="bn">0x8000</span><span class="op">);</span></span></code></pre></div>
|
||||
<pre class="<!---c-->"><code> _setmode(_fileno(stdout), 0x8000);</code></pre>
|
||||
<p>NOTE: see the <a href="prog.alt.c">alternate code</a> for this.</p>
|
||||
<h3 id="known-issues">Known Issues</h3>
|
||||
<p>The program uses a quite simple algorithm for detecting tone on and off events
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
## To build:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
make
|
||||
```
|
||||
|
||||
|
||||
## To use:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
./prog
|
||||
```
|
||||
|
||||
|
||||
## Try:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
./try.sh
|
||||
```
|
||||
|
||||
@@ -22,7 +22,7 @@ By default that will use `indent(1)` found by the shell `type -P indent` and
|
||||
`sed(1)` found by the shell `type -P sed` but if you want to change these, say
|
||||
to try a different beautifier, you can do it like:
|
||||
|
||||
```sh
|
||||
```<!---sh-->
|
||||
INDENT=bcpp ./try.sh
|
||||
```
|
||||
|
||||
|
||||
@@ -141,15 +141,15 @@ Location: <a href="../../location.html#NL">NL</a> - <em>Kingdom of the Netherlan
|
||||
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||||
|
||||
<h2 id="to-build">To build:</h2>
|
||||
<div class="sourceCode" id="cb1"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a> <span class="fu">make</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> make</code></pre>
|
||||
<h2 id="to-use">To use:</h2>
|
||||
<div class="sourceCode" id="cb2"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./prog</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> ./prog</code></pre>
|
||||
<h2 id="try">Try:</h2>
|
||||
<div class="sourceCode" id="cb3"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a> <span class="ex">./try.sh</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> ./try.sh</code></pre>
|
||||
<p>By default that will use <code>indent(1)</code> found by the shell <code>type -P indent</code> and
|
||||
<code>sed(1)</code> found by the shell <code>type -P sed</code> but if you want to change these, say
|
||||
to try a different beautifier, you can do it like:</p>
|
||||
<div class="sourceCode" id="cb4"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a> <span class="va">INDENT</span><span class="op">=</span>bcpp <span class="ex">./try.sh</span></span></code></pre></div>
|
||||
<pre class="<!---sh-->"><code> INDENT=bcpp ./try.sh</code></pre>
|
||||
<p>which would change it to use <code>bcpp(1)</code> instead of <code>indent(1)</code>. Do similar for
|
||||
<code>sed(1)</code> only use the name <code>SED</code>.</p>
|
||||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||||
|
||||
Reference in new issue
Block a user