Add preview of 1984-2019
The 2020 winners are hinted it, but the source code is not there,
nor are the hints. Someone could look into the HTML and
see what was commented out, but that is not a problem because
WHO won is known and the name of their AWARD is known already.
Moreover a number of the winners have talked about what their
entirs do, so the commented out spoiler text is not a bit problem.
One will find HTML commented out with:
<!-- XXX remove when 2020 is ready
2020 links here
XXX remove when 2020 is ready -->
The "XXX remove when 2020 is ready" string is found at the
start and end comment blocks. Again, soneone could read
what was commented out, but that is OK since most of that
information is known or can be known. The following files
have such HTML comment blocks in them.
./winners.html
./years-spoiler.html
./years.html
In addition, ./all/summary.txt was modified to not
include the 2020 entries for the momemt.
The 2020 winner code AND write-ups are NOT part of this set.
p.s. The all/all.tar.bz2 does not contain the 2020 source code (yet?).
This commit is contained in:
1 parent
28efc67f5d
commit
c0663537cb
1683 files changed
+220064
No files matched your search
@@ -0,0 +1,138 @@
|
||||
#!/usr/bin/env make
|
||||
#
|
||||
# 2011 makefile
|
||||
#
|
||||
# This work by Landon Curt Noll, Simon Cooper, and Leonid A. Broukhis
|
||||
# is licensed under:
|
||||
#
|
||||
# Creative Commons Attribution-ShareAlike 3.0 Unported License.
|
||||
#
|
||||
# See: http://creativecommons.org/licenses/by-sa/3.0/
|
||||
|
||||
|
||||
################
|
||||
# tool locations
|
||||
################
|
||||
#
|
||||
SHELL= /bin/bash
|
||||
CP= cp
|
||||
CPP= cpp
|
||||
GUNZIP= gunzip
|
||||
LD= ld
|
||||
MAKE= make
|
||||
RM= rm
|
||||
SED= sed
|
||||
TAR= tar
|
||||
TRUE= true
|
||||
|
||||
# Compiler warnings
|
||||
#
|
||||
CWARN=
|
||||
|
||||
# compiler standard
|
||||
#
|
||||
CSTD= -ansi
|
||||
|
||||
# compiler bit architecture
|
||||
#
|
||||
# Some entries require 32-bitness,
|
||||
# other entries require 64-bitess.
|
||||
# By default we assume nothing.
|
||||
#
|
||||
# Under Mac OS X / Darwin, we must use -arch i386
|
||||
# Linux does not like this do let gnu make
|
||||
# detect the target and only add for Darwin.
|
||||
#
|
||||
ifeq ($(target),)
|
||||
target=$(shell uname -s 2>/dev/null)
|
||||
endif
|
||||
ifeq ($(target),Darwin)
|
||||
ARCH= -arch i386
|
||||
else
|
||||
ARCH=
|
||||
endif
|
||||
|
||||
# optimization
|
||||
#
|
||||
# Most compiles will safely use -O2. Some can use only -O1 or -O.
|
||||
# A few compilers have broken optimizers or this entry make break
|
||||
# under those buggy optimizers and thus you may not want anything.
|
||||
#
|
||||
OPT= -O2
|
||||
|
||||
# default flags for ANSI C compilation
|
||||
#
|
||||
CFLAGS= ${CWARN} ${CSTD} ${ARCH} ${OPT}
|
||||
|
||||
# ANSI compiler
|
||||
#
|
||||
# Set CC to the name of your ANSI compiler.
|
||||
#
|
||||
CC= cc
|
||||
|
||||
|
||||
##############################
|
||||
# Special flags for this entry
|
||||
##############################
|
||||
#
|
||||
ENTRY= goren
|
||||
DATA=
|
||||
|
||||
|
||||
#################
|
||||
# build the entry
|
||||
#################
|
||||
#
|
||||
all: ${ENTRY} ${DATA}
|
||||
@${TRUE}
|
||||
|
||||
${ENTRY}: ${ENTRY}.c
|
||||
${CC} ${CFLAGS} ${ENTRY}.c -o ${ENTRY}
|
||||
|
||||
# alternative executable
|
||||
#
|
||||
alt:
|
||||
@${TRUE}
|
||||
|
||||
|
||||
###############
|
||||
# utility rules
|
||||
###############
|
||||
#
|
||||
everything: all alt
|
||||
|
||||
clean:
|
||||
${RM} -f ${ENTRY}.o
|
||||
|
||||
clobber: clean
|
||||
${RM} -f ${ENTRY}
|
||||
|
||||
nuke: clobber
|
||||
@echo gnab gib!
|
||||
|
||||
install:
|
||||
@echo "Surely you're joking Mr. Feynman!"
|
||||
|
||||
# backwards compatibility
|
||||
#
|
||||
build: all
|
||||
|
||||
|
||||
##################
|
||||
# 133t hacker rulz
|
||||
##################
|
||||
#
|
||||
love:
|
||||
@echo 'not war?'
|
||||
|
||||
haste:
|
||||
$(MAKE) waste
|
||||
|
||||
waste:
|
||||
@echo 'waste'
|
||||
|
||||
easter_egg:
|
||||
@echo you expected to mis-understand this $${RANDOM} magic
|
||||
@echo chongo '<was here>' "/\\oo/\\"
|
||||
@echo Readers shall not be disallowed from being unable to partly misunderstand this final echo.
|
||||
@${TRUE}
|
||||
@@ -0,0 +1,20 @@
|
||||
typedef unsigned char t;t*F="%c",l[]="|\\/=_ \n](.\0(),*(.(=(}*.)[[*.",N='\n',*
|
||||
r;typedef(*H)();extern H Ar;Q(a){return(a|-a)>>31;}H S(c,a){return(H)(a&~c|(int
|
||||
)Ar&c);}extern t*ist;V(t*u){*u^=*u&2^(*u>>7)*185;}Z(t*u,t n){*u-=n;}e(t c,H h){
|
||||
R(h,Q(* r^c));}
|
||||
I(){r=l +7-4*Q(
|
||||
getchar ()^*l);
|
||||
}R(H h, int c){Ar=S
|
||||
(c,h);- main() ;}P(){r
|
||||
++;}z() { O(&N);}
|
||||
O(t*c){ printf( F,+*c);
|
||||
}T(){r= "This is not a function\n" ;}w(U){
|
||||
U=Z(r,8 ); r-=~Q(*
|
||||
r/8-4); return 0; }M(){r=
|
||||
ist-68; } h(){t G
|
||||
=r[1]-r [2]^*r;
|
||||
G^=30;V (&G);e(
|
||||
0,(O(&G ),P(P(*
|
||||
r++)),z));}g(){M();R(h,0);}f(){P(O(r));e('f',g);}p(){P();e('a',f);}d(){P(O(r));
|
||||
e('n',p);}c(u){u=r[-2];T(Ar=d);R(f,Q(u^'"'));}n(){e(w(O(l+*r%8)),c);}a(){I();R(
|
||||
n,0);}main(){S(Q(Ar),a)();}H Ar;t*ist="Rene Magritte"-(1898-1967);
|
||||
@@ -0,0 +1,120 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta name="GENERATOR" content="mkd2html 2.1.3 DL=DISCOUNT">
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
|
||||
<link rel="stylesheet"
|
||||
type="text/css"
|
||||
href="../hint.css">
|
||||
<title>Most artistic</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Most artistic</h1>
|
||||
|
||||
<p>Uri Goren<br>
|
||||
<a href="mailto:goren.uri@gmail.com">goren.uri@gmail.com</a></p>
|
||||
|
||||
<h2>Judges' comments:</h2>
|
||||
|
||||
<h3>To build:</h3>
|
||||
|
||||
<pre><code>make goren
|
||||
</code></pre>
|
||||
|
||||
<h3>To run:</h3>
|
||||
|
||||
<pre><code>echo "some text" | ./goren
|
||||
</code></pre>
|
||||
|
||||
<h3>Try:</h3>
|
||||
|
||||
<pre><code>echo "Hello, world!" | ./goren
|
||||
</code></pre>
|
||||
|
||||
<h3>Selected Judges Remarks:</h3>
|
||||
|
||||
<p>In the words of <a href="http://en.wikipedia.org/wiki/Rene_Magritte">René François Ghislain Magritte Magritte</a>:</p>
|
||||
|
||||
<p><img src="http://upload.wikimedia.org/wikipedia/en/b/b9/MagrittePipe.jpg" title="Ceci n'est pas une pipe" alt="This is not a pipe" /></p>
|
||||
|
||||
<p>One may ask the surrealist question:</p>
|
||||
|
||||
<pre><code>echo 'If | is just a representation of a pipe, then how can data stuff it?' | ./goren
|
||||
</code></pre>
|
||||
|
||||
<p>However if one takes a firm stand and declares:</p>
|
||||
|
||||
<pre><code>echo '| is just a representation of a pipe because I say so! So stuff it!' | ./goren
|
||||
</code></pre>
|
||||
|
||||
<p>something happens! Why?</p>
|
||||
|
||||
<h2>Author’s comments:</h2>
|
||||
|
||||
<p>This program was written in homage to Rene Magritte’s picture “La
|
||||
trahison des images” (The Treachery of Images).</p>
|
||||
|
||||
<p>In order to show my unconditional admiration of this work, I avoided
|
||||
using conditions.</p>
|
||||
|
||||
<p>In this work, Magritte points out that a picture of a pipe is not
|
||||
a pipe. But what IS a pipe? This program tries to provide an answer.</p>
|
||||
|
||||
<p>Magritte’s [test for pipes](http://en.wikipedia.org/wiki/The_Treachery_of_Images} is:</p>
|
||||
|
||||
<pre><code>The famous pipe. How people reproached me for it! And yet, could
|
||||
you stuff my pipe? No, it's just a representation, is it not?
|
||||
</code></pre>
|
||||
|
||||
<p>Accordingly, this program only approves pipes which can be used for
|
||||
stuffing data.</p>
|
||||
|
||||
<p>One thing I tried to achieve is condition free programming. Many
|
||||
have noted that conditions make the code harder to read and understand.
|
||||
A good example would be:</p>
|
||||
|
||||
<p><a href="http://www.ioccc.org/years.html#2004_burley">Brent Burley’s 2004 IOCCC winner</a></p>
|
||||
|
||||
<p>That entry omits conditional statements such as “if” and “while”.
|
||||
His achievement in improving clarity by omitting conditions is
|
||||
impressive, but I think it can be taken further, in two ways.</p>
|
||||
|
||||
<p>First, conditional operators, such as ?:, && and ||, can be thrown
|
||||
away. Second, using setjmp and longjmp, which are unfortunately
|
||||
not in common use, might make it difficult for a novice programmer
|
||||
to understnad the code without referring to the man page.</p>
|
||||
|
||||
<p>By removing these, the code is 100% condition free, and every
|
||||
function runs its instructions in perfect order. Naturally, this
|
||||
makes the program flow trivial to understand. This can be verified
|
||||
by disassembling the compiled code and looking for conditional jumps
|
||||
(when compiled with gcc on x86, there are none).</p>
|
||||
|
||||
<h3>Compatibility:</h3>
|
||||
|
||||
<p>The program should compile with any C compiler, but was tested
|
||||
mostly with gcc on Linux.</p>
|
||||
|
||||
<p>It doesn’t support 64 bits (due to integer-pointer casts, and a >>31).
|
||||
It does work on 64-bit Linux, becasue all functions are below 4GB.</p>
|
||||
|
||||
<hr />
|
||||
|
||||
<!--
|
||||
(c) Copyright 1984-2012, [Leo Broukhis, Simon Cooper, Landon Curt Noll][judges] - All rights reserved
|
||||
This work is licensed under a [Creative Commons Attribution-ShareAlike 3.0 Unported License][cc].
|
||||
|
||||
[judges]: http://www.ioccc.org/judges.html
|
||||
[cc]: http://creativecommons.org/licenses/by-sa/3.0/
|
||||
-->
|
||||
|
||||
<TABLE><TR>
|
||||
<TD><a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-sa/3.0/88x31.png" /></a></TD>
|
||||
<TD><P>© Copyright 1984-2012,
|
||||
<A HREF="/judges.html">Leo Broukhis, Simon Cooper, Landon Curt Noll</A>
|
||||
- All rights reserved<BR>
|
||||
This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.</P></TD>
|
||||
<TD> <!--<a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01 Transitional" height="31" width="88"></a>--></TD>
|
||||
</TR></TABLE>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,90 @@
|
||||
# Most artistic
|
||||
|
||||
Uri Goren
|
||||
<goren.uri@gmail.com>
|
||||
|
||||
|
||||
## Judges' comments:
|
||||
### To build:
|
||||
|
||||
make goren
|
||||
|
||||
### To run:
|
||||
|
||||
echo "some text" | ./goren
|
||||
|
||||
### Try:
|
||||
|
||||
echo "Hello, world!" | ./goren
|
||||
|
||||
### Selected Judges Remarks:
|
||||
|
||||
In the words of [René François Ghislain Magritte Magritte](http://en.wikipedia.org/wiki/Rene_Magritte):
|
||||
|
||||

|
||||
|
||||
One may ask the surrealist question:
|
||||
|
||||
echo 'If | is just a representation of a pipe, then how can data stuff it?' | ./goren
|
||||
|
||||
However if one takes a firm stand and declares:
|
||||
|
||||
echo '| is just a representation of a pipe because I say so! So stuff it!' | ./goren
|
||||
|
||||
something happens! Why?
|
||||
|
||||
## Author's comments:
|
||||
This program was written in homage to Rene Magritte's picture "La
|
||||
trahison des images" (The Treachery of Images).
|
||||
|
||||
In order to show my unconditional admiration of this work, I avoided
|
||||
using conditions.
|
||||
|
||||
In this work, Magritte points out that a picture of a pipe is not
|
||||
a pipe. But what IS a pipe? This program tries to provide an answer.
|
||||
|
||||
Magritte's [test for pipes](http://en.wikipedia.org/wiki/The_Treachery_of_Images} is:
|
||||
|
||||
The famous pipe. How people reproached me for it! And yet, could
|
||||
you stuff my pipe? No, it's just a representation, is it not?
|
||||
|
||||
Accordingly, this program only approves pipes which can be used for
|
||||
stuffing data.
|
||||
|
||||
One thing I tried to achieve is condition free programming. Many
|
||||
have noted that conditions make the code harder to read and understand.
|
||||
A good example would be:
|
||||
|
||||
[Brent Burley's 2004 IOCCC winner](http://www.ioccc.org/years.html#2004_burley)
|
||||
|
||||
That entry omits conditional statements such as "if" and "while".
|
||||
His achievement in improving clarity by omitting conditions is
|
||||
impressive, but I think it can be taken further, in two ways.
|
||||
|
||||
First, conditional operators, such as ?:, && and ||, can be thrown
|
||||
away. Second, using setjmp and longjmp, which are unfortunately
|
||||
not in common use, might make it difficult for a novice programmer
|
||||
to understnad the code without referring to the man page.
|
||||
|
||||
By removing these, the code is 100% condition free, and every
|
||||
function runs its instructions in perfect order. Naturally, this
|
||||
makes the program flow trivial to understand. This can be verified
|
||||
by disassembling the compiled code and looking for conditional jumps
|
||||
(when compiled with gcc on x86, there are none).
|
||||
|
||||
### Compatibility:
|
||||
|
||||
The program should compile with any C compiler, but was tested
|
||||
mostly with gcc on Linux.
|
||||
|
||||
It doesn't support 64 bits (due to integer-pointer casts, and a >>31).
|
||||
It does work on 64-bit Linux, becasue all functions are below 4GB.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
<!--
|
||||
(c) Copyright 1984-2012, [Leo Broukhis, Simon Cooper, Landon Curt Noll][judges] - All rights reserved
|
||||
This work is licensed under a [Creative Commons Attribution-ShareAlike 3.0 Unported License][cc].
|
||||
|
||||
[judges]: http://www.ioccc.org/judges.html
|
||||
[cc]: http://creativecommons.org/licenses/by-sa/3.0/
|
||||
-->
|
||||
Reference in new issue
Block a user