say "So long and thanks for all the fish" to tmp

It is time to say "**So long and thanks for all the fish**" to the `tmp/` directory.

Now that `bin/csv2entry.sh` and `bin/entry2csv.sh` are in working well, we
no longer need any of the tools nor data files under the tmp/` directory.
At this point, the `.entry.json` files AND `author/author_handle.json`
are considered "_truth_" under this repo.

BTW: We are developing the `bin/cvt-submission.sh` tool for the IOCCC
judges to convert the contents of a submission files `.auth.json` and
`.info.json` into `.entry.json` files AND `author/author_handle.json`
file content (new or modified).   We are also planning to develop
a tool to validate an existing `.entry.json`: issuing warnings or
errors if problematic `.entry.json` data is discovered.  We also have the
[chkentry(1)](https://github.com/ioccc-src/mkiocccentry/blob/master/chkentry.c)
tool (and especially much thanks to the `jparse.a`  link library) to
validate `.auth.json` and `.info.json` files for a submission.  With the
completion of he `bin/cvt-submission.sh` tool and the  `.entry.json`
validator, as well as the `bin/csv2entry.sh` and `bin/entry2csv.sh`,
we will be able to maintain a set of coherent   `.entry.json` files.`
This commit is contained in:
Landon Curt Noll committed 2024-07-31 17:12:40 -07:00
1 parent e83cd61baf
commit 633d457d1c
61 files changed
-51157

No files matched your search

-657
View File
@@ -1,657 +0,0 @@
# tmp
The purpose of the `tmp` directory is to hold temporary files.
The files in the `tmp` directory will go away leaving behind
an empty `tmp` directory.
This documentation is here to help define terms, files under `tmp/`
and the format of those files.
*NOTE*: The `terms` section may be moved to another file
later on, after the contents
## terms
### `author`
An individual who was an `author` of at least one winning IOCCC entry.
Some authors have submitted more than one IOCCC entry that won. Some winning
IOCCC entries have more than one author.
### `author_handle`
An `author_handle` is string that refers to a given author and is unique to the
IOCCC. Each author has exactly one `author_handle`.
For each `author_handle`, there will be a JSON file of the form:
```
author/author_handle.json
```
Because the `author_handle` is used to form a JSON filename, the string must be
lower case POSIX safe string. Furthermore, the `author_handle` must be an ASCII
string that matches this regexp:
``` <!---re-->
^[0-9a-z][0-9a-z_]*$
```
Default `author_handle`'s do not have multiple consecutive `_` (underscore)
characters. Nevertheless, multiple consecutive `_` (underscore) characters are
allowed. Contest submitters who wish to override the `author_handle` may do so.
The `author_handle` is derived from the name of the author. While there is a
algorithm that maps the name of the author (which can contain any UTF-8
characters) into a default `author_handle` string, those who submit an entry to
the IOCCC are free to choose a different `author_handle` string if they so
desire.
An `author` who has won a previous IOCCC is encouraged to reuse their
`author_handle` so that new winning entries can be associated with the same
author.
For an anonymous `author`, their handle is one of these forms:
```
Anonymous_year
```
or:
```
Anonymous_year.digits
```
The latter form is in case there are more than one anonymous author in a given
year.
NOTE: even if the directory name is not `anonymous` the above rules apply as in
in the case of [2005/anon](/2005/anon/anon.c).
Anonymous `author_handle`'s match this regexp:
``` <!---re-->
Anonymous_[0-9][0-9][0-9][0-9][.0-9]*$
```
### `winner`
An IOCCC entry that won an award for given IOCCC.
A `winner` has one more more `author`s.
Each `winner` is contained under its own directory. The parent of the winner directory
is the year's directory.
While in most cases a `winner` consists of files under a `winner` directory,
there are a few cases where a `winner` directory contains subdirectories.
Use of subdirectories under a `winner` directory is discouraged and
may be limited to previous `winner`s that used them.
### `year`
A `year` is a 4 character string. Most years are 4-digit strings that
represent the year. Some special `year` strings are possible, such as _`mock`_.
Non-numeric `year` strings are lower case.
A `year` string matches this regexp:
``` <!---re-->
[0-9a-z][0-9a-z][0-9a-z][0-9a-z]
```
The `year` directories reside directly below the top level directory.
### `.year`
Each `year` will have a file directory under it named:
```
.year
```
The contents of the `.year` file is the year string of the directory. For
instance, [2020/.year](/2020/.year) has the string: `2020`.
### `dir`
A `dir` is a POSIX safe string that holds an winner.
A `dir` is a string that matches this regexp:
``` <!---re-->
^[a-z][0-9a-z.-]*$
```
Each `winner` is under its own individual directory. This directory
is directly under a `year` directory.
### `winner_id`
A string that identifies the winning entry. The string is of the form:
```
year_dir
```
### `.id`
Each `winner` directory will have a file directory under it named:
```
.id
```
The contents of `_.id_` file is the `winner_id` string for that `winner`.
* `sort_word`
A string that is used to determine the position within the `winners.html` file;
an `author` and the `winners` they submitted are to be listed.
A `sort_word` match this regexp:
``` <!---re-->
^[a-z][0-9a-z]*
```
## files
### [README.md](README.md)
This file.
### [author_names.txt](author_names.txt)
A text file of full names of each `author`: one full name per line.
In the case of anonymous authors the form is:
```
Anonymous YYYY
```
### [author_wins.csv](author_wins.csv)
A CSV (Comma Separated Values) file: one line per `author`.
The first field is an `author_handle`.
The other fields are the `winner_id`'s of all `winner`s won by the `author`.
### [author.csv](author.csv)
The [author.csv](author.csv) is a CSV file that was exported from the
[author.numbers](author.numbers) file.
In case of conflict, the data in [author.numbers](author.numbers) file is
considered authoritative over the [author.csv](author.csv) file.
The [author.csv](author.csv) is generated from the [author.numbers](author.numbers) file,
via the [macOS](https://www.apple.com/macos/)
[Numbers](https://www.apple.com/numbers/) spreadsheet app, as follows:
0. open [author.csv](author.csv) in numbers: modify if/as needed
1. File -> Export To -> CSV...
* 1a. `[ ]` Include table names (unset)
* 1b. Text Encoding: Unicode (UTF-8)
* 1c. Click ((Save..))
2. Save As: author.csv
* 2a. Select the `tmp` directory
3. Click ((Export))
* 3a. If needed click ((Replace))
4. open a terminal window
5. cd to the `tmp` directory
6. tr -d '\015' < author.csv > tmp.csv
7. echo >> tmp.csv
8. mv -f tmp.csv author.csv
### [author.numbers](author.numbers)
A [macOS](https://www.apple.com/macos) [Numbers](https://www.apple.com/numbers/)
spreadsheet contains information about `author`s: one line per `author` with the
following fields:
1. This field is `sort_word` string.
2. This field is the full name of the `author`.
3. This field is the `author_handle` of the `author`.
4. This field is the primary URL of `author` or the string `null` if none was
given.
5. This field is the email address of `author` or the string `null` if none was
given.
6. This field is the location ISO 3166 code of `author` or the string `null` is unknown.
An `author` who does not wish to specify a location ISO 3166 code is encouraged to
use the code `XX`. The location ISO 3166 code consists of two UPPER CASE ASCII letters.
7. This field is the twitter handle of the `author` or the string `null` if none
was given. This field is kept for purely historic record purposes and is
otherwise not used.
8. This field is the mastodon handle of the `author` or the string `null` if
none was given.
9. This field is the alternate URL of `author` or the string `null` if none
was given.
### [author_handle.txt](author_handle.txt)
A text file containing `author_handle`s for each `author`: one `author_handle`
per line.
### [awards_check.sh](awards_check.sh)
Script to verify that the award name for each entry as found as a level 1
markdown header in each entry's `README.md` file.
Run the script from the top level directory. The output should end in ":1".
For example, this command should not produce any output.
``` <!---sh-->
tmp/awards_check.sh | grep -v ':1$'
```
Any output is an indication that either an award name is incorrect, or the
award is not formed at a level 1 markdown header, or that more than one
award line as at a level 1 markdown header we found, or the `README.md`
file is missing, etc.
### [check_file_list.sh](check_file_list.sh)
Look for problems with file_list.required.txt, file_list.full_manifest.txt,
and file_list.found.txt files. In particular, the files found in
winning directories are compared with the list of required files
as well as the complete manifest list of files.
If all is OK, [check_file_list.sh](check_file_list.sh) exits 0 and prints
nothing. If there are missing required files, or extra files found
then [check_file_list.sh](check_file_list.sh) will exit non-zero and
print information about problems.
### [example.author.json](example.author.json)
This is a JSON file containing an example `author/author_handle.json` for a
fictitious `author`.
An `author/author_handle.json` file will be derived from the contents of the
[author.csv](author.csv) file and the [author_wins.csv](author_wins.csv) file.
### [example.dot_winner.json](example.dot_winner.json)
This is a JSON file containing an example `year/dir/.winner.json` for a
fictitious `winner`.
A `year/dir/.winner.json` file will be derived from the contents the `year/dir/.id` file,
the [author_wins.csv](author_wins.csv) file, the `year/dir/.year` file, and the
contents of the `year/dir` directory.
The 11 field names in [manifest.numbers](manifest.numbers),
[missing_manifest.numbers](missing_manifest.numbers), and
[full_manifest.numbers](full_manifest.numbers) match the JSON member
names found in [example.dot_winner.json](example.dot_winner.json).
### [file_list.full_manifest.txt](file_list.full_manifest.txt)
This is the list of file paths, both primary and constructed
files from winners.
This is the sorted combined [file_list.built.txt](file_list.built.txt)
and [file_list.required.txt](file_list.required.txt) files.
This file is formed by the [fix_numbers_csv.sh](fix_numbers_csv.sh) tool.
### [file_list.built.txt](file_list.built.txt)
A list of file paths (from the top directory) of winner directories,
that are built from other primary content files.
These paths are formed from [full_manifest.numbers](full_manifest.numbers)
entries where the "created_by" (5th) field is null. See
[manifest.numbers](manifest.numbers) for details on the fields.
This file is formed by the [fix_numbers_csv.sh](fix_numbers_csv.sh) tool.
### [file_list.required.txt](file_list.required.txt)
A list of file paths (from the top directory) of winner directories,
that are required to exist.
These paths are formed from [full_manifest.numbers](full_manifest.numbers)
entries where the "created_by" (5th) field is non-null. See
[manifest.numbers](manifest.numbers) for details on the fields.
This file is formed by the [fix_numbers_csv.sh](fix_numbers_csv.sh) tool.
### [file_list.found.txt](file_list.found.txt)
A list of files that exist, or should exist once the tools to generate certain files,
such as the `index.html`, or the `.winner.json` files for each entry, are created.
This file is created by [gen_file_list.found.sh](gen_file_list.found.sh).
### [fix_numbers_csv.sh](fix_numbers_csv.sh)
This tool will fix the [manifest.csv](manifest.csv) and [missing_manifest.csv](missing_manifest.csv)
files, removing carriage returns and appending a newline if it was missing.
This tool also creates / updates [full_manifest.csv](full_manifest.csv).
### [full_manifest.csv](full_manifest.csv)
Combined and sorted [manifest.csv](manifest.csv) and [missing_manifest.csv](missing_manifest.csv).
This file is formed by the [fix_numbers_csv.sh](fix_numbers_csv.sh) tool.
See [manifest.numbers](manifest.numbers) for information on this file format
as it has the exact same format.
In case of conflict, the data in [full_manifest.csv](full_manifest.csv) file is
considered authoritative over the [full_manifest.numbers](full_manifest.numbers) file.
### [full_manifest.numbers](full_manifest.numbers)
This file is formed by opening [manifest.csv](manifest.csv) in numbers
and saving the result as a numbers file.
In case of conflict, the data in [full_manifest.csv](full_manifest.csv) file is
considered authoritative over the [full_manifest.numbers](full_manifest.numbers) file.
**NOTE**: Due to the way that the macOS numbers program imports CSV
files, some values of false may be turned into FALSE, some values
of true may be turned into TRUE, and some values of null may be
turned into NULL. JSON does not allow UPPER case FALSE, nor TRUE,
nor NULL, so the UPPER case values of fields should be used in JSON
in their lower case form.
The 11 field names in [manifest.numbers](manifest.numbers),
[missing_manifest.numbers](missing_manifest.numbers), and
[full_manifest.numbers](full_manifest.numbers) match the JSON member
names found in [example.dot_winner.json](example.dot_winner.json).
### [gen_author_json.sh](gen_author_json.sh)
Temporary tool used to generate the `author/author_handle.json` files.
The following command, executed in this directory, created the `author/` directory:
``` <!---sh-->
rm -rf ../author ; ./gen_author_json.sh author_handle.txt author.csv author_wins.csv ../author
```
### [gen_file_list.found.sh](gen_file_list.found.sh)
The list of paths of files in winners.
After doing a `make clobber` this tool updates, if needed,
form [file_list.found.txt](file_list.found.txt).
### [manifest.numbers](manifest.numbers)
A [macOS](https://www.apple.com/macos) [Numbers](https://www.apple.com/numbers/)
spreadsheet contains information about files, that must already exist, with the
following fields:
1. year:
IOCCC year as a 4-character string. Normally this would be a 4 digit year string,
however it may also be a string such as "mock".
NOTE: If year begins with "#", then dir is a comment, and the
rest of the row is to be ignored. Rows of this form do NOT
contain manifest information for a file.
2. dir:
Directory name number the IOCCC year.
3. winners_rank:
If a number, then this is the winners rank showing the order
that this file is to be listed for the given entry's in
[winners.html](winners.html), or null if the file is not to be listed.
4. path:
Path under the IOCCC/directory. In a few cases this is a path,
not just a simple filename under the IOCCC/directory.
5. created_by:
The name of the program that creates this file, or null is the
file an original file.
NOTE: A null created_by value indicates that the file is part
of the primary content. A non-null created_by value indicates
that the contents of the file is created by given program from
primary content files.
NOTE: The created_by values for [manifest.numbers](manifest.numbers)
MUST always be null. This is because every file with primary
content (i.e., content not created by some tool) MUST be listed
in the [manifest.numbers](manifest.numbers) file and MUST NOT
listed in the [missing_manifest.numbers](missing_manifest.numbers) file.
NOTE: The created_by values for [missing_manifest.numbers](missing_manifest.numbers) '
MUST always be non-null. This is because every file that is NOT a primary
content file (i.e., content that is created by some tool) MUST
be listed in the [missing_manifest.numbers](missing_manifest.numbers)
file and MUST NOT listed in the [manifest.numbers](manifest.numbers) file.
6. prog:
This field indicates if the file main program. This filed is one of:
main The main source code to display.
alt The alternative source code.
orig The original version of the source code (may be the same as main).
null Not a primary, nor alternative, nor original source code file.
7. filetype:
The type of file.
8. ext:
This ending filename extension, or null if no extension.
This field is temporary and may go away.
9. winners_show:
A JSON boolean indicating of the file is listed on `winners.html` or not.
The winners_show value must be either true or false.
NOTE: When winners_show is false, display_via MUST be null.
10. display_via:
A string indicating how the file is to be displayed from `winners.html`.
Possible files include:
browser The file is to be displayed directly from the browser.
github The file should be linked to the GitHub repo so that
it may be rendered directly by GitHub. In the future
this may changed to allow a suitable browser to
directly display this file instead of via GitHub.
download The file is intended to be downloaded from the browser
instead of being displayed.
null This file not listed in `winners.html`.
NOTE: When display_via is null, winners_show MUST be false.
11. winners_text:
Any text that should be displayed at the end of line in `winners.html`
(with a preceding " - "), or null is no such text is to be displayed.
The 11 field names in [manifest.numbers](manifest.numbers),
[missing_manifest.numbers](missing_manifest.numbers), and
[full_manifest.numbers](full_manifest.numbers) match the JSON member
names found in [example.dot_winner.json](example.dot_winner.json).
NOTE: Cells containing null are a JSON NULLs.
NOTE: Cells containing true or false are JSON booleans.
NOTE: Empty cells are TBD and need to be filled in.
NOTE: The winners_rank cells are either JSON null or JSON numbers.
NOTE: All other cells are JSON strings that need to be double quoted, including the year.
NOTE: Do not put commas, nor quotes, nor newlines in fields as these are bound to cause problems.
In case of conflict, the data in [manifest.numbers](manifest.numbers) file is
considered authoritative over the [manifest.csv](manifest.csv) file.
### [manifest.csv](manifest.csv)
The [manifest.csv](manifest.csv) is a CSV file that was exported from the
[manifest.numbers](manifest.numbers) file.
In case of conflict, the data in [manifest.numbers](manifest.numbers) file is
considered authoritative over the [manifest.csv](manifest.csv) file.
The [manifest.csv](manifest.csv) is generated from the [manifest.numbers](manifest.numbers) file,
via the [macOS](https://www.apple.com/macos/)
[Numbers](https://www.apple.com/numbers/) spreadsheet app, as follows:
0. open [manifest.csv](manifest.csv) in numbers: modify if/as needed
1. File -> Export To -> CSV...
* 1a. `[ ]` Include table names (unset)
* 1b. Text Encoding: Unicode (UTF-8)
* 1c. Click ((Save..))
2. Save As: manifest.csv
* 2a. Select the `tmp` directory
3. Click ((Export))
* 3a. If needed click ((Replace))
4. execute ./[fix_numbers_csv.sh](fix_numbers_csv.sh)
### [missing_manifest.numbers](missing_manifest.numbers)
A [macOS](https://www.apple.com/macos) [Numbers](https://www.apple.com/numbers/)
spreadsheet contains information about files, that may not yet exist because
a tool needs to create it, with the following fields:
In case of conflict, the data in [missing_manifest.numbers](missing_manifest.numbers) file is
considered authoritative over the [missing_manifest.csv](missing_manifest.csv) file.
See [manifest.numbers](manifest.numbers) for information on this file format
as it has the exact same format.
The 11 field names in [manifest.numbers](manifest.numbers),
[missing_manifest.numbers](missing_manifest.numbers), and
[full_manifest.numbers](full_manifest.numbers) match the JSON member
names found in [example.dot_winner.json](example.dot_winner.json).
### [missing_manifest.csv](missing_manifest.csv)
The [missing_manifest.csv](missing_manifest.csv) is a CSV file that was exported from the
[missing_manifest.numbers](missing_manifest.numbers) file.
In case of conflict, the data in [missing_manifest.numbers](missing_manifest.numbers) file is
considered authoritative over the [missing_manifest.csv](missing_manifest.csv) file.
The [missing_manifest.csv](missing_manifest.csv) is generated from the [missing_manifest.numbers](missing_manifest.numbers) file,
via the [macOS](https://www.apple.com/macos/)
[Numbers](https://www.apple.com/numbers/) spreadsheet app, as follows:
0. open [missing_manifest.csv](missing_manifest.csv) in numbers: modify if/as needed
1. File -> Export To -> CSV...
* 1a. `[ ]` Include table names (unset)
* 1b. Text Encoding: Unicode (UTF-8)
* 1c. Click ((Save..))
2. Save As: missing_manifest.csv
* 2a. Select the `tmp` directory
3. Click ((Export))
* 3a. If needed click ((Replace))
4. execute ./[fix_numbers_csv.sh](fix_numbers_csv.sh)
### [sql/winners.sql](sql/winners.sql)
This is a SQL file, extracted from another SQL file that was used in the past
to generate data for the old winners directory tree.
### [winner_id.txt](winner_id.txt)
A text file containing `winner_id` strings: one `winner_id` per line.
### [year_prize.csv](year_prize.csv)
A CSV file: one line per `winner`.
The first field is a `winner_id`.
The second field is the name of the award for given `winner`.
<!--
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
-->
-197
View File
@@ -1,197 +0,0 @@
# sort_word,name,author_handle,url,email,location_code,deprecated_twitter,mastodon,alternate_url,
adamovsky,Ondřej Adamovský,Ondrej_Adamovsky,null,oa@cmail.cz,CZ,null,null,null,
algmyr,Anton Älgmyr,Anton_Algmyr,algmyr@student.chalmers.se,@aalgmyr,SE,@aalgmyr,null,null,
anderson,Derek Anderson,Derek_Anderson,null,dereka9991@gmail.com,US,null,null,null,
anderson,Glyn Anderson,Glyn_Anderson,null,glyn@mataharistudios.com,null,null,null,null,
anonymous,Anonymous 1984,Anonymous_1984,null,null,US,null,null,null,
anonymous,Anonymous 2004,Anonymous_2004,https://web.archive.org/web/20040324155828/http://bicoherent.topcities.com/,null,SG,null,null,null,
anonymous,Anonymous 2005,Anonymous_2005,null,null,null,null,null,null,
anonymous,Anonymous 2015,Anonymous_2015,null,hirekokeshi@gmail.com,JP,@hirekoke,null,null,
applegate,David Applegate,David_Applegate,http://www.caam.rice.edu/~davida,davida@caam.rice.edu,US,null,null,null,
applin,Jack Applin,Jack_Applin,https://www.cs.colostate.edu/~applin/,neutron@fc.hp.com,US,null,null,null,
arkko,Jari Arkko,Jari_Arkko,http://www.arkko.com,jari@arkko.com,null,null,null,null,
ash,Michael Ash,Michael_Ash,null,mike@mikeash.com,US,null,null,null,
augustsson,Lennart Augustsson,Lennart_Augustsson,https://web.archive.org/web/20090831055828/http://www.cs.chalmers.se/~augustss,null,null,null,null,null,
bakker,Bas de Bakker,Bas_de_Bakker,null,bas@bbwt.demon.nl,NL,null,null,null,
banks,Carl Banks,Carl_Banks,https://blog.aerojockey.com/post/iocccsim,web39@aerojockey.com,null,null,null,null,
barraclough,Gavin Barraclough,Gavin_Barraclough,null,gavin@barraclough.name,null,null,null,null,
barrett,Sean Barrett,Sean_Barrett,http://world.std.com/~buzzard,buzzard@world.std.com,null,null,null,null,
beardsley,Doug Beardsley,Doug_Beardsley,null,dgbeards@southern.edu,US,null,null,null,
bellard,Fabrice Bellard,Fabrice_Bellard,https://bellard.org/,fabrice@bellard.org,FR,null,null,null,
berkenbilt,E. Jay Berkenbilt,E_Jay_Berkenbilt,null,null,null,null,null,null,
bernstein,Daniel J. Bernstein,Daniel_J_Bernstein,http://pobox.com/~djb/djb.html,djb@pobox.com,null,null,null,null,
biggar,Mark Biggar,Mark_Biggar,null,mark@biggar.org,null,null,null,null,
birken,Michael Birken,Michael_Birken,http://www.meatfighter.com/,null,US,null,null,null,
black,Paul E. Black,Paul_E_Black,http://hissa.ncsl.nist.gov/~black/black.html,p.black@acm.org,null,null,null,null,
blakely,Philip Blakely,Philip_Blakely,null,pmblakely@gmail.com,GB,null,null,null,
bonfield,James Bonfield,James_Bonfield,null,jkb@mrc-lmb.cam.ac.uk,GB,null,null,null,
borsanyi,Szabolcs Borsanyi,Szabolcs_Borsanyi,null,borsanyi@uni-wuppertal.de,DE,null,null,null,
boutines,Francois Boutines,Francois_Boutines,null,francois.boutines@gmail.com,FR,null,null,null,
brackle,David Van Brackle,David_Van_Brackle,http://east.isx.com/~vanb/,vanb@east.isx.com,null,null,null,null,
briddlebane,Moxen N. Briddlebane,Moxen_N_Briddlebane,null,moxen@gateway.net,null,null,null,null,
bright,Walter Bright,Walter_Bright,http://www.walterbright.com/,emperor@classicempire.com,null,null,null,null,
broukhis,Leonid A. Broukhis,Leonid_A_Broukhis,http://www.mailcom.com/leob,leob@mailcom.com,US,null,null,null,
bsoup,bsoup,Bsoup,null,mail@bsoup.skr.jp,JP,null,null,null,
burchall,Laurion Burchall,Laurion_Burchall,http://www.netspace.org/users/ldb,ldb@netspace.org,null,null,null,null,
burley,Brent Burley,Brent_Burley,null,brent.burley@disney.com,US,null,null,null,
burton,Dave Burton,Dave_Burton,http://snox.net/ioccc,daveb@snox.net,US,@lv2jmp,null,null,
buttimore,Gavin Buttimore,Gavin_Buttimore,null,gavin.buttimore@creaturelabs.com,null,null,null,null,
cable,Adrian Cable,Adrian_Cable,null,null,US,null,null,null,
carlini,Nicholas Carlini,Nicholas_Carlini,https://nicholas.carlini.com,nicholas@carlini.com,US,null,null,null,
cheong,Raymond Cheong,Raymond_Cheong,http://www.raymondcheong.com/index.html,rcheong@jhu.edu,US,null,null,null,
chia,V. Chia,V_Chia,null,bi@mncw.tk,SG,null,null,null,
ciura,Marcin Ciura,Marcin_Ciura,null,mciura@gmail.com,PL,@mciura,null,null,
collier,Ian Collier,Ian_Collier,http://www.comlab.ox.ac.uk/oucl/users/ian.collier/,imc@comlab.ox.ac.uk,GB,null,null,null,
coupard,Pierre-Philippe Coupard,Pierre-Philippe_Coupard,null,pierre@lineo.com,null,null,null,null,
dalbec,John Dalbec,John_Dalbec,https://jpdalbec.people.ysu.edu,jdalbec@cboss.com,null,null,null,null,
dale,Paul Dale,Paul_Dale,http://www.jcu.edu.au/~ccptd/,null,null,null,null,null,
deak,Ferenc Deak,Ferenc_Deak,null,null,null,null,null,null,
deckmyn,Alex Deckmyn,Alex_Deckmyn,null,alex.deckmyn@gmail.com,BE,null,null,null,
decot,Dave Decot,Dave_Decot,null,null,null,null,null,null,
deorowicz,Sebastian Deorowicz,Sebastian_Deorowicz,http://sun.aei.polsl.pl/~sdeor/,sdeorowicz@gmail.com,null,null,null,null,
diels-grabsch,Volker Diels-Grabsch,Volker_Diels-Grabsch,https://njh.eu,v@njh.eu,DE,null,null,null,
dodson,Don Dodson,Don_Dodson,http://www.neta.com/~dodson/,null,US,null,null,null,
dogon,Gil Dogon,Gil_Dogon,null,gil.jade@gmail.com,IL,null,null,null,
dorsselaer,Frans van Dorsselaer,Frans_van_Dorsselaer,null,frans@biabv.com,null,null,null,null,
dorward,Sean Dorward,Sean_Dorward,null,null,null,null,null,null,
downs,Heather Downs,Heather_Downs,http://www.bungalow.com/,heather@bungalow.com,null,null,null,null,
duarte,Carlos Duarte,Carlos_Duarte,null,null,null,null,null,null,
duble,Etienne Duble,Etienne_Duble,https://lig-membres.imag.fr/duble,etienne.duble@gmail.com,FR,@etienne_duble,null,null,
dupont,Christian Dupont,Christian_Dupont,null,christian.dupont@lemel.fr,FR,null,null,null,
eastman,Peter Eastman,Peter_Eastman,null,peter.eastman@gmail.com,US,null,null,null,
eggert,Paul Eggert,Paul_Eggert,null,eggert@twinsun.com,null,null,null,null,
eldby,Thor Eldby,Thor_Eldby,null,null,null,null,null,null,
endoh,Yusuke Endoh,Yusuke_Endoh,null,mame@ruby-lang.org,JP,null,@mame@ruby.social,null,
ferguson,Cody Boone Ferguson,Cody_Boone_Ferguson,https://xexyl.net,ioccc@xexyl.net,US,null,@xexyl@fosstodon.org,https://ioccc.xexyl.net,
finch,Tony Finch,Tony_Finch,http://dotat.at/,dot@dotat.at,null,null,null,null,
fine,Thomas A. Fine,Thomas_A_Fine,http://hea-www.harvard.edu/~fine/,fine@head-cfa.harvard.edu,US,null,null,null,
fischer,Daniel Fischer,Daniel_Fischer,null,df@freudenstadt.net,null,null,null,null,
fox,Karl F. Fox,Karl_F_Fox,null,karl@ascend.com,null,null,null,null,
fredriksson,Kimmo Fredriksson,Kimmo_Fredriksson,null,kimmo.k.k.fredriksson@gmail.com,FI,null,null,null,
frogley,Thaddaeus Frogley,Thaddaeus_Frogley,http://thad.notagoth.org/,codemonkey_uk@hotmail.com,null,null,null,null,
gavare,Anders Gavare,Anders_Gavare,https://gavare.se,gavare@gmail.com,SE,null,null,null,
gibson,David Gibson,David_Gibson,null,null,null,null,null,null,
giles,Edward Giles,Edward_Giles,https://id523a.com/,edward@giles.net.au,AU,null,null,null,
glendown,Garry Glendown,Garry_Glendown,https://web.archive.org/web/20011221120305/http://insider.regio.net/~garry/,garry@insider.regio.net,null,null,null,null,
goodenough,David Goodenough,David_Goodenough,null,null,null,null,null,null,
goren,Uri Goren,Uri_Goren,null,goren.uri@gmail.com,IL,null,null,null,
grothe,Aaron Grothe,Aaron_Grothe,null,ajgrothe@yahoo.com,US,null,null,null,
gustafsson,Andreas Gustafsson,Andreas_Gustafsson,http://www.araneus.fi/gson/,gson@araneus.fi,FI,null,null,null,
hague,Jim Hague,Jim_Hague,http://www.oxinet.co.uk/jim,jim.hague@acm.org,GB,null,null,null,
hamaji,Shinichiro Hamaji,Shinichiro_Hamaji,null,shinichiro.hamaji@gmail.com,JP,null,null,null,
hamano,Tsukasa Hamano,Tsukasa_Hamano,null,hamano@cuspy.org,JP,null,null,null,
hamre,Steinar Hamre,Steinar_Hamre,null,null,NO,null,null,null,
heckbert,Paul Heckbert,Paul_Heckbert,http://www.cs.cmu.edu/~ph,ph@cs.cmu.edu,US,null,null,null,
heckendorn,Robert Heckendorn,Robert_Heckendorn,http://www.cs.colostate.edu/~heckendo/main.html,null,null,null,null,null,
heizmann,Arne Timwi Heizmann,Arne_Heizmann,null,timwi@gmx.net,DE,null,null,null,
hemmer,Stig Hemmer,Stig_Hemmer,http://www.pvv.ntnu.no/~stig/,stig@pvv.ntnu.no,NO,null,null,null,
herrmann,Immanuel Herrmann,Immanuel_Herrmann,https://web.archive.org/web/20071018081145/http://pcpool.mathematik.uni-freiburg.de/~immi/,null,null,null,null,null,
hines,Spencer Hines,Spencer_Hines,null,null,null,null,null,null,
holloway,Bruce Holloway,Bruce_Holloway,null,null,US,null,null,null,
holopainen,Jyrki Holopainen,Jyrki_Holopainen,https://web.archive.org/web/20061205082106/http://personal.eunet.fi/pp/halo/,jyrki.holopainen@paetronics.fi,FI,null,null,null,
horst,Albert van der Horst,Albert_van_der_Horst,http://home.hccnet.nl/a.w.m.van.der.horst,albert@spenarnc.xs4all.nl,NL,null,null,null,
horton,Mary Ann Horton,Mary_Ann_Horton,https://maryannhorton.com,null,US,null,null,null,
hou,Qiming HOU,Qiming_HOU,null,hqm03ster@gmail.com,CN,null,null,null,
howe,Anthony C. Howe,Anthony_C_Howe,http://www.snert.com/,achowe@snert.com,CA,@SirWumpus,null,null,
hoyle,Jonathan Hoyle,Jonathan_Hoyle,http://www.jonhoyle.com,jonhoyle@mac.com,null,null,null,null,
huffman,Ken Huffman,Ken_Huffman,http://www.huffmancoding.com,huffmancoding@gmail.com,null,null,null,null,
isaak,Mark Isaak,Mark_Isaak,null,null,null,null,null,null,
john,Thomas P John,Thomas_P_John,https://web.archive.org/web/20010720192926/http://tomx.tripod.com/,thomaspjohn@hotmail.com,null,null,null,null,
johnson,Nick Johnson,Nick_Johnson,https://web.archive.org/web/20051030162356/http://www.notdot.net/,null,NZ,null,null,null,
jones,Larry Jones,Larry_Jones,null,lawrence.jones@siemens.com,null,null,null,null,
kang,Seonghoon Kang,Seonghoon_Kang,http://mearie.org,kang.seonghoon@mearie.org,KR,null,null,null,
karns,Joshua Karns,Joshua_Karns,null,jkarns275@gmail.com,US,@jkarnss,null,null,
king,Chris King,Chris_King,null,ctk314@yahoo.com,null,null,null,null,
kivinen,Tero Kivinen,Tero_Kivinen,http://www.iki.fi/kivinen/,kivinen@iki.fi,FI,null,null,null,
klausler,Peter Klausler,Peter_Klausler,null,pmk@cray.com,US,null,null,null,
konno,Taketo Konno,Taketo_Konno,null,inaniwa3@gmail.com,JP,null,null,null,
kopczynski,Eryk Kopczynski,Eryk_Kopczynski,http://www.mimuw.edu.pl/~erykk/,ek189185@zodiac.mimuw.edu.pl,PL,null,null,null,
korn,David Korn,David_Korn,http://www.kornshell.com/~dgk/,dgk@research.att.com,US,null,null,null,
kurdyukov,Ilya Kurdyukov,Ilya_Kurdyukov,https://github.com/ilyakurdyukov,olme8@mail.ru,RU,@ilyakurdyukov,null,null,
laman,Mike Laman,Mike_Laman,null,mlaman@home.com,null,null,null,null,
lassila,Ora Lassila,Ora_Lassila,http://www.lassila.org/,ora.lassila@nokia.com,null,null,null,null,
lauha,Jetro Lauha,Jetro_Lauha,http://jet.ro,null,FI,null,null,null,
lievaart,Roemer B. Lievaart,Roemer_B_Lievaart,http://huizen.dds.nl/~lievaart,roemer.lievaart@xs4all.nl,NL,null,null,null,
litmaath,Maarten Litmaath,Maarten_Litmaath,null,litmaath@cern.ch,CH,null,null,null,
lowe,J. David Lowe,J_David_Lowe,https://github.com/dlowe,j.david.lowe@gmail.com,US,null,null,null,
luehe,Oskar von der Luehe,Oskar_von_der_Luehe,null,null,null,null,null,null,
luke,Ed Luke,Ed_Luke,http://www.erc.msstate.edu/~lush,lush@erc.msstate.edu,null,null,null,null,
lycklama,Ed Lycklama,Ed_Lycklama,http://www.klg.com,eal@klg.com,null,null,null,null,
lynn,Ben Lynn,Ben_Lynn,https://crypto.stanford.edu/~blynn/,benlynn@gmail.com,US,@bmxlynn,null,null,
madore,David Madore,David_Madore,http://www.madore.org/~david/,david+alexander@madore.org,FR,null,null,null,
maffiodo,Sandro Maffiodo,Sandro_Maffiodo,http://www.assezeta.com/sandromaffiodo,null,IT,null,null,null,
makarios,Selene Makarios,Selene_Makarios,http://www.bungalow.com/,null,null,null,null,null,
marangoni,Andrea Marangoni,Andrea_Marangoni,http://www.andreamarangoni.it,andrea@andreamarangoni.it,IT,null,null,null,
mariano,Adrian Mariano,Adrian_Mariano,http://cam.cornell.edu/adrian/,adrian@cam.cornell.edu,US,null,null,null,
marshall,Eric Marshall,Eric_Marshall,null,eric@EMIEng.com,US,null,null,null,
mcfarland,Ron McFarland,Ron_McFarland,null,rcm@one.net,null,null,null,null,
meyer,Bernd Meyer,Bernd_Meyer,https://web.archive.org/web/20030212213342/http://byron.csse.monash.edu.au/realindex.html,bmeyer@cs.monash.edu.au,AU,null,null,null,
meyer,Raphael Meyer,Raphael_Meyer,null,null,US,null,null,null,
mills,Christopher Mills,Christopher_Mills,null,mrxo@sonic.net,US,@MisterXopher,null,null,
mix,Neil Mix,Neil_Mix,null,null,null,null,null,null,
monge,Maurizio Monge,Maurizio_Monge,null,maurizio.monge@gmail.com,IT,null,null,null,
morgan,Yves-Marie Morgan,Yves-Marie_Morgan,null,null,FR,null,null,null,
mullender,Sjoerd Mullender,Sjoerd_Mullender,https://github.com/sjoerdmullender,Sjoerd.Mullender@cwi.nl,NL,null,null,null,
muth,Dominik Muth,Dominik_Muth,null,dominik.muth@gmx.de,DE,null,null,null,
newbern,Jeff Newbern,Jeff_Newbern,null,jnewbern@yahoo.com,null,null,null,null,
night,Christopher Night,Christopher_Night,https://web.archive.org/web/20090415070532/https://www.people.fas.harvard.edu/~night/,null,US,null,null,null,
nissenbaum,Baruch Nissenbaum,Baruch_Nissenbaum,null,baruch@eng.tau.ac.il,IL,null,null,null,
nuutila,Esko Nuutila,Esko_Nuutila,http://www.cs.hut.fi/~enu/,enu@cs.hut.fi,FI,null,null,null,
ollinger,Nicolas Ollinger,Nicolas_Ollinger,https://www.univ-orleans.fr/lifo/Members/Nicolas.Ollinger/,nicolas.ollinger@univ-orleans.fr,FR,null,null,null,
orendorff,Jason Orendorff,Jason_Orendorff,http://jorendorff.blogspot.com,jason@jorendorff.com,US,null,null,null,
osovlanski,Doron Osovlanski,Doron_Osovlanski,http://www.cadtech.co.il/profile.html,null,null,null,null,null,
otterness,Nathan Otterness,Nathan_Otterness,https://github.com/yalue,supersasquatch@gmail.com,US,null,null,null,
pawka,Michael H. Pawka,Michael_H_Pawka,http://niceup.com,mikey@niceup.com,null,null,null,null,
paxson,Vern Paxson,Vern_Paxson,null,vern@ee.lbl.gov,US,null,null,null,
persano,Mauro Persano,Mauro_Persano,null,mauro_persano@yahoo.com,BR,null,null,null,
phillipps,Ian Phillipps,Ian_Phillipps,null,ian@dial.pipex.com,null,null,null,null,
plummer,Mark Plummer,Mark_Plummer,http://www.nrgnet.com/markus,markus@nrgnet.com,null,null,null,null,
poikola,Timo Poikola,Timo_Poikola,https://ig.fi/other/ioccc,timo@ig.fi,FI,@timpoiko,null,null,
prishchepov,Alexander Prishchepov,Alexander_Prishchepov,https://github.com/sans17/,student.00x@gmail.com,US,null,null,null,
pulo,Kevin Pulo,Kevin_Pulo,//www.kev.pulo.com.au/,kev@pulo.com.au,AU,null,@devkev@fosstodon.org,null,
rakitzis,Byron Rakitzis,Byron_Rakitzis,null,null,null,null,null,null,
rantanen,Teemu Rantanen,Teemu_Rantanen,http://www.cs.hut.fi/~tvr/,tvr@cs.hut.fi,FI,null,null,null,
reddy,Gopi Reddy,Gopi_Reddy,null,null,null,null,null,null,
renesse,Robbert van Renesse,Robbert_van_Renesse,http://www.cs.cornell.edu/home/rvr,rvr@cs.cornell.edu,US,null,null,null,
richards,Gregor Richards,Gregor_Richards,null,Richards@codu.org,US,null,null,null,
robison,Arch D. Robison,Arch_D_Robison,null,null,US,null,null,null,
rosten,Edward Rosten,Edward_Rosten,https://www.edwardrosten.com,ed@edwardrosten.com,null,null,null,null,
ruczynski,Peter J Ruczynski,Peter_J_Ruczynski,http://www.softbase.co.uk/,pete@softbase.demon.co.uk,GB,null,null,null,
rusinkiewicz,Szymon Rusinkiewicz,Szymon_Rusinkiewicz,http://www-leland.stanford.edu/~smr,smr@cs.stanford.edu,US,null,null,null,
savastio,Michael Savastio,Michael_Savastio,http://www.geocities.com/SouthBeach/Marina/5775,null,null,null,null,null,
schneiderwent,Craig Schneiderwent,Craig_Schneiderwent,null,evilgenius@attglobal.net,null,null,null,null,
schnitzius,Mark Schnitzius,Mark_Schnitzius,null,schnitzi@gmail.com,null,null,null,null,
schweikhardt,Jens Schweikhardt,Jens_Schweikhardt,http://www.schweikhardt.net,schweikh@schweikhardt.net,DE,null,null,null,
shapiro,Andrew T. Shapiro,Andrew_Shapiro,null,null,null,null,null,null,
shapiro,Carl Shapiro,Carl_Shapiro,null,carl@lasvegassun.com,null,null,null,null,
shin,NATORI Shin,NATORI_Shin,null,natori@is.s.u-tokyo.ac.jp,JP,null,null,null,
sicherman,Col. G. L. Sicherman,Col_G_L_Sicherman,http://www.monmouth.com/~colonel/,colonel@monmouth.com,null,null,null,null,
sidwell,Nathan Sidwell,Nathan_Sidwell,http://www.cs.bris.ac.uk/~nathan/,nathan@cs.bris.ac.uk,GB,null,null,null,
skeggs,Cel Skeggs,Cel_Skeggs,http://www.celskeggs.com,celskeggs@gmail.com,null,null,null,null,
sloane,Andy Sloane,Andy_Sloane,null,null,US,null,null,null,
smet,Alan De Smet,Alan_De_Smet,http://www.highprogrammer.com/alan,null,null,null,null,null,
spinellis,Diomidis Spinellis,Diomidis_Spinellis,http://www.spinellis.gr,dds@aueb.gr,GR,null,@DSpinellis@mstdn.social,null,
stein,Jan Stein,Jan_Stein,null,null,null,null,null,null,
stewart,Thomas Stewart,Thomas_Stewart,null,null,US,null,null,null,
swift,Dean Swift,Dean_Swift,null,null,null,null,null,null,
sykes,Stephen Sykes,Stephen_Sykes,https://web.archive.org/web/20160316092728/http://www.stephensykes.com/,null,FI,null,null,null,
thingvold,Jon Thingvold,Jon_Thingvold,null,jon.thingvold@usit.uio.no,NO,null,null,null,
thornton,Aidan Thornton,Aidan_Thornton,null,makomk@lycos.co.uk,GB,null,null,null,
toledo,Oscar Toledo G.,Oscar_Toledo,https://nanochess.org/,null,MX,null,null,null,
torfs,Tom Torfs,Tom_Torfs,https://web.archive.org/web/20010520021948/http://members.nbci.com/tomtorfs/,null,null,null,null,null,
tromp,John Tromp,John_Tromp,http://tromp.github.io/,john.tromp@gmail.com,US,null,null,null,
tsoj,tsoj,Tsoj,https://gitlab.com/tsoj,tsoj.tsoj@gmx.de,DE,null,null,null,
vik,Daniel Vik,Daniel_Vik,https://www.vik.cc,daniel@vik.cc,US,null,null,null,
vokes,Scott Vokes,Scott_Vokes,null,vokes.s@gmail.com,US,@silentbicycle,null,null,
vosburgh,Jay Vosburgh,Jay_Vosburgh,null,fubar@sequent.com,US,null,null,null,
wall,Larry Wall,Larry_Wall,http://www.wall.org/~larry/,larry@wall.org,US,null,null,null,
weaver,Vincent Weaver,Vincent_Weaver,http://www.deater.net/weave/,vince@deater.net,US,null,null,null,
weisberg,Jeff Weisberg,Jeff_Weisberg,http://www.op.net/~jaw,jaw@op.net,null,null,null,null,
westley,Brian Westley,Brian_Westley,http://www.westley.org,brian@westley.org,US,null,null,null,
wiedijk,Freek Wiedijk,Freek_Wiedijk,null,null,NL,null,null,null,
williams,John Williams,John_Williams,null,williams@morinda.com,null,null,null,null,
woods,James A. Woods,James_A_Woods,null,null,null,null,null,null,
yang,Don Yang,Don_Yang,http://uguu.org/,omoikane@uguu.org,US,null,null,null,
zarbon,Lord Zarbon,Lord_Zarbon,null,null,null,null,null,null,
zeitak,Adar Zeitak,Adar_Zeitak,null,aa4z2@walla.co.il,IL,null,null,null,
zucker,Matt Zucker,Matt_Zucker,https://mzucker.github.io/swarthmore/,mzucker1@swarthmore.edu,US,null,null,null,
1 # sort_word name author_handle url email location_code deprecated_twitter mastodon alternate_url
2 adamovsky Ondřej Adamovský Ondrej_Adamovsky null oa@cmail.cz CZ null null null
3 algmyr Anton Älgmyr Anton_Algmyr algmyr@student.chalmers.se @aalgmyr SE @aalgmyr null null
4 anderson Derek Anderson Derek_Anderson null dereka9991@gmail.com US null null null
5 anderson Glyn Anderson Glyn_Anderson null glyn@mataharistudios.com null null null null
6 anonymous Anonymous 1984 Anonymous_1984 null null US null null null
7 anonymous Anonymous 2004 Anonymous_2004 https://web.archive.org/web/20040324155828/http://bicoherent.topcities.com/ null SG null null null
8 anonymous Anonymous 2005 Anonymous_2005 null null null null null null
9 anonymous Anonymous 2015 Anonymous_2015 null hirekokeshi@gmail.com JP @hirekoke null null
10 applegate David Applegate David_Applegate http://www.caam.rice.edu/~davida davida@caam.rice.edu US null null null
11 applin Jack Applin Jack_Applin https://www.cs.colostate.edu/~applin/ neutron@fc.hp.com US null null null
12 arkko Jari Arkko Jari_Arkko http://www.arkko.com jari@arkko.com null null null null
13 ash Michael Ash Michael_Ash null mike@mikeash.com US null null null
14 augustsson Lennart Augustsson Lennart_Augustsson https://web.archive.org/web/20090831055828/http://www.cs.chalmers.se/~augustss null null null null null
15 bakker Bas de Bakker Bas_de_Bakker null bas@bbwt.demon.nl NL null null null
16 banks Carl Banks Carl_Banks https://blog.aerojockey.com/post/iocccsim web39@aerojockey.com null null null null
17 barraclough Gavin Barraclough Gavin_Barraclough null gavin@barraclough.name null null null null
18 barrett Sean Barrett Sean_Barrett http://world.std.com/~buzzard buzzard@world.std.com null null null null
19 beardsley Doug Beardsley Doug_Beardsley null dgbeards@southern.edu US null null null
20 bellard Fabrice Bellard Fabrice_Bellard https://bellard.org/ fabrice@bellard.org FR null null null
21 berkenbilt E. Jay Berkenbilt E_Jay_Berkenbilt null null null null null null
22 bernstein Daniel J. Bernstein Daniel_J_Bernstein http://pobox.com/~djb/djb.html djb@pobox.com null null null null
23 biggar Mark Biggar Mark_Biggar null mark@biggar.org null null null null
24 birken Michael Birken Michael_Birken http://www.meatfighter.com/ null US null null null
25 black Paul E. Black Paul_E_Black http://hissa.ncsl.nist.gov/~black/black.html p.black@acm.org null null null null
26 blakely Philip Blakely Philip_Blakely null pmblakely@gmail.com GB null null null
27 bonfield James Bonfield James_Bonfield null jkb@mrc-lmb.cam.ac.uk GB null null null
28 borsanyi Szabolcs Borsanyi Szabolcs_Borsanyi null borsanyi@uni-wuppertal.de DE null null null
29 boutines Francois Boutines Francois_Boutines null francois.boutines@gmail.com FR null null null
30 brackle David Van Brackle David_Van_Brackle http://east.isx.com/~vanb/ vanb@east.isx.com null null null null
31 briddlebane Moxen N. Briddlebane Moxen_N_Briddlebane null moxen@gateway.net null null null null
32 bright Walter Bright Walter_Bright http://www.walterbright.com/ emperor@classicempire.com null null null null
33 broukhis Leonid A. Broukhis Leonid_A_Broukhis http://www.mailcom.com/leob leob@mailcom.com US null null null
34 bsoup bsoup Bsoup null mail@bsoup.skr.jp JP null null null
35 burchall Laurion Burchall Laurion_Burchall http://www.netspace.org/users/ldb ldb@netspace.org null null null null
36 burley Brent Burley Brent_Burley null brent.burley@disney.com US null null null
37 burton Dave Burton Dave_Burton http://snox.net/ioccc daveb@snox.net US @lv2jmp null null
38 buttimore Gavin Buttimore Gavin_Buttimore null gavin.buttimore@creaturelabs.com null null null null
39 cable Adrian Cable Adrian_Cable null null US null null null
40 carlini Nicholas Carlini Nicholas_Carlini https://nicholas.carlini.com nicholas@carlini.com US null null null
41 cheong Raymond Cheong Raymond_Cheong http://www.raymondcheong.com/index.html rcheong@jhu.edu US null null null
42 chia V. Chia V_Chia null bi@mncw.tk SG null null null
43 ciura Marcin Ciura Marcin_Ciura null mciura@gmail.com PL @mciura null null
44 collier Ian Collier Ian_Collier http://www.comlab.ox.ac.uk/oucl/users/ian.collier/ imc@comlab.ox.ac.uk GB null null null
45 coupard Pierre-Philippe Coupard Pierre-Philippe_Coupard null pierre@lineo.com null null null null
46 dalbec John Dalbec John_Dalbec https://jpdalbec.people.ysu.edu jdalbec@cboss.com null null null null
47 dale Paul Dale Paul_Dale http://www.jcu.edu.au/~ccptd/ null null null null null
48 deak Ferenc Deak Ferenc_Deak null null null null null null
49 deckmyn Alex Deckmyn Alex_Deckmyn null alex.deckmyn@gmail.com BE null null null
50 decot Dave Decot Dave_Decot null null null null null null
51 deorowicz Sebastian Deorowicz Sebastian_Deorowicz http://sun.aei.polsl.pl/~sdeor/ sdeorowicz@gmail.com null null null null
52 diels-grabsch Volker Diels-Grabsch Volker_Diels-Grabsch https://njh.eu v@njh.eu DE null null null
53 dodson Don Dodson Don_Dodson http://www.neta.com/~dodson/ null US null null null
54 dogon Gil Dogon Gil_Dogon null gil.jade@gmail.com IL null null null
55 dorsselaer Frans van Dorsselaer Frans_van_Dorsselaer null frans@biabv.com null null null null
56 dorward Sean Dorward Sean_Dorward null null null null null null
57 downs Heather Downs Heather_Downs http://www.bungalow.com/ heather@bungalow.com null null null null
58 duarte Carlos Duarte Carlos_Duarte null null null null null null
59 duble Etienne Duble Etienne_Duble https://lig-membres.imag.fr/duble etienne.duble@gmail.com FR @etienne_duble null null
60 dupont Christian Dupont Christian_Dupont null christian.dupont@lemel.fr FR null null null
61 eastman Peter Eastman Peter_Eastman null peter.eastman@gmail.com US null null null
62 eggert Paul Eggert Paul_Eggert null eggert@twinsun.com null null null null
63 eldby Thor Eldby Thor_Eldby null null null null null null
64 endoh Yusuke Endoh Yusuke_Endoh null mame@ruby-lang.org JP null @mame@ruby.social null
65 ferguson Cody Boone Ferguson Cody_Boone_Ferguson https://xexyl.net ioccc@xexyl.net US null @xexyl@fosstodon.org https://ioccc.xexyl.net
66 finch Tony Finch Tony_Finch http://dotat.at/ dot@dotat.at null null null null
67 fine Thomas A. Fine Thomas_A_Fine http://hea-www.harvard.edu/~fine/ fine@head-cfa.harvard.edu US null null null
68 fischer Daniel Fischer Daniel_Fischer null df@freudenstadt.net null null null null
69 fox Karl F. Fox Karl_F_Fox null karl@ascend.com null null null null
70 fredriksson Kimmo Fredriksson Kimmo_Fredriksson null kimmo.k.k.fredriksson@gmail.com FI null null null
71 frogley Thaddaeus Frogley Thaddaeus_Frogley http://thad.notagoth.org/ codemonkey_uk@hotmail.com null null null null
72 gavare Anders Gavare Anders_Gavare https://gavare.se gavare@gmail.com SE null null null
73 gibson David Gibson David_Gibson null null null null null null
74 giles Edward Giles Edward_Giles https://id523a.com/ edward@giles.net.au AU null null null
75 glendown Garry Glendown Garry_Glendown https://web.archive.org/web/20011221120305/http://insider.regio.net/~garry/ garry@insider.regio.net null null null null
76 goodenough David Goodenough David_Goodenough null null null null null null
77 goren Uri Goren Uri_Goren null goren.uri@gmail.com IL null null null
78 grothe Aaron Grothe Aaron_Grothe null ajgrothe@yahoo.com US null null null
79 gustafsson Andreas Gustafsson Andreas_Gustafsson http://www.araneus.fi/gson/ gson@araneus.fi FI null null null
80 hague Jim Hague Jim_Hague http://www.oxinet.co.uk/jim jim.hague@acm.org GB null null null
81 hamaji Shinichiro Hamaji Shinichiro_Hamaji null shinichiro.hamaji@gmail.com JP null null null
82 hamano Tsukasa Hamano Tsukasa_Hamano null hamano@cuspy.org JP null null null
83 hamre Steinar Hamre Steinar_Hamre null null NO null null null
84 heckbert Paul Heckbert Paul_Heckbert http://www.cs.cmu.edu/~ph ph@cs.cmu.edu US null null null
85 heckendorn Robert Heckendorn Robert_Heckendorn http://www.cs.colostate.edu/~heckendo/main.html null null null null null
86 heizmann Arne Timwi Heizmann Arne_Heizmann null timwi@gmx.net DE null null null
87 hemmer Stig Hemmer Stig_Hemmer http://www.pvv.ntnu.no/~stig/ stig@pvv.ntnu.no NO null null null
88 herrmann Immanuel Herrmann Immanuel_Herrmann https://web.archive.org/web/20071018081145/http://pcpool.mathematik.uni-freiburg.de/~immi/ null null null null null
89 hines Spencer Hines Spencer_Hines null null null null null null
90 holloway Bruce Holloway Bruce_Holloway null null US null null null
91 holopainen Jyrki Holopainen Jyrki_Holopainen https://web.archive.org/web/20061205082106/http://personal.eunet.fi/pp/halo/ jyrki.holopainen@paetronics.fi FI null null null
92 horst Albert van der Horst Albert_van_der_Horst http://home.hccnet.nl/a.w.m.van.der.horst albert@spenarnc.xs4all.nl NL null null null
93 horton Mary Ann Horton Mary_Ann_Horton https://maryannhorton.com null US null null null
94 hou Qiming HOU Qiming_HOU null hqm03ster@gmail.com CN null null null
95 howe Anthony C. Howe Anthony_C_Howe http://www.snert.com/ achowe@snert.com CA @SirWumpus null null
96 hoyle Jonathan Hoyle Jonathan_Hoyle http://www.jonhoyle.com jonhoyle@mac.com null null null null
97 huffman Ken Huffman Ken_Huffman http://www.huffmancoding.com huffmancoding@gmail.com null null null null
98 isaak Mark Isaak Mark_Isaak null null null null null null
99 john Thomas P John Thomas_P_John https://web.archive.org/web/20010720192926/http://tomx.tripod.com/ thomaspjohn@hotmail.com null null null null
100 johnson Nick Johnson Nick_Johnson https://web.archive.org/web/20051030162356/http://www.notdot.net/ null NZ null null null
101 jones Larry Jones Larry_Jones null lawrence.jones@siemens.com null null null null
102 kang Seonghoon Kang Seonghoon_Kang http://mearie.org kang.seonghoon@mearie.org KR null null null
103 karns Joshua Karns Joshua_Karns null jkarns275@gmail.com US @jkarnss null null
104 king Chris King Chris_King null ctk314@yahoo.com null null null null
105 kivinen Tero Kivinen Tero_Kivinen http://www.iki.fi/kivinen/ kivinen@iki.fi FI null null null
106 klausler Peter Klausler Peter_Klausler null pmk@cray.com US null null null
107 konno Taketo Konno Taketo_Konno null inaniwa3@gmail.com JP null null null
108 kopczynski Eryk Kopczynski Eryk_Kopczynski http://www.mimuw.edu.pl/~erykk/ ek189185@zodiac.mimuw.edu.pl PL null null null
109 korn David Korn David_Korn http://www.kornshell.com/~dgk/ dgk@research.att.com US null null null
110 kurdyukov Ilya Kurdyukov Ilya_Kurdyukov https://github.com/ilyakurdyukov olme8@mail.ru RU @ilyakurdyukov null null
111 laman Mike Laman Mike_Laman null mlaman@home.com null null null null
112 lassila Ora Lassila Ora_Lassila http://www.lassila.org/ ora.lassila@nokia.com null null null null
113 lauha Jetro Lauha Jetro_Lauha http://jet.ro null FI null null null
114 lievaart Roemer B. Lievaart Roemer_B_Lievaart http://huizen.dds.nl/~lievaart roemer.lievaart@xs4all.nl NL null null null
115 litmaath Maarten Litmaath Maarten_Litmaath null litmaath@cern.ch CH null null null
116 lowe J. David Lowe J_David_Lowe https://github.com/dlowe j.david.lowe@gmail.com US null null null
117 luehe Oskar von der Luehe Oskar_von_der_Luehe null null null null null null
118 luke Ed Luke Ed_Luke http://www.erc.msstate.edu/~lush lush@erc.msstate.edu null null null null
119 lycklama Ed Lycklama Ed_Lycklama http://www.klg.com eal@klg.com null null null null
120 lynn Ben Lynn Ben_Lynn https://crypto.stanford.edu/~blynn/ benlynn@gmail.com US @bmxlynn null null
121 madore David Madore David_Madore http://www.madore.org/~david/ david+alexander@madore.org FR null null null
122 maffiodo Sandro Maffiodo Sandro_Maffiodo http://www.assezeta.com/sandromaffiodo null IT null null null
123 makarios Selene Makarios Selene_Makarios http://www.bungalow.com/ null null null null null
124 marangoni Andrea Marangoni Andrea_Marangoni http://www.andreamarangoni.it andrea@andreamarangoni.it IT null null null
125 mariano Adrian Mariano Adrian_Mariano http://cam.cornell.edu/adrian/ adrian@cam.cornell.edu US null null null
126 marshall Eric Marshall Eric_Marshall null eric@EMIEng.com US null null null
127 mcfarland Ron McFarland Ron_McFarland null rcm@one.net null null null null
128 meyer Bernd Meyer Bernd_Meyer https://web.archive.org/web/20030212213342/http://byron.csse.monash.edu.au/realindex.html bmeyer@cs.monash.edu.au AU null null null
129 meyer Raphael Meyer Raphael_Meyer null null US null null null
130 mills Christopher Mills Christopher_Mills null mrxo@sonic.net US @MisterXopher null null
131 mix Neil Mix Neil_Mix null null null null null null
132 monge Maurizio Monge Maurizio_Monge null maurizio.monge@gmail.com IT null null null
133 morgan Yves-Marie Morgan Yves-Marie_Morgan null null FR null null null
134 mullender Sjoerd Mullender Sjoerd_Mullender https://github.com/sjoerdmullender Sjoerd.Mullender@cwi.nl NL null null null
135 muth Dominik Muth Dominik_Muth null dominik.muth@gmx.de DE null null null
136 newbern Jeff Newbern Jeff_Newbern null jnewbern@yahoo.com null null null null
137 night Christopher Night Christopher_Night https://web.archive.org/web/20090415070532/https://www.people.fas.harvard.edu/~night/ null US null null null
138 nissenbaum Baruch Nissenbaum Baruch_Nissenbaum null baruch@eng.tau.ac.il IL null null null
139 nuutila Esko Nuutila Esko_Nuutila http://www.cs.hut.fi/~enu/ enu@cs.hut.fi FI null null null
140 ollinger Nicolas Ollinger Nicolas_Ollinger https://www.univ-orleans.fr/lifo/Members/Nicolas.Ollinger/ nicolas.ollinger@univ-orleans.fr FR null null null
141 orendorff Jason Orendorff Jason_Orendorff http://jorendorff.blogspot.com jason@jorendorff.com US null null null
142 osovlanski Doron Osovlanski Doron_Osovlanski http://www.cadtech.co.il/profile.html null null null null null
143 otterness Nathan Otterness Nathan_Otterness https://github.com/yalue supersasquatch@gmail.com US null null null
144 pawka Michael H. Pawka Michael_H_Pawka http://niceup.com mikey@niceup.com null null null null
145 paxson Vern Paxson Vern_Paxson null vern@ee.lbl.gov US null null null
146 persano Mauro Persano Mauro_Persano null mauro_persano@yahoo.com BR null null null
147 phillipps Ian Phillipps Ian_Phillipps null ian@dial.pipex.com null null null null
148 plummer Mark Plummer Mark_Plummer http://www.nrgnet.com/markus markus@nrgnet.com null null null null
149 poikola Timo Poikola Timo_Poikola https://ig.fi/other/ioccc timo@ig.fi FI @timpoiko null null
150 prishchepov Alexander Prishchepov Alexander_Prishchepov https://github.com/sans17/ student.00x@gmail.com US null null null
151 pulo Kevin Pulo Kevin_Pulo //www.kev.pulo.com.au/ kev@pulo.com.au AU null @devkev@fosstodon.org null
152 rakitzis Byron Rakitzis Byron_Rakitzis null null null null null null
153 rantanen Teemu Rantanen Teemu_Rantanen http://www.cs.hut.fi/~tvr/ tvr@cs.hut.fi FI null null null
154 reddy Gopi Reddy Gopi_Reddy null null null null null null
155 renesse Robbert van Renesse Robbert_van_Renesse http://www.cs.cornell.edu/home/rvr rvr@cs.cornell.edu US null null null
156 richards Gregor Richards Gregor_Richards null Richards@codu.org US null null null
157 robison Arch D. Robison Arch_D_Robison null null US null null null
158 rosten Edward Rosten Edward_Rosten https://www.edwardrosten.com ed@edwardrosten.com null null null null
159 ruczynski Peter J Ruczynski Peter_J_Ruczynski http://www.softbase.co.uk/ pete@softbase.demon.co.uk GB null null null
160 rusinkiewicz Szymon Rusinkiewicz Szymon_Rusinkiewicz http://www-leland.stanford.edu/~smr smr@cs.stanford.edu US null null null
161 savastio Michael Savastio Michael_Savastio http://www.geocities.com/SouthBeach/Marina/5775 null null null null null
162 schneiderwent Craig Schneiderwent Craig_Schneiderwent null evilgenius@attglobal.net null null null null
163 schnitzius Mark Schnitzius Mark_Schnitzius null schnitzi@gmail.com null null null null
164 schweikhardt Jens Schweikhardt Jens_Schweikhardt http://www.schweikhardt.net schweikh@schweikhardt.net DE null null null
165 shapiro Andrew T. Shapiro Andrew_Shapiro null null null null null null
166 shapiro Carl Shapiro Carl_Shapiro null carl@lasvegassun.com null null null null
167 shin NATORI Shin NATORI_Shin null natori@is.s.u-tokyo.ac.jp JP null null null
168 sicherman Col. G. L. Sicherman Col_G_L_Sicherman http://www.monmouth.com/~colonel/ colonel@monmouth.com null null null null
169 sidwell Nathan Sidwell Nathan_Sidwell http://www.cs.bris.ac.uk/~nathan/ nathan@cs.bris.ac.uk GB null null null
170 skeggs Cel Skeggs Cel_Skeggs http://www.celskeggs.com celskeggs@gmail.com null null null null
171 sloane Andy Sloane Andy_Sloane null null US null null null
172 smet Alan De Smet Alan_De_Smet http://www.highprogrammer.com/alan null null null null null
173 spinellis Diomidis Spinellis Diomidis_Spinellis http://www.spinellis.gr dds@aueb.gr GR null @DSpinellis@mstdn.social null
174 stein Jan Stein Jan_Stein null null null null null null
175 stewart Thomas Stewart Thomas_Stewart null null US null null null
176 swift Dean Swift Dean_Swift null null null null null null
177 sykes Stephen Sykes Stephen_Sykes https://web.archive.org/web/20160316092728/http://www.stephensykes.com/ null FI null null null
178 thingvold Jon Thingvold Jon_Thingvold null jon.thingvold@usit.uio.no NO null null null
179 thornton Aidan Thornton Aidan_Thornton null makomk@lycos.co.uk GB null null null
180 toledo Oscar Toledo G. Oscar_Toledo https://nanochess.org/ null MX null null null
181 torfs Tom Torfs Tom_Torfs https://web.archive.org/web/20010520021948/http://members.nbci.com/tomtorfs/ null null null null null
182 tromp John Tromp John_Tromp http://tromp.github.io/ john.tromp@gmail.com US null null null
183 tsoj tsoj Tsoj https://gitlab.com/tsoj tsoj.tsoj@gmx.de DE null null null
184 vik Daniel Vik Daniel_Vik https://www.vik.cc daniel@vik.cc US null null null
185 vokes Scott Vokes Scott_Vokes null vokes.s@gmail.com US @silentbicycle null null
186 vosburgh Jay Vosburgh Jay_Vosburgh null fubar@sequent.com US null null null
187 wall Larry Wall Larry_Wall http://www.wall.org/~larry/ larry@wall.org US null null null
188 weaver Vincent Weaver Vincent_Weaver http://www.deater.net/weave/ vince@deater.net US null null null
189 weisberg Jeff Weisberg Jeff_Weisberg http://www.op.net/~jaw jaw@op.net null null null null
190 westley Brian Westley Brian_Westley http://www.westley.org brian@westley.org US null null null
191 wiedijk Freek Wiedijk Freek_Wiedijk null null NL null null null
192 williams John Williams John_Williams null williams@morinda.com null null null null
193 woods James A. Woods James_A_Woods null null null null null null
194 yang Don Yang Don_Yang http://uguu.org/ omoikane@uguu.org US null null null
195 zarbon Lord Zarbon Lord_Zarbon null null null null null null
196 zeitak Adar Zeitak Adar_Zeitak null aa4z2@walla.co.il IL null null null
197 zucker Matt Zucker Matt_Zucker https://mzucker.github.io/swarthmore/ mzucker1@swarthmore.edu US null null null
Binary file not shown.
-360
View File
@@ -1,360 +0,0 @@
#!/usr/bin/env bash
#
# awards_check - check the award lines in README.md files
#
# XXX - This is a temporary utility that will be replaced when
# the .winner.json files are built
#
# This script was mostly auto-generated with the contents of the
# tmp/year-auth-prize.csv file but modified in vim to make it simpler to
# generate as it was not worth getting everything correct. It was initially
# generated like:
#
# echo '#!/bin/bash' > bin/awards_check.sh ; ( while read -r g ; do
# echo grep "$g";
# done < <(sed -e 's,_,/,g' -e 's/"/\\"/g' tmp/year-auth-prize.csv |
# awk -F, '{print grep "\x22" $2 "\x22" " " $1 "/" "README.md"}' ); )
# >> bin/awards_check.sh
#
# To determine how many entries have a mismatch in award compared to the CSV
# file do:
#
# sh tmp/awards_check.sh | grep :0
#
# It must be run in the tmp/ subdirectory. It shouldn't be necessary in future
# IOCCC contests as the problem should not occur again (hence it's a temporary
# file :-) )
#
# This was a hack and not the prettiest hack made by Cody Boone Ferguson
# (@xexyl) to quickly check all entries from 1984 through 2020. It probably could
# have been done simpler but this is what I came up with after being awake for
# 5+ hours at 0700 in the morning. I didn't particularly fancy going through 321
# README.md files and checking 321 lines of the CSV file!
#
# This file as well as some README.md and the CSV file all had to be modified a
# number of times as mismatches were found which is another reason I did not
# want to spend effort trying to get the exact pipeline as it was quicker to
# modify this script.
#
grep -Hc "^# Dishonorable mention" ../1984/anonymous/README.md
grep -Hc "^# Second place" ../1984/decot/README.md
grep -Hc "^# Third place" ../1984/laman/README.md
grep -Hc "^# Grand Prize" ../1984/mullender/README.md
grep -Hc "^# Best one liner" ../1985/applin/README.md
grep -Hc "^# Most obscure program" ../1985/august/README.md
grep -Hc "^# Strangest appearing program" ../1985/lycklama/README.md
grep -Hc "^# Grand prize for most well-rounded in confusion" ../1985/shapiro/README.md
grep -Hc "^# Worst abuse of the C preprocessor" ../1985/sicherman/README.md
grep -Hc "^# Most adaptable program" ../1986/applin/README.md
grep -Hc "^# Best complex task done in a complex way" ../1986/august/README.md
grep -Hc "^# Most useful obfuscation" ../1986/bright/README.md
grep -Hc "^# Worst abuse of the C preprocessor" ../1986/hague/README.md
grep -Hc "^# Best simple task performed in a complex way" ../1986/holloway/README.md
grep -Hc "^# Best layout" ../1986/marshall/README.md
grep -Hc "^# Most illegible code" ../1986/pawka/README.md
grep -Hc "^# Best one liner" ../1986/stein/README.md
grep -Hc "^# Grand prize in most well-rounded in confusion" ../1986/wall/README.md
grep -Hc "^# Best Abuse of the Rules" ../1987/biggar/README.md
grep -Hc "^# Best Obfuscator of Programs" ../1987/heckbert/README.md
grep -Hc "^# Worst Style" ../1987/hines/README.md
grep -Hc "^# Best One Liner" ../1987/korn/README.md
grep -Hc "^# Grand Prize" ../1987/lievaart/README.md
grep -Hc "^# Most Useful Obfuscation" ../1987/wall/README.md
grep -Hc "^# Best Layout" ../1987/westley/README.md
grep -Hc "^# Best of show" ../1988/applin/README.md
grep -Hc "^# Best abuse of system calls" ../1988/dale/README.md
grep -Hc "^# Best visuals" ../1988/isaak/README.md
grep -Hc "^# Best small program" ../1988/litmaath/README.md
grep -Hc "^# Least likely to compile successfully" ../1988/phillipps/README.md
grep -Hc "^# Most useful Obfuscated C program" ../1988/reddy/README.md
grep -Hc "^# Best abuse of C constructs" ../1988/robison/README.md
grep -Hc "^# Best abuse of the rules" ../1988/spinellis/README.md
grep -Hc "^# Best layout" ../1988/westley/README.md
grep -Hc "^# Best self-modifying program" ../1989/fubar/README.md
grep -Hc "^# Strangest abuse of the rules" ../1989/jar.1/README.md
grep -Hc "^# Best of show" ../1989/jar.2/README.md
grep -Hc "^# Most humorous output" ../1989/ovdluhe/README.md
grep -Hc "^# Most complex algorithm" ../1989/paul/README.md
grep -Hc "^# Best minimal use of C" ../1989/robison/README.md
grep -Hc "^# Best layout" ../1989/roemer/README.md
grep -Hc "^# Best game" ../1989/tromp/README.md
grep -Hc "^# Best one liner" ../1989/vanb/README.md
grep -Hc "^# Most algorithms in one program" ../1989/westley/README.md
grep -Hc "^# Best Small Program" ../1990/baruch/README.md
grep -Hc "^# Best Game" ../1990/cmills/README.md
grep -Hc "^# Best Language Tool" ../1990/dds/README.md
grep -Hc "^# Best Abuse of the C Preprocessor" ../1990/dg/README.md
grep -Hc "^# Best Entropy-reducer" ../1990/jaw/README.md
grep -Hc "^# Most Unusual Data Structure" ../1990/pjr/README.md
grep -Hc "^# ANSI Committee's Worst Abuse of C" ../1990/scjones/README.md
grep -Hc "^# Strangest Abuse of the Rules" ../1990/stig/README.md
grep -Hc "^# Best Utility" ../1990/tbr/README.md
grep -Hc "^# Best of Show" ../1990/theorem/README.md
grep -Hc "^# Best Layout" ../1990/westley/README.md
grep -Hc "^# Best Utility" ../1991/ant/README.md
grep -Hc "^# Best Of Show" ../1991/brnstnd/README.md
grep -Hc "^# Best Output" ../1991/buzzard/README.md
grep -Hc "^# Most Useful Label" ../1991/cdupont/README.md
grep -Hc "^# Best X11 Graphics" ../1991/davidguy/README.md
grep -Hc "^# Most Well Rounded" ../1991/dds/README.md
grep -Hc "^# Best One Liner" ../1991/fine/README.md
grep -Hc "^# Best Game" ../1991/rince/README.md
grep -Hc "^# Grand Prize" ../1991/westley/README.md
grep -Hc "^# Most Educational" ../1992/adrian/README.md
grep -Hc "^# Most Useful Program" ../1992/albert/README.md
grep -Hc "^# Best Utility" ../1992/ant/README.md
grep -Hc "^# Most Obfuscated Algorithm" ../1992/buzzard.1/README.md
grep -Hc "^# Best Language Tool" ../1992/buzzard.2/README.md
grep -Hc "^# Most Humorous Output" ../1992/gson/README.md
grep -Hc "^# Best Output" ../1992/imc/README.md
grep -Hc "^# Best X Program" ../1992/kivinen/README.md
grep -Hc "^# Worst Abuse of the C Preprocessor" ../1992/lush/README.md
grep -Hc "^# Best Game" ../1992/marangon/README.md
grep -Hc "^# Worst Abuse of the Rules" ../1992/nathan/README.md
grep -Hc "^# Best of Show" ../1992/vern/README.md
grep -Hc "^# Best Small Program" ../1992/westley/README.md
grep -Hc "^# Best Utility" ../1993/ant/README.md
grep -Hc "^# \"Bill Gates\" Award" ../1993/cmills/README.md
grep -Hc "^# Best Abuse of the C Preprocessor" ../1993/dgibson/README.md
grep -Hc "^# Best Obfuscated Algorithm" ../1993/ejb/README.md
grep -Hc "^# Most Obfuscated X Program" ../1993/jonth/README.md
grep -Hc "^# Best Game" ../1993/leo/README.md
grep -Hc "^# Most Versatile Source" ../1993/lmfjyh/README.md
grep -Hc "^# Best One Liner" ../1993/plummer/README.md
grep -Hc "^# Most Well Rounded" ../1993/rince/README.md
grep -Hc "^# Obfuscated Intelligence Award" ../1993/schnitzi/README.md
grep -Hc "^# Most Irregular Expression" ../1993/vanb/README.md
grep -Hc "^# Best Game" ../1994/dodsond1/README.md
grep -Hc "^# Most Obfuscated Packaging" ../1994/dodsond2/README.md
grep -Hc "^# Best Utility" ../1994/horton/README.md
grep -Hc "^# Most Obfuscated Algorithm" ../1994/imc/README.md
grep -Hc "^# Best One-liner" ../1994/ldb/README.md
grep -Hc "^# Best Layout" ../1994/schnitzi/README.md
grep -Hc "^# Most Well Rounded Obfuscation" ../1994/shapiro/README.md
grep -Hc "^# Worst Abuse of the Rules" ../1994/smr/README.md
grep -Hc "^# Best X11 Program" ../1994/tvr/README.md
grep -Hc "^# Best Short Program" ../1994/weisberg/README.md
grep -Hc "^# Worst Abuse of the C Preprocessor" ../1994/westley/README.md
grep -Hc "^# Best Output" ../1995/cdua/README.md
grep -Hc "^# Most Humorous" ../1995/dodsond1/README.md
grep -Hc "^# Best Game" ../1995/dodsond2/README.md
grep -Hc "^# Interesting Algorithm" ../1995/esde/README.md
grep -Hc "^# Best Utility" ../1995/garry/README.md
grep -Hc "^# Best Layout" ../1995/heathbar/README.md
grep -Hc "^# Best Use of Obfuscation" ../1995/leo/README.md
grep -Hc "^# Best Short Program" ../1995/makarios/README.md
grep -Hc "^# Most Obfuscated Syntax" ../1995/savastio/README.md
grep -Hc "^# Best One Liner" ../1995/schnitzi/README.md
grep -Hc "^# Abusing The Rules" ../1995/spinellis/README.md
grep -Hc "^# Worst Abuse of the C Preprocessor and Most Likely To Amaze" ../1995/vanschnitz/README.md
grep -Hc "^# Best of Show" ../1996/august/README.md
grep -Hc "^# Best Numerical Obfuscation" ../1996/dalbec/README.md
grep -Hc "^# Best Output" ../1996/eldby/README.md
grep -Hc "^# Best Layout" ../1996/gandalf/README.md
grep -Hc "^# Best Obfuscated Character Set Utility" ../1996/huffman/README.md
grep -Hc "^# Best X11 Entry" ../1996/jonth/README.md
grep -Hc "^# Best RFC Obfuscation" ../1996/rcm/README.md
grep -Hc "^# Worst Abuse of the C Preprocessor" ../1996/schweikh1/README.md
grep -Hc "^# Best Algorithm" ../1996/schweikh2/README.md
grep -Hc "^# Best Utility" ../1996/schweikh3/README.md
grep -Hc "^# Best One Liner" ../1996/westley/README.md
grep -Hc "^# Best of Show" ../1998/banks/README.md
grep -Hc "^# Best Encapsulation" ../1998/bas1/README.md
grep -Hc "^# Best Small Program" ../1998/bas2/README.md
grep -Hc "^# Best Object Orientation" ../1998/chaos/README.md
grep -Hc "^# Best Data Hiding" ../1998/df/README.md
grep -Hc "^# Best Utility" ../1998/dlowe/README.md
grep -Hc "^# Most Fun" ../1998/dloweneil/README.md
grep -Hc "^# Obsolescent Feature" ../1998/dorssel/README.md
grep -Hc "^# Most Obfuscated Translator" ../1998/fanf/README.md
grep -Hc "^# Best Flow Control" ../1998/schnitzi/README.md
grep -Hc "^# CPP Abuse" ../1998/schweikh1/README.md
grep -Hc "^# Most Erratic Behavior" ../1998/schweikh2/README.md
grep -Hc "^# Most Space Efficient" ../1998/schweikh3/README.md
grep -Hc "^# Best Self-Documenting" ../1998/tomtorfs/README.md
grep -Hc "^# Best Use of Flags" ../2000/anderson/README.md
grep -Hc "^# Most Specific Output" ../2000/bellard/README.md
grep -Hc "^# Best Utility" ../2000/bmeyer/README.md
grep -Hc "^# Best Abuse of User" ../2000/briddlebane/README.md
grep -Hc "^# Best Layout" ../2000/dhyang/README.md
grep -Hc "^# Worst Abuse of the Rules" ../2000/dlowe/README.md
grep -Hc "^# Best of Show" ../2000/jarijyrki/README.md
grep -Hc "^# Best Small Program" ../2000/natori/README.md
grep -Hc "^# Best Abuse of CPP" ../2000/primenum/README.md
grep -Hc "^# Astronomically Obfuscated" ../2000/rince/README.md
grep -Hc "^# Best game" ../2000/robison/README.md
grep -Hc "^# Most Timely Output" ../2000/schneiderwent/README.md
grep -Hc "^# Most Portable Output" ../2000/thadgavin/README.md
grep -Hc "^# Most Complete Program" ../2000/tomx/README.md
grep -Hc "^# Dishonorable mention" ../2001/anonymous/README.md
grep -Hc "^# Best abuse of the rules" ../2001/bellard/README.md
grep -Hc "^# Best short program" ../2001/cheong/README.md
grep -Hc "^# Most obfuscated sound" ../2001/coupard/README.md
grep -Hc "^# Worst Driver" ../2001/ctk/README.md
grep -Hc "^# Best AI" ../2001/dgbeards/README.md
grep -Hc "^# Best abuse of the C preprocessor" ../2001/herrmann1/README.md
grep -Hc "^# Most eye-crossing" ../2001/herrmann2/README.md
grep -Hc "^# Best Of Show" ../2001/jason/README.md
grep -Hc "^# Best Curses Game" ../2001/kev/README.md
grep -Hc "^# Best of Show" ../2001/ollinger/README.md
grep -Hc "^# Best abuse of the user" ../2001/rosten/README.md
grep -Hc "^# Best one-liner" ../2001/schweikh/README.md
grep -Hc "^# Best position-independent code" ../2001/westley/README.md
grep -Hc "^# Best Graphic Game" ../2001/williams/README.md
grep -Hc "^# Best use of \"Precious\" Lines" ../2004/anonymous/README.md
grep -Hc "^# Best use of Vision" ../2004/arachnid/README.md
grep -Hc "^# Best Calculated Risk" ../2004/burley/README.md
grep -Hc "^# Best Use of Light and Spheres" ../2004/gavare/README.md
grep -Hc "^# Best of Show" ../2004/gavin/README.md
grep -Hc "^# Best Abuse of the Guidelines" ../2004/hibachi/README.md
grep -Hc "^# Most Functional Output" ../2004/hoyle/README.md
grep -Hc "^# Best Abuse of the Periodic Table" ../2004/jdalbec/README.md
grep -Hc "^# Best One-Liner" ../2004/kopczynski/README.md
grep -Hc "^# Best Font Engine" ../2004/newbern/README.md
grep -Hc "^# Best Utility" ../2004/omoikane/README.md
grep -Hc "^# Best Non-Use of Curses" ../2004/schnitzi/README.md
grep -Hc "^# Best Abuse of Indentation" ../2004/sds/README.md
grep -Hc "^# Best X11 Game" ../2004/vik1/README.md
grep -Hc "^# Best Abuse of CPP" ../2004/vik2/README.md
grep -Hc "^# Most ingenious puzzle solution" ../2005/aidan/README.md
grep -Hc "^# Best 3D puzzle" ../2005/anon/README.md
grep -Hc "^# Most superfluous output" ../2005/boutines/README.md
grep -Hc "^# Most ambiguous language" ../2005/chia/README.md
grep -Hc "^# Best 2D puzzle" ../2005/giljade/README.md
grep -Hc "^# Most sonorous output" ../2005/jetro/README.md
grep -Hc "^# Abuse of the rules" ../2005/klausler/README.md
grep -Hc "^# Best use of parenthesis" ../2005/mikeash/README.md
grep -Hc "^# Best use of the WWW" ../2005/mynx/README.md
grep -Hc "^# Best of Show" ../2005/persano/README.md
grep -Hc "^# Best Emulator" ../2005/sykes/README.md
grep -Hc "^# Most discourteous interpreter" ../2005/timwi/README.md
grep -Hc "^# Best Game" ../2005/toledo/README.md
grep -Hc "^# Most circuitous walk" ../2005/vik/README.md
grep -Hc "^# Most beauteous visuals" ../2005/vince/README.md
grep -Hc "^# EDAMAME Award" ../2006/birken/README.md
grep -Hc "^# Most Useful" ../2006/borsanyi/README.md
grep -Hc "^# Most Obfuscated Audio" ../2006/grothe/README.md
grep -Hc "^# Most Irrational" ../2006/hamre/README.md
grep -Hc "^# Best Game" ../2006/meyer/README.md
grep -Hc "^# Best Compiled Graphics" ../2006/monge/README.md
grep -Hc "^# Best Abuse of Computation" ../2006/night/README.md
grep -Hc "^# Homer's Favorite" ../2006/sloane/README.md
grep -Hc "^# Best Computed Graphics" ../2006/stewart/README.md
grep -Hc "^# Best Assembler" ../2006/sykes1/README.md
grep -Hc "^# Best One Liner" ../2006/sykes2/README.md
grep -Hc "^# Best Small Program" ../2006/toledo1/README.md
grep -Hc "^# Best of Show" ../2006/toledo2/README.md
grep -Hc "^# Most Portable Chess Set" ../2006/toledo3/README.md
grep -Hc "^# Best of Show - Most Shrinkable" ../2011/akari/README.md
grep -Hc "^# Most devolving" ../2011/blakely/README.md
grep -Hc "^# Best data utility" ../2011/borsanyi/README.md
grep -Hc "^# Most self deprecating" ../2011/dlowe/README.md
grep -Hc "^# Best ball" ../2011/eastman/README.md
grep -Hc "^# Most useful" ../2011/fredriksson/README.md
grep -Hc "^# Most artistic" ../2011/goren/README.md
grep -Hc "^# Best solved puzzle" ../2011/hamaji/README.md
grep -Hc "^# Best self documenting program" ../2011/hou/README.md
grep -Hc "^# Best one liner" ../2011/konno/README.md
grep -Hc "^# Most surprisingly portable" ../2011/richards/README.md
grep -Hc "^# Best non-chess game" ../2011/toledo/README.md
grep -Hc "^# Most sound" ../2011/vik/README.md
grep -Hc "^# Most shiny" ../2011/zucker/README.md
grep -Hc "^# Most GIFted expressions" ../2012/blakely/README.md
grep -Hc "^# Most notable and best tool" ../2012/deckmyn/README.md
grep -Hc "^# Best way to lose a life" ../2012/dlowe/README.md
grep -Hc "^# Most complex ASCII fluid - Honorable mention" ../2012/endoh1/README.md
grep -Hc "^# PiE in the sky award" ../2012/endoh2/README.md
grep -Hc "^# Most conspiratorial" ../2012/grothe/README.md
grep -Hc "^# Most elementary use of C - Silver award" ../2012/hamano/README.md
grep -Hc "^# Most useful obfuscation" ../2012/hou/README.md
grep -Hc "^# Best short program" ../2012/kang/README.md
grep -Hc "^# Best one liner" ../2012/konno/README.md
grep -Hc "^# Most surreptitious" ../2012/omoikane/README.md
grep -Hc "^# Most functional" ../2012/tromp/README.md
grep -Hc "^# Best use of cocoa - Bronze award" ../2012/vik/README.md
grep -Hc "^# Balanced use of obfuscation - Gold award" ../2012/zeitak/README.md
grep -Hc "^# Best painting tool" ../2013/birken/README.md
grep -Hc "^# Most partisan 1-liner" ../2013/cable1/README.md
grep -Hc "^# Best of show" ../2013/cable2/README.md
grep -Hc "^# Largest small system emulator" ../2013/cable3/README.md
grep -Hc "^# Best sparkling utility" ../2013/dlowe/README.md
grep -Hc "^# Most lazy SKIer" ../2013/endoh1/README.md
grep -Hc "^# Most recyclable" ../2013/endoh2/README.md
grep -Hc "^# Most tweetable 1-liner" ../2013/endoh3/README.md
grep -Hc "^# Most solid" ../2013/endoh4/README.md
grep -Hc "^# Best use of 1 Infinite Loop" ../2013/hou/README.md
grep -Hc "^# Most timely rendered" ../2013/mills/README.md
grep -Hc "^# Most catty" ../2013/misaka/README.md
grep -Hc "^# Smallest large system simulator" ../2013/morgan1/README.md
grep -Hc "^# Most playfully versatile" ../2013/morgan2/README.md
grep -Hc "^# Most poetic use of strings" ../2013/robison/README.md
grep -Hc "^# Best use of port 1701" ../2014/birken/README.md
grep -Hc "^# Most underscored argument" ../2014/deak/README.md
grep -Hc "^# Most square (YODA award)" ../2014/endoh1/README.md
grep -Hc "^# Best use of bioinformatics" ../2014/endoh2/README.md
grep -Hc "^# Homage to a classic game" ../2014/maffiodo1/README.md
grep -Hc "^# Most tweetable entry" ../2014/maffiodo2/README.md
grep -Hc "^# Most likely to succeed" ../2014/morgan/README.md
grep -Hc "^# Best choice of optimization" ../2014/sinon/README.md
grep -Hc "^# Most dynamic" ../2014/skeggs/README.md
grep -Hc "^# Best handling of beeps" ../2014/vik/README.md
grep -Hc "^# Most functional" ../2014/wiedijk/README.md
grep -Hc "^# Most Useful" ../2015/burton/README.md
grep -Hc "^# Most Crafty" ../2015/dogon/README.md
grep -Hc "^# Best Handwriting" ../2015/duble/README.md
grep -Hc "^# Most Diffused Reaction" ../2015/endoh1/README.md
grep -Hc "^# Most Overlooked Obfuscation" ../2015/endoh2/README.md
grep -Hc "^# Back to the Future Award" ../2015/endoh3/README.md
grep -Hc "^# Best One-liner" ../2015/endoh4/README.md
grep -Hc "^# Most Well-rounded Hash" ../2015/hou/README.md
grep -Hc "^# Most Different" ../2015/howe/README.md
grep -Hc "^# \"For the Birds!\" Award" ../2015/mills1/README.md
grep -Hc "^# Most Compact" ../2015/mills2/README.md
grep -Hc "^# Most Complete Use of CPP" ../2015/muth/README.md
grep -Hc "^# Best Documented" ../2015/schweikhardt/README.md
grep -Hc "^# Most Pointed Reaction" ../2015/yang/README.md
grep -Hc "^# Most cacophonic" ../2018/algmyr/README.md
grep -Hc "^# Most able to divine code gaps" ../2018/anderson/README.md
grep -Hc "^# Most inflationary" ../2018/bellard/README.md
grep -Hc "^# Best one-liner" ../2018/burton1/README.md
grep -Hc "^# Best abuse of the rules" ../2018/burton2/README.md
grep -Hc "^# Most likely to be awarded" ../2018/ciura/README.md
grep -Hc "^# Best tool to reveal holes" ../2018/endoh1/README.md
grep -Hc "^# Best use of python" ../2018/endoh2/README.md
grep -Hc "^# Best use of weasel words" ../2018/ferguson/README.md
grep -Hc "^# Most unstable" ../2018/giles/README.md
grep -Hc "^# Most likely to top the charts" ../2018/hou/README.md
grep -Hc "^# Best of show" ../2018/mills/README.md
grep -Hc "^# Most stellar" ../2018/poikola/README.md
grep -Hc "^# Most connected" ../2018/vokes/README.md
grep -Hc "^# Most shifty" ../2018/yang/README.md
grep -Hc "^# Most functional interpreter" ../2019/adamovsky/README.md
grep -Hc "^# Best one-liner" ../2019/burton/README.md
grep -Hc "^# Most alphabetic" ../2019/ciura/README.md
grep -Hc "^# Best small program" ../2019/diels-grabsch1/README.md
grep -Hc "^# Most self-aware" ../2019/diels-grabsch2/README.md
grep -Hc "^# Best use of space and time" ../2019/dogon/README.md
grep -Hc "^# Best collaborative graphics" ../2019/duble/README.md
grep -Hc "^# Most in need of debugging" ../2019/endoh/README.md
grep -Hc "^# Most in need of wide space" ../2019/giles/README.md
grep -Hc "^# Most in need of whitespace" ../2019/karns/README.md
grep -Hc "^# Most functional compiler" ../2019/lynn/README.md
grep -Hc "^# Most in need to be tweeted" ../2019/mills/README.md
grep -Hc "^# Most calendrical" ../2019/poikola/README.md
grep -Hc "^# Most in need of transparency" ../2019/yang/README.md
grep -Hc "^# Best one-liner" ../2020/burton/README.md
grep -Hc "^# Best of show - abuse of libc" ../2020/carlini/README.md
grep -Hc "^# Most explosive" ../2020/endoh1/README.md
grep -Hc "^# Best perspective" ../2020/endoh2/README.md
grep -Hc "^# Most head-turning" ../2020/endoh3/README.md
grep -Hc "^# Don't tread on me award" ../2020/ferguson1/README.md
grep -Hc "^# Most enigmatic" ../2020/ferguson2/README.md
grep -Hc "^# Most phony" ../2020/giles/README.md
grep -Hc "^# Best utility" ../2020/kurdyukov1/README.md
grep -Hc "^# Least detailed" ../2020/kurdyukov2/README.md
grep -Hc "^# Bset slaml prragom" ../2020/kurdyukov3/README.md
grep -Hc "^# Best abuse of lámatyávë" ../2020/kurdyukov4/README.md
grep -Hc "^# Most percussive" ../2020/otterness/README.md
grep -Hc "^# Most misleading indentation" ../2020/tsoj/README.md
grep -Hc "^# Best abuse of CPP" ../2020/yang/README.md
-89
View File
@@ -1,89 +0,0 @@
#!/usr/bin/env bash
#
# check_file_list.sh - look for problems with file_list.* files
#
# XXX - This is a temporary utility that will be replaced when
# the .winner.json files are built
#
# setup
#
export REQUIRED_FILE_LIST="file_list.required.txt"
export BUILT_FILE_LIST="file_list.built.txt"
export FULL_MANIFEST_LIST="file_list.full_manifest.txt"
export FOUND_LIST="file_list.found.txt"
export EXIT_CODE=0
# firewall
#
if [[ ! -f $REQUIRED_FILE_LIST ]]; then
echo "$0: ERROR: missing REQUIRED_FILE_LIST: $REQUIRED_FILE_LIST" 1>&2
exit 10
fi
if [[ ! -s $REQUIRED_FILE_LIST ]]; then
echo "$0: ERROR: REQUIRED_FILE_LIST is empty: $REQUIRED_FILE_LIST" 1>&2
exit 11
fi
if [[ ! -f $BUILT_FILE_LIST ]]; then
echo "$0: ERROR: missing BUILT_FILE_LIST: $BUILT_FILE_LIST" 1>&2
exit 12
fi
if [[ ! -s $BUILT_FILE_LIST ]]; then
echo "$0: ERROR: BUILT_FILE_LIST is empty: $BUILT_FILE_LIST" 1>&2
exit 13
fi
if [[ ! -f $FULL_MANIFEST_LIST ]]; then
echo "$0: ERROR: missing FULL_MANIFEST_LIST: $FULL_MANIFEST_LIST" 1>&2
exit 14
fi
if [[ ! -s $FULL_MANIFEST_LIST ]]; then
echo "$0: ERROR: FULL_MANIFEST_LIST is empty: $FULL_MANIFEST_LIST" 1>&2
exit 15
fi
if [[ ! -f $FOUND_LIST ]]; then
echo "$0: ERROR: missing FOUND_LIST: $FOUND_LIST" 1>&2
exit 16
fi
if [[ ! -s $FOUND_LIST ]]; then
echo "$0: ERROR: FOUND_LIST is empty: $FOUND_LIST" 1>&2
exit 17
fi
# look for missing required files
#
export TMP_FILE="tmp.$$.missing"
trap 'rm -f $TMP_FILE; exit' 0 1 2 3 15
comm -23 "$REQUIRED_FILE_LIST" "$FOUND_LIST" | sort -t/ > "$TMP_FILE"
if [[ -s $TMP_FILE ]]; then
COUNT=$(wc -l < "$TMP_FILE" | sed -e 's/^ *//')
echo "# $0: Waning: missing required file count: $COUNT"
EXIT_CODE=18 # exit 18
echo "#"
echo "# $0: missing required file list starts below"
cat "$TMP_FILE"
echo "# $0: missing required file list ends above"
fi
rm -f "$TMP_FILE"
# look for found files not in the manifest
#
export TMP_FILE="tmp.$$.missing"
trap 'rm -f $TMP_FILE; exit' 0 1 2 3 15
comm -13 "$FULL_MANIFEST_LIST" "$FOUND_LIST" | sort -t/ > "$TMP_FILE"
if [[ -s $TMP_FILE ]]; then
COUNT=$(wc -l < "$TMP_FILE" | sed -e 's/^ *//')
echo "# $0: Waning: found files not in the manifest count: $COUNT"
EXIT_CODE=19 # exit 19
echo "#"
echo "# $0: found files not in the manifest list starts below"
cat "$TMP_FILE"
echo "# $0: found files not in the manifest list ends above"
fi
rm -f "$TMP_FILE"
# All Done!!! All Done!!! -- Jessica Noll, Age 2
#
if [[ $EXIT_CODE -ne 0 ]]; then
echo "$0: Warning: about to exit: $EXIT_CODE" 1>&2
fi
exit "$EXIT_CODE"
-253
View File
@@ -1,253 +0,0 @@
#!/usr/bin/env bash
#
# fake.gen_index.sh - generate a fake index.html file for an entry
#
# XXX - This is a temporary utility that will be replaced when
# the .winner.json files are built
#
# Copyright (c) 2023 by Landon Curt Noll. All Rights Reserved.
#
# Permission to use, copy, modify, and distribute this software and
# its documentation for any purpose and without fee is hereby granted,
# provided that the above copyright, this permission notice and text
# this comment, and the disclaimer below appear in all of the following:
#
# supporting documentation
# source copies
# source works derived from this source
# binaries derived from this source or from derived source
#
# LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
# EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# chongo (Landon Curt Noll, http://www.isthe.com/chongo/index.html) /\oo/\
#
# Share and enjoy! :-)
# setup
#
export VERSION="1.0.5 2023-10-31"
NAME=$(basename "$0"); export NAME
#
export V_FLAG=0
export DOMAIN="ioccc-src.github.io"
export DOCPATH="/temp-test-ioccc"
export GITHUB_REPO="https://github.com/ioccc-src/temp-test-ioccc"
export TOPDIR=".."
# usage
#
export USAGE="usage: $0 [-h] [-v level] [-d www.domain.org] [-p /path/to/docroot] [-g github_url ] [-t topdir] year[/dir] [dir]
-h print help message and exit
-v level set verbosity level (def level: $V_FLAG)
-d www.domain.org change domain (def: $DOMAIN)
-p /path/to/docroot use path under domain to document root (def: $DOCPATH)
-g github_url path to the GitHub repo (def: $GITHUB_REPO)
-t topdir path to top of the local GitHub repo tree (def: $TOPDIR)
year[/dir] path to winner directory (or just year if there is a path arg
[dir] optional winner directory (1st arg is just year)
Exit codes:
0 all OK
2 -h and help string printed or -V and version string printed
3 command line error
4 cannot find writable winner directory
>= 10 internal error
$NAME version: $VERSION"
# parse command line
#
while getopts :hv:d:p:g:t: flag; do
case "$flag" in
h) echo "$USAGE"
exit 2
;;
v) V_FLAG="$OPTARG"
;;
d) DOMAIN="$OPTARG"
;;
p) DOCPATH="$OPTARG"
;;
g) GITHUB_REPO="$OPTARG"
;;
t) TOPDIR="$OPTARG"
;;
\?) echo "$0: ERROR: invalid option: -$OPTARG" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
:) echo "$0: ERROR: option -$OPTARG requires an argument" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
*) echo "$0: ERROR: unexpected value from getopts: $flag" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
esac
done
#
# remove the options
#
shift $(( OPTIND - 1 ));
#
# verify arg count and parse args
#
export WINNER_PATH
export YEAR
export WINNER
case "$#" in
1) WINNER_PATH="$1"
YEAR="${WINNER_PATH%/*}"
WINNER="${WINNER_PATH#*/}"
;;
2) WINNER_PATH="$1/$2"
YEAR="$1"
WINNER="$2"
;;
*) echo "$0: ERROR: expected 1 or 2 args, found: $#" 1>&2
echo "$USAGE" 1>&2
exit 3
;;
esac
export FULL_WINNER_PATH="$TOPDIR/$WINNER_PATH"
# form full URL
#
export URL_PATH="https://$DOMAIN$DOCPATH/$YEAR/$WINNER"
export URL_BASENAME="index.html"
export URL="$URL_PATH/$URL_BASENAME"
export GITHUB_URL_PATH="$GITHUB_REPO/$YEAR/$WINNER"
export GITHUB_URL="$GITHUB_URL_PATH/$URL_BASENAME"
# form Nu Html Checker doc url string
#
VALIDATOR_ENCODED_URL=$(echo "$URL" | sed -e 's;/;%2F;g' -e 's;:;%3A;')
export VALIDATOR_ENCODED_URL
# print running info if verbose
#
if [[ $V_FLAG -ge 5 ]]; then
echo "$0: debug[5]: V_FLAG=$V_FLAG" 1>&2
echo "$0: debug[5]: DOMAIN=$DOMAIN" 1>&2
echo "$0: debug[5]: DOCPATH=$DOCPATH" 1>&2
echo "$0: debug[5]: GITHUB_REPO=$GITHUB_REPO" 1>&2
echo "$0: debug[5]: TOPDIR=$TOPDIR" 1>&2
echo "$0: debug[5]: WINNER_PATH=$WINNER_PATH" 1>&2
echo "$0: debug[5]: YEAR=$YEAR" 1>&2
echo "$0: debug[5]: WINNER=$WINNER" 1>&2
echo "$0: debug[5]: WINNER_PATH=$WINNER_PATH" 1>&2
echo "$0: debug[5]: URL_PATH=$URL_PATH" 1>&2
echo "$0: debug[5]: URL_BASENAME=$URL_BASENAME" 1>&2
echo "$0: debug[5]: URL=$URL" 1>&2
echo "$0: debug[5]: GITHUB_URL_PATH=$GITHUB_URL_PATH" 1>&2
echo "$0: debug[5]: GITHUB_URL=$GITHUB_URL" 1>&2
echo "$0: debug[5]: VALIDATOR_ENCODED_URL=$VALIDATOR_ENCODED_URL" 1>&2
fi
# make is easier to process CSV files
#
IFS="$IFS,"
# verify winner directory is writable
#
if [[ ! -e $FULL_WINNER_PATH ]]; then
echo "$0: ERROR: FULL_WINNER_PATH does not exist: $FULL_WINNER_PATH" 1>&2
exit 4
fi
if [[ ! -d $FULL_WINNER_PATH ]]; then
echo "$0: ERROR: FULL_WINNER_PATH is not a directory: $FULL_WINNER_PATH" 1>&2
exit 4
fi
if [[ ! -w $FULL_WINNER_PATH ]]; then
echo "$0: ERROR: FULL_WINNER_PATH is not a writable directory: $FULL_WINNER_PATH" 1>&2
exit 4
fi
# build the index.html file
#
export INDEX_PATH="$FULL_WINNER_PATH/$URL_BASENAME"
export TMP_FILE="$FULL_WINNER_PATH/tmp.$$.$URL_BASENAME"
trap 'rm -f $TMP_FILE; exit' 0 1 2 3 15
cat > "$TMP_FILE" << EOF
<!DOCTYPE html>
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- file: $WINNER_PATH/$URL_BASENAME created by: $NAME version: $VERSION -->
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>$YEAR $WINNER</title>
<meta name="description" content="IOCCC year: $YEAR IOCCC winner: $WINNER winner index page">
<meta name="keywords" content="IOCCC,$YEAR,$WINNER,winner index page">
</head>
<body>
<h1>$YEAR $WINNER</h1>
<p>XXX - fake content until readme2index is working - XXX</p>
<hr style="width:50%;text-align:left;margin-left:0">
<!-- Start Nu Html Checker -->
<p><a href="https://validator.w3.org/nu/?doc=$VALIDATOR_ENCODED_URL">Nu Html check $URL</a></p>
<!-- End Nu Html Checker -->
</body>
</html>
EOF
# update index.html if needed
#
if ! cmp -s "$TMP_FILE" "$INDEX_PATH"; then
# replace index.html file
#
if [[ $V_FLAG -ge 1 ]]; then
echo "$0: debug[1]: updating $INDEX_PATH"
fi
if [[ $V_FLAG -ge 1 ]]; then
mv -f -v "$TMP_FILE" "$INDEX_PATH"
status="$?"
else
mv -f "$TMP_FILE" "$INDEX_PATH"
status="$?"
fi
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: mv -f -v $TMP_FILE $INDEX_PATH failed, error: $status" 1>&2
exit 10
fi
else
# index.html is OK, remove the tmp file
#
rm -f "$TMP_FILE"
if [[ -e $TMP_FILE ]]; then
echo "$0: ERROR: TMP_FILE cannot be removed for cleanup: $TMP_FILE" 1>&2
exit 11
fi
fi
# All Done!!! All Done!!! -- Jessica Noll, Age 2
#
exit 0
-263
View File
@@ -1,263 +0,0 @@
#!/usr/bin/env bash
#
# fake.gen_inventory.sh - generate a fake .inventory.html file for an entry
#
# XXX - This is a temporary utility that will be replaced when
# the .winner.json files are built
#
# Copyright (c) 2023 by Landon Curt Noll. All Rights Reserved.
#
# Permission to use, copy, modify, and distribute this software and
# its documentation for any purpose and without fee is hereby granted,
# provided that the above copyright, this permission notice and text
# this comment, and the disclaimer below appear in all of the following:
#
# supporting documentation
# source copies
# source works derived from this source
# binaries derived from this source or from derived source
#
# LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
# EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# chongo (Landon Curt Noll, http://www.isthe.com/chongo/index.html) /\oo/\
#
# Share and enjoy! :-)
# setup
#
export VERSION="1.0.1 2023-10-31"
NAME=$(basename "$0"); export NAME
#
export V_FLAG=0
export DOMAIN="ioccc-src.github.io"
export DOCPATH="/temp-test-ioccc"
export GITHUB_REPO="https://github.com/ioccc-src/temp-test-ioccc"
export TOPDIR=".."
# usage
#
export USAGE="usage: $0 [-h] [-v level] [-d www.domain.org] [-p /path/to/docroot] [-g github_url ] [-t topdir] year[/dir] [dir]
-h print help message and exit
-v level set verbosity level (def level: $V_FLAG)
-d www.domain.org change domain (def: $DOMAIN)
-p /path/to/docroot use path under domain to document root (def: $DOCPATH)
-g github_url path to the GitHub repo (def: $GITHUB_REPO)
-t topdir path to top of the local GitHub repo tree (def: $TOPDIR)
year[/dir] path to winner directory (or just year if there is a path arg
[dir] optional winner directory (1st arg is just year)
Exit codes:
0 all OK
2 -h and help string printed or -V and version string printed
3 command line error
4 cannot find writable winner directory
>= 10 internal error
$NAME version: $VERSION"
# parse command line
#
while getopts :hv:d:p:g:t: flag; do
case "$flag" in
h) echo "$USAGE"
exit 2
;;
v) V_FLAG="$OPTARG"
;;
d) DOMAIN="$OPTARG"
;;
p) DOCPATH="$OPTARG"
;;
g) GITHUB_REPO="$OPTARG"
;;
t) TOPDIR="$OPTARG"
;;
\?) echo "$0: ERROR: invalid option: -$OPTARG" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
:) echo "$0: ERROR: option -$OPTARG requires an argument" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
*) echo "$0: ERROR: unexpected value from getopts: $flag" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
esac
done
#
# remove the options
#
shift $(( OPTIND - 1 ));
#
# verify arg count and parse args
#
export WINNER_PATH
export YEAR
export WINNER
case "$#" in
1) WINNER_PATH="$1"
YEAR="${WINNER_PATH%/*}"
WINNER="${WINNER_PATH#*/}"
;;
2) WINNER_PATH="$1/$2"
YEAR="$1"
WINNER="$2"
;;
*) echo "$0: ERROR: expected 1 or 2 args, found: $#" 1>&2
echo "$USAGE" 1>&2
exit 3
;;
esac
export FULL_WINNER_PATH="$TOPDIR/$WINNER_PATH"
# form full URL
#
export URL_PATH="https://$DOMAIN$DOCPATH/$YEAR/$WINNER"
export URL_BASENAME=".inventory.html"
export URL="$URL_PATH/$URL_BASENAME"
export GITHUB_URL_PATH="$GITHUB_REPO/$YEAR/$WINNER"
export GITHUB_URL="$GITHUB_URL_PATH/$URL_BASENAME"
# form Nu Html Checker doc url string
#
VALIDATOR_ENCODED_URL=$(echo "$URL" | sed -e 's;/;%2F;g' -e 's;:;%3A;')
export VALIDATOR_ENCODED_URL
# print running info if verbose
#
if [[ $V_FLAG -ge 5 ]]; then
echo "$0: debug[5]: V_FLAG=$V_FLAG" 1>&2
echo "$0: debug[5]: DOMAIN=$DOMAIN" 1>&2
echo "$0: debug[5]: DOCPATH=$DOCPATH" 1>&2
echo "$0: debug[5]: GITHUB_REPO=$GITHUB_REPO" 1>&2
echo "$0: debug[5]: TOPDIR=$TOPDIR" 1>&2
echo "$0: debug[5]: WINNER_PATH=$WINNER_PATH" 1>&2
echo "$0: debug[5]: YEAR=$YEAR" 1>&2
echo "$0: debug[5]: WINNER=$WINNER" 1>&2
echo "$0: debug[5]: WINNER_PATH=$WINNER_PATH" 1>&2
echo "$0: debug[5]: URL_PATH=$URL_PATH" 1>&2
echo "$0: debug[5]: URL_BASENAME=$URL_BASENAME" 1>&2
echo "$0: debug[5]: URL=$URL" 1>&2
echo "$0: debug[5]: GITHUB_URL_PATH=$GITHUB_URL_PATH" 1>&2
echo "$0: debug[5]: GITHUB_URL=$GITHUB_URL" 1>&2
echo "$0: debug[5]: VALIDATOR_ENCODED_URL=$VALIDATOR_ENCODED_URL" 1>&2
fi
# make is easier to process CSV files
#
IFS="$IFS,"
# verify winner directory is writable
#
if [[ ! -e $FULL_WINNER_PATH ]]; then
echo "$0: ERROR: FULL_WINNER_PATH does not exist: $FULL_WINNER_PATH" 1>&2
exit 4
fi
if [[ ! -d $FULL_WINNER_PATH ]]; then
echo "$0: ERROR: FULL_WINNER_PATH is not a directory: $FULL_WINNER_PATH" 1>&2
exit 4
fi
if [[ ! -w $FULL_WINNER_PATH ]]; then
echo "$0: ERROR: FULL_WINNER_PATH is not a writable directory: $FULL_WINNER_PATH" 1>&2
exit 4
fi
# build the .inventory.html file
#
export INVENTORY_PATH="$FULL_WINNER_PATH/$URL_BASENAME"
export TMP_FILE="$FULL_WINNER_PATH/tmp.$$.$URL_BASENAME"
trap 'rm -f $TMP_FILE; exit' 0 1 2 3 15
cat > "$TMP_FILE" << EOF
<!DOCTYPE html>
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- file: $WINNER_PATH/$URL_BASENAME created by: $NAME version: $VERSION -->
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>$YEAR $WINNER Inventory</title>
<meta name="description" content="IOCCC year: $YEAR IOCCC winner: $WINNER winner inventory">
<meta name="keywords" content="IOCCC,$YEAR,$WINNER,winner inventory">
</head>
<body>
<h1>$YEAR $WINNER Inventory</h1>
<p><ul>
<li><a href="$URL_PATH/index.html">index.html</a> - click here first</a></li>
<li>XXX - put link to prog source code - XXX</a></li>
<li><a href="$GITHUB_URL_PATH/Makefile">Makefile</a> - Makefile</a></li>
<li>XXX - put link to prog alt code if it exists - XXX</a></li>
<li>XXX - put link to prog original code - XXX</a></li>
<li>XXX - put links to other winners_rank numbered inventory files - XXX</a></li>
<li><a href="$GITHUB_URL_PATH/.inventory.html">.inventory.html</a> - full inventory of all winner files</a></li>
<li><a href="$GITHUB_URL_PATH/.gitignore">.gitignore</a> - list of files that should not be committed under git</a></li>
<li>XXX - put links to other null winners_rank inventory files - XXX</a></li>
</ul>
<hr style="width:50%;text-align:left;margin-left:0">
<!-- Start Nu Html Checker -->
<p><a href="https://validator.w3.org/nu/?doc=$VALIDATOR_ENCODED_URL">Nu Html check $URL</a></p>
<!-- End Nu Html Checker -->
</body>
</html>
EOF
# update .inventory.html if needed
#
if ! cmp -s "$TMP_FILE" "$INVENTORY_PATH"; then
# replace index.html file
#
if [[ $V_FLAG -ge 1 ]]; then
echo "$0: debug[1]: updating $INVENTORY_PATH"
fi
if [[ $V_FLAG -ge 1 ]]; then
mv -f -v "$TMP_FILE" "$INVENTORY_PATH"
status="$?"
else
mv -f "$TMP_FILE" "$INVENTORY_PATH"
status="$?"
fi
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: mv -f -v $TMP_FILE $INVENTORY_PATH failed, error: $status" 1>&2
exit 10
fi
else
# index.html is OK, remove the tmp file
#
rm -f "$TMP_FILE"
if [[ -e $TMP_FILE ]]; then
echo "$0: ERROR: TMP_FILE cannot be removed for cleanup: $TMP_FILE" 1>&2
exit 11
fi
fi
# All Done!!! All Done!!! -- Jessica Noll, Age 2
#
exit 0
-989
View File
@@ -1,989 +0,0 @@
1984/anonymous/.winner.json
1984/anonymous/1984_anonymous.tar.bz2
1984/anonymous/index.html
1984/decot/.winner.json
1984/decot/1984_decot.tar.bz2
1984/decot/index.html
1984/laman/.winner.json
1984/laman/1984_laman.tar.bz2
1984/laman/index.html
1984/mullender/.winner.json
1984/mullender/1984_mullender.tar.bz2
1984/mullender/index.html
1985/applin/.winner.json
1985/applin/1985_applin.tar.bz2
1985/applin/index.html
1985/august/.winner.json
1985/august/1985_august.tar.bz2
1985/august/index.html
1985/lycklama/.winner.json
1985/lycklama/1985_lycklama.tar.bz2
1985/lycklama/index.html
1985/shapiro/.winner.json
1985/shapiro/1985_shapiro.tar.bz2
1985/shapiro/index.html
1985/sicherman/.winner.json
1985/sicherman/1985_sicherman.tar.bz2
1985/sicherman/index.html
1986/applin/.winner.json
1986/applin/1986_applin.tar.bz2
1986/applin/index.html
1986/august/.winner.json
1986/august/1986_august.tar.bz2
1986/august/index.html
1986/bright/.winner.json
1986/bright/1986_bright.tar.bz2
1986/bright/index.html
1986/hague/.winner.json
1986/hague/1986_hague.tar.bz2
1986/hague/index.html
1986/holloway/.winner.json
1986/holloway/1986_holloway.tar.bz2
1986/holloway/index.html
1986/marshall/.winner.json
1986/marshall/1986_marshall.tar.bz2
1986/marshall/index.html
1986/pawka/.winner.json
1986/pawka/1986_pawka.tar.bz2
1986/pawka/index.html
1986/stein/.winner.json
1986/stein/1986_stein.tar.bz2
1986/stein/index.html
1986/wall/.winner.json
1986/wall/1986_wall.tar.bz2
1986/wall/index.html
1987/biggar/.winner.json
1987/biggar/1987_biggar.tar.bz2
1987/biggar/index.html
1987/heckbert/.winner.json
1987/heckbert/1987_heckbert.tar.bz2
1987/heckbert/index.html
1987/hines/.winner.json
1987/hines/1987_hines.tar.bz2
1987/hines/index.html
1987/korn/.winner.json
1987/korn/1987_korn.tar.bz2
1987/korn/index.html
1987/lievaart/.winner.json
1987/lievaart/1987_lievaart.tar.bz2
1987/lievaart/index.html
1987/wall/.winner.json
1987/wall/1987_wall.tar.bz2
1987/wall/index.html
1987/westley/.winner.json
1987/westley/1987_westley.tar.bz2
1987/westley/index.html
1988/applin/.winner.json
1988/applin/1988_applin.tar.bz2
1988/applin/index.html
1988/dale/.winner.json
1988/dale/1988_dale.tar.bz2
1988/dale/index.html
1988/isaak/.winner.json
1988/isaak/1988_isaak.tar.bz2
1988/isaak/index.html
1988/litmaath/.winner.json
1988/litmaath/1988_litmaath.tar.bz2
1988/litmaath/index.html
1988/phillipps/.winner.json
1988/phillipps/1988_phillipps.tar.bz2
1988/phillipps/index.html
1988/reddy/.winner.json
1988/reddy/1988_reddy.tar.bz2
1988/reddy/index.html
1988/robison/.winner.json
1988/robison/1988_robison.tar.bz2
1988/robison/index.html
1988/spinellis/.winner.json
1988/spinellis/1988_spinellis.tar.bz2
1988/spinellis/index.html
1988/westley/.winner.json
1988/westley/1988_westley.tar.bz2
1988/westley/index.html
1989/fubar/.winner.json
1989/fubar/1989_fubar.tar.bz2
1989/fubar/index.html
1989/jar.1/.winner.json
1989/jar.1/1989_jar.1.tar.bz2
1989/jar.1/index.html
1989/jar.2/.winner.json
1989/jar.2/1989_jar.2.tar.bz2
1989/jar.2/index.html
1989/ovdluhe/.winner.json
1989/ovdluhe/1989_ovdluhe.tar.bz2
1989/ovdluhe/index.html
1989/paul/.winner.json
1989/paul/1989_paul.tar.bz2
1989/paul/index.html
1989/robison/.winner.json
1989/robison/1989_robison.tar.bz2
1989/robison/index.html
1989/roemer/.winner.json
1989/roemer/1989_roemer.tar.bz2
1989/roemer/index.html
1989/tromp/.winner.json
1989/tromp/1989_tromp.tar.bz2
1989/tromp/index.html
1989/vanb/.winner.json
1989/vanb/1989_vanb.tar.bz2
1989/vanb/index.html
1989/westley/.winner.json
1989/westley/1989_westley.tar.bz2
1989/westley/index.html
1990/baruch/.winner.json
1990/baruch/1990_baruch.tar.bz2
1990/baruch/index.html
1990/cmills/.winner.json
1990/cmills/1990_cmills.tar.bz2
1990/cmills/index.html
1990/dds/.winner.json
1990/dds/1990_dds.tar.bz2
1990/dds/index.html
1990/dg/.winner.json
1990/dg/1990_dg.tar.bz2
1990/dg/index.html
1990/jaw/.winner.json
1990/jaw/1990_jaw.tar.bz2
1990/jaw/index.html
1990/pjr/.winner.json
1990/pjr/1990_pjr.tar.bz2
1990/pjr/index.html
1990/scjones/.winner.json
1990/scjones/1990_scjones.tar.bz2
1990/scjones/index.html
1990/stig/.winner.json
1990/stig/1990_stig.tar.bz2
1990/stig/index.html
1990/tbr/.winner.json
1990/tbr/1990_tbr.tar.bz2
1990/tbr/index.html
1990/theorem/.winner.json
1990/theorem/1990_theorem.tar.bz2
1990/theorem/index.html
1990/westley/.winner.json
1990/westley/1990_westley.tar.bz2
1990/westley/index.html
1991/ant/.winner.json
1991/ant/1991_ant.tar.bz2
1991/ant/index.html
1991/brnstnd/.winner.json
1991/brnstnd/1991_brnstnd.tar.bz2
1991/brnstnd/index.html
1991/brnstnd/sorta.README.html
1991/buzzard/.winner.json
1991/buzzard/1991_buzzard.tar.bz2
1991/buzzard/index.html
1991/cdupont/.winner.json
1991/cdupont/1991_cdupont.tar.bz2
1991/cdupont/index.html
1991/davidguy/.winner.json
1991/davidguy/1991_davidguy.tar.bz2
1991/davidguy/index.html
1991/dds/.winner.json
1991/dds/1991_dds.tar.bz2
1991/dds/index.html
1991/fine/.winner.json
1991/fine/1991_fine.tar.bz2
1991/fine/index.html
1991/rince/.winner.json
1991/rince/1991_rince.tar.bz2
1991/rince/index.html
1991/westley/.winner.json
1991/westley/1991_westley.tar.bz2
1991/westley/index.html
1992/adrian/.winner.json
1992/adrian/1992_adrian.tar.bz2
1992/adrian/index.html
1992/albert/.winner.json
1992/albert/1992_albert.tar.bz2
1992/albert/index.html
1992/ant/.winner.json
1992/ant/1992_ant.tar.bz2
1992/ant/index.html
1992/buzzard.1/.winner.json
1992/buzzard.1/1992_buzzard.1.tar.bz2
1992/buzzard.1/index.html
1992/buzzard.2/.winner.json
1992/buzzard.2/1992_buzzard.2.tar.bz2
1992/buzzard.2/buzzard.2.README.html
1992/buzzard.2/index.html
1992/gson/.winner.json
1992/gson/1992_gson.tar.bz2
1992/gson/index.html
1992/imc/.winner.json
1992/imc/1992_imc.tar.bz2
1992/imc/index.html
1992/kivinen/.winner.json
1992/kivinen/1992_kivinen.tar.bz2
1992/kivinen/index.html
1992/lush/.winner.json
1992/lush/1992_lush.tar.bz2
1992/lush/index.html
1992/marangon/.winner.json
1992/marangon/1992_marangon.tar.bz2
1992/marangon/index.html
1992/nathan/.winner.json
1992/nathan/1992_nathan.tar.bz2
1992/nathan/index.html
1992/vern/.winner.json
1992/vern/1992_vern.tar.bz2
1992/vern/index.html
1992/westley/.winner.json
1992/westley/1992_westley.tar.bz2
1992/westley/index.html
1993/ant/.winner.json
1993/ant/1993_ant.tar.bz2
1993/ant/index.html
1993/cmills/.winner.json
1993/cmills/1993_cmills.tar.bz2
1993/cmills/index.html
1993/dgibson/.winner.json
1993/dgibson/1993_dgibson.tar.bz2
1993/dgibson/index.html
1993/ejb/.winner.json
1993/ejb/1993_ejb.tar.bz2
1993/ejb/hanoi.html
1993/ejb/index.html
1993/ejb/patience.html
1993/jonth/.winner.json
1993/jonth/1993_jonth.tar.bz2
1993/jonth/index.html
1993/leo/.winner.json
1993/leo/1993_leo.tar.bz2
1993/leo/index.html
1993/lmfjyh/.winner.json
1993/lmfjyh/1993_lmfjyh.tar.bz2
1993/lmfjyh/index.html
1993/plummer/.winner.json
1993/plummer/1993_plummer.tar.bz2
1993/plummer/index.html
1993/rince/.winner.json
1993/rince/1993_rince.tar.bz2
1993/rince/design.html
1993/rince/index.html
1993/schnitzi/.winner.json
1993/schnitzi/1993_schnitzi.tar.bz2
1993/schnitzi/index.html
1993/vanb/.winner.json
1993/vanb/1993_vanb.tar.bz2
1993/vanb/index.html
1994/dodsond1/.winner.json
1994/dodsond1/1994_dodsond1.tar.bz2
1994/dodsond1/index.html
1994/dodsond2/.winner.json
1994/dodsond2/1994_dodsond2.tar.bz2
1994/dodsond2/index.html
1994/horton/.winner.json
1994/horton/1994_horton.tar.bz2
1994/horton/index.html
1994/imc/.winner.json
1994/imc/1994_imc.tar.bz2
1994/imc/index.html
1994/ldb/.winner.json
1994/ldb/1994_ldb.tar.bz2
1994/ldb/index.html
1994/schnitzi/.winner.json
1994/schnitzi/1994_schnitzi.tar.bz2
1994/schnitzi/index.html
1994/shapiro/.winner.json
1994/shapiro/1994_shapiro.tar.bz2
1994/shapiro/index.html
1994/shapiro/shapiro.html
1994/smr/.winner.json
1994/smr/1994_smr.tar.bz2
1994/smr/index.html
1994/tvr/.winner.json
1994/tvr/1994_tvr.tar.bz2
1994/tvr/index.html
1994/weisberg/.winner.json
1994/weisberg/1994_weisberg.tar.bz2
1994/weisberg/index.html
1994/westley/.winner.json
1994/westley/1994_westley.tar.bz2
1994/westley/index.html
1995/cdua/.winner.json
1995/cdua/1995_cdua.tar.bz2
1995/cdua/index.html
1995/dodsond1/.winner.json
1995/dodsond1/1995_dodsond1.tar.bz2
1995/dodsond1/index.html
1995/dodsond2/.winner.json
1995/dodsond2/1995_dodsond2.tar.bz2
1995/dodsond2/index.html
1995/esde/.winner.json
1995/esde/1995_esde.tar.bz2
1995/esde/index.html
1995/garry/.winner.json
1995/garry/1995_garry.tar.bz2
1995/garry/index.html
1995/heathbar/.winner.json
1995/heathbar/1995_heathbar.tar.bz2
1995/heathbar/index.html
1995/leo/.winner.json
1995/leo/1995_leo.tar.bz2
1995/leo/index.html
1995/makarios/.winner.json
1995/makarios/1995_makarios.tar.bz2
1995/makarios/index.html
1995/savastio/.winner.json
1995/savastio/1995_savastio.tar.bz2
1995/savastio/index.html
1995/schnitzi/.winner.json
1995/schnitzi/1995_schnitzi.tar.bz2
1995/schnitzi/index.html
1995/spinellis/.winner.json
1995/spinellis/1995_spinellis.tar.bz2
1995/spinellis/index.html
1995/vanschnitz/.winner.json
1995/vanschnitz/1995_vanschnitz.tar.bz2
1995/vanschnitz/index.html
1996/august/.winner.json
1996/august/1996_august.tar.bz2
1996/august/index.html
1996/dalbec/.winner.json
1996/dalbec/1996_dalbec.tar.bz2
1996/dalbec/index.html
1996/eldby/.winner.json
1996/eldby/1996_eldby.tar.bz2
1996/eldby/index.html
1996/gandalf/.winner.json
1996/gandalf/1996_gandalf.tar.bz2
1996/gandalf/index.html
1996/huffman/.winner.json
1996/huffman/1996_huffman.tar.bz2
1996/huffman/index.html
1996/jonth/.winner.json
1996/jonth/1996_jonth.tar.bz2
1996/jonth/index.html
1996/rcm/.winner.json
1996/rcm/1996_rcm.tar.bz2
1996/rcm/index.html
1996/schweikh1/.winner.json
1996/schweikh1/1996_schweikh1.tar.bz2
1996/schweikh1/index.html
1996/schweikh2/.winner.json
1996/schweikh2/1996_schweikh2.tar.bz2
1996/schweikh2/index.html
1996/schweikh3/.winner.json
1996/schweikh3/1996_schweikh3.tar.bz2
1996/schweikh3/index.html
1996/westley/.winner.json
1996/westley/1996_westley.tar.bz2
1996/westley/index.html
1998/banks/.winner.json
1998/banks/1998_banks.tar.bz2
1998/banks/index.html
1998/bas1/.winner.json
1998/bas1/1998_bas1.tar.bz2
1998/bas1/index.html
1998/bas2/.winner.json
1998/bas2/1998_bas2.tar.bz2
1998/bas2/index.html
1998/chaos/.winner.json
1998/chaos/1998_chaos.tar.bz2
1998/chaos/index.html
1998/df/.winner.json
1998/df/1998_df.tar.bz2
1998/df/index.html
1998/dlowe/.winner.json
1998/dlowe/1998_dlowe.tar.bz2
1998/dlowe/index.html
1998/dloweneil/.winner.json
1998/dloweneil/1998_dloweneil.tar.bz2
1998/dloweneil/index.html
1998/dorssel/.winner.json
1998/dorssel/1998_dorssel.tar.bz2
1998/dorssel/dorssel.html
1998/dorssel/index.html
1998/fanf/.winner.json
1998/fanf/1998_fanf.tar.bz2
1998/fanf/index.html
1998/schnitzi/.winner.json
1998/schnitzi/1998_schnitzi.tar.bz2
1998/schnitzi/index.html
1998/schweikh1/.winner.json
1998/schweikh1/1998_schweikh1.tar.bz2
1998/schweikh1/index.html
1998/schweikh2/.winner.json
1998/schweikh2/1998_schweikh2.tar.bz2
1998/schweikh2/index.html
1998/schweikh3/.winner.json
1998/schweikh3/1998_schweikh3.tar.bz2
1998/schweikh3/index.html
1998/tomtorfs/.winner.json
1998/tomtorfs/1998_tomtorfs.tar.bz2
1998/tomtorfs/index.html
2000/anderson/.winner.json
2000/anderson/2000_anderson.tar.bz2
2000/anderson/index.html
2000/bellard/.winner.json
2000/bellard/2000_bellard.tar.bz2
2000/bellard/index.html
2000/bmeyer/.winner.json
2000/bmeyer/2000_bmeyer.tar.bz2
2000/bmeyer/index.html
2000/briddlebane/.winner.json
2000/briddlebane/2000_briddlebane.tar.bz2
2000/briddlebane/index.html
2000/dhyang/.winner.json
2000/dhyang/2000_dhyang.tar.bz2
2000/dhyang/index.html
2000/dlowe/.winner.json
2000/dlowe/2000_dlowe.tar.bz2
2000/dlowe/index.html
2000/jarijyrki/.winner.json
2000/jarijyrki/2000_jarijyrki.tar.bz2
2000/jarijyrki/index.html
2000/natori/.winner.json
2000/natori/2000_natori.tar.bz2
2000/natori/index.html
2000/primenum/.winner.json
2000/primenum/2000_primenum.tar.bz2
2000/primenum/index.html
2000/rince/.winner.json
2000/rince/2000_rince.tar.bz2
2000/rince/index.html
2000/robison/.winner.json
2000/robison/2000_robison.tar.bz2
2000/robison/index.html
2000/schneiderwent/.winner.json
2000/schneiderwent/2000_schneiderwent.tar.bz2
2000/schneiderwent/index.html
2000/thadgavin/.winner.json
2000/thadgavin/2000_thadgavin.tar.bz2
2000/thadgavin/index.html
2000/tomx/.winner.json
2000/tomx/2000_tomx.tar.bz2
2000/tomx/index.html
2001/anonymous/.winner.json
2001/anonymous/2001_anonymous.tar.bz2
2001/anonymous/index.html
2001/bellard/.winner.json
2001/bellard/2001_bellard.tar.bz2
2001/bellard/index.html
2001/cheong/.winner.json
2001/cheong/2001_cheong.tar.bz2
2001/cheong/index.html
2001/coupard/.winner.json
2001/coupard/2001_coupard.tar.bz2
2001/coupard/index.html
2001/ctk/.winner.json
2001/ctk/2001_ctk.tar.bz2
2001/ctk/index.html
2001/dgbeards/.winner.json
2001/dgbeards/2001_dgbeards.tar.bz2
2001/dgbeards/index.html
2001/herrmann1/.winner.json
2001/herrmann1/2001_herrmann1.tar.bz2
2001/herrmann1/index.html
2001/herrmann2/.winner.json
2001/herrmann2/2001_herrmann2.tar.bz2
2001/herrmann2/index.html
2001/jason/.winner.json
2001/jason/2001_jason.tar.bz2
2001/jason/index.html
2001/kev/.winner.json
2001/kev/2001_kev.tar.bz2
2001/kev/index.html
2001/ollinger/.winner.json
2001/ollinger/2001_ollinger.tar.bz2
2001/ollinger/index.html
2001/rosten/.winner.json
2001/rosten/2001_rosten.tar.bz2
2001/rosten/index.html
2001/schweikh/.winner.json
2001/schweikh/2001_schweikh.tar.bz2
2001/schweikh/index.html
2001/westley/.winner.json
2001/westley/2001_westley.tar.bz2
2001/westley/index.html
2001/williams/.winner.json
2001/williams/2001_williams.tar.bz2
2001/williams/index.html
2004/anonymous/.winner.json
2004/anonymous/2004_anonymous.tar.bz2
2004/anonymous/index.html
2004/arachnid/.winner.json
2004/arachnid/2004_arachnid.tar.bz2
2004/arachnid/index.html
2004/burley/.winner.json
2004/burley/2004_burley.tar.bz2
2004/burley/index.html
2004/gavare/.winner.json
2004/gavare/2004_gavare.tar.bz2
2004/gavare/index.html
2004/gavin/.winner.json
2004/gavin/2004_gavin.tar.bz2
2004/gavin/gavin.html
2004/gavin/index.html
2004/hibachi/.winner.json
2004/hibachi/2004_hibachi.tar.bz2
2004/hibachi/index.html
2004/hoyle/.winner.json
2004/hoyle/2004_hoyle.tar.bz2
2004/hoyle/index.html
2004/jdalbec/.winner.json
2004/jdalbec/2004_jdalbec.tar.bz2
2004/jdalbec/index.html
2004/kopczynski/.winner.json
2004/kopczynski/2004_kopczynski.tar.bz2
2004/kopczynski/index.html
2004/newbern/.winner.json
2004/newbern/2004_newbern.tar.bz2
2004/newbern/index.html
2004/omoikane/.winner.json
2004/omoikane/2004_omoikane.tar.bz2
2004/omoikane/index.html
2004/schnitzi/.winner.json
2004/schnitzi/2004_schnitzi.tar.bz2
2004/schnitzi/index.html
2004/sds/.winner.json
2004/sds/2004_sds.tar.bz2
2004/sds/index.html
2004/vik1/.winner.json
2004/vik1/2004_vik1.tar.bz2
2004/vik1/index.html
2004/vik2/.winner.json
2004/vik2/2004_vik2.tar.bz2
2004/vik2/index.html
2005/aidan/.winner.json
2005/aidan/2005_aidan.tar.bz2
2005/aidan/index.html
2005/anon/.winner.json
2005/anon/2005_anon.tar.bz2
2005/anon/index.html
2005/boutines/.winner.json
2005/boutines/2005_boutines.tar.bz2
2005/boutines/index.html
2005/chia/.winner.json
2005/chia/2005_chia.tar.bz2
2005/chia/index.html
2005/giljade/.winner.json
2005/giljade/2005_giljade.tar.bz2
2005/giljade/index.html
2005/jetro/.winner.json
2005/jetro/2005_jetro.tar.bz2
2005/jetro/index.html
2005/klausler/.winner.json
2005/klausler/2005_klausler.tar.bz2
2005/klausler/index.html
2005/mikeash/.winner.json
2005/mikeash/2005_mikeash.tar.bz2
2005/mikeash/index.html
2005/mynx/.winner.json
2005/mynx/2005_mynx.tar.bz2
2005/mynx/index.html
2005/persano/.winner.json
2005/persano/2005_persano.tar.bz2
2005/persano/index.html
2005/sykes/.winner.json
2005/sykes/2005_sykes.tar.bz2
2005/sykes/index.html
2005/timwi/.winner.json
2005/timwi/2005_timwi.tar.bz2
2005/timwi/index.html
2005/toledo/.winner.json
2005/toledo/2005_toledo.tar.bz2
2005/toledo/index.html
2005/vik/.winner.json
2005/vik/2005_vik.tar.bz2
2005/vik/index.html
2005/vince/.winner.json
2005/vince/2005_vince.tar.bz2
2005/vince/index.html
2006/birken/.winner.json
2006/birken/2006_birken.tar.bz2
2006/birken/index.html
2006/borsanyi/.winner.json
2006/borsanyi/2006_borsanyi.tar.bz2
2006/borsanyi/index.html
2006/grothe/.winner.json
2006/grothe/2006_grothe.tar.bz2
2006/grothe/index.html
2006/hamre/.winner.json
2006/hamre/2006_hamre.tar.bz2
2006/hamre/index.html
2006/meyer/.winner.json
2006/meyer/2006_meyer.tar.bz2
2006/meyer/index.html
2006/monge/.winner.json
2006/monge/2006_monge.tar.bz2
2006/monge/index.html
2006/night/.winner.json
2006/night/2006_night.tar.bz2
2006/night/index.html
2006/sloane/.winner.json
2006/sloane/2006_sloane.tar.bz2
2006/sloane/index.html
2006/stewart/.winner.json
2006/stewart/2006_stewart.tar.bz2
2006/stewart/index.html
2006/sykes1/.winner.json
2006/sykes1/2006_sykes1.tar.bz2
2006/sykes1/index.html
2006/sykes2/.winner.json
2006/sykes2/2006_sykes2.tar.bz2
2006/sykes2/index.html
2006/toledo1/.winner.json
2006/toledo1/2006_toledo1.tar.bz2
2006/toledo1/index.html
2006/toledo2/.winner.json
2006/toledo2/2006_toledo2.tar.bz2
2006/toledo2/index.html
2006/toledo3/.winner.json
2006/toledo3/2006_toledo3.tar.bz2
2006/toledo3/index.html
2011/akari/.winner.json
2011/akari/2011_akari.tar.bz2
2011/akari/index.html
2011/blakely/.winner.json
2011/blakely/2011_blakely.tar.bz2
2011/blakely/index.html
2011/borsanyi/.winner.json
2011/borsanyi/2011_borsanyi.tar.bz2
2011/borsanyi/index.html
2011/dlowe/.winner.json
2011/dlowe/2011_dlowe.tar.bz2
2011/dlowe/index.html
2011/eastman/.winner.json
2011/eastman/2011_eastman.tar.bz2
2011/eastman/index.html
2011/fredriksson/.winner.json
2011/fredriksson/2011_fredriksson.tar.bz2
2011/fredriksson/index.html
2011/goren/.winner.json
2011/goren/2011_goren.tar.bz2
2011/goren/index.html
2011/hamaji/.winner.json
2011/hamaji/2011_hamaji.tar.bz2
2011/hamaji/index.html
2011/hou/.winner.json
2011/hou/2011_hou.tar.bz2
2011/hou/index.html
2011/konno/.winner.json
2011/konno/2011_konno.tar.bz2
2011/konno/index.html
2011/richards/.winner.json
2011/richards/2011_richards.tar.bz2
2011/richards/index.html
2011/toledo/.winner.json
2011/toledo/2011_toledo.tar.bz2
2011/toledo/index.html
2011/vik/.winner.json
2011/vik/2011_vik.tar.bz2
2011/vik/index.html
2011/zucker/.winner.json
2011/zucker/2011_zucker.tar.bz2
2011/zucker/index.html
2012/blakely/.winner.json
2012/blakely/2012_blakely.tar.bz2
2012/blakely/index.html
2012/deckmyn/.winner.json
2012/deckmyn/2012_deckmyn.tar.bz2
2012/deckmyn/deckmyn.html
2012/deckmyn/index.html
2012/dlowe/.winner.json
2012/dlowe/2012_dlowe.tar.bz2
2012/dlowe/index.html
2012/endoh1/.winner.json
2012/endoh1/2012_endoh1.tar.bz2
2012/endoh1/index.html
2012/endoh2/.winner.json
2012/endoh2/2012_endoh2.tar.bz2
2012/endoh2/index.html
2012/grothe/.winner.json
2012/grothe/2012_grothe.tar.bz2
2012/grothe/index.html
2012/hamano/.winner.json
2012/hamano/2012_hamano.tar.bz2
2012/hamano/index.html
2012/hou/.winner.json
2012/hou/2012_hou.tar.bz2
2012/hou/index.html
2012/kang/.winner.json
2012/kang/2012_kang.tar.bz2
2012/kang/index.html
2012/konno/.winner.json
2012/konno/2012_konno.tar.bz2
2012/konno/index.html
2012/omoikane/.winner.json
2012/omoikane/2012_omoikane.tar.bz2
2012/omoikane/index.html
2012/tromp/.winner.json
2012/tromp/2012_tromp.tar.bz2
2012/tromp/how.html
2012/tromp/index.html
2012/vik/.winner.json
2012/vik/2012_vik.tar.bz2
2012/vik/index.html
2012/zeitak/.winner.json
2012/zeitak/2012_zeitak.tar.bz2
2012/zeitak/index.html
2013/birken/.winner.json
2013/birken/2013_birken.tar.bz2
2013/birken/index.html
2013/cable1/.winner.json
2013/cable1/2013_cable1.tar.bz2
2013/cable1/index.html
2013/cable2/.winner.json
2013/cable2/2013_cable2.tar.bz2
2013/cable2/index.html
2013/cable3/.winner.json
2013/cable3/2013_cable3.tar.bz2
2013/cable3/index.html
2013/dlowe/.winner.json
2013/dlowe/2013_dlowe.tar.bz2
2013/dlowe/index.html
2013/endoh1/.winner.json
2013/endoh1/2013_endoh1.tar.bz2
2013/endoh1/index.html
2013/endoh2/.winner.json
2013/endoh2/2013_endoh2.tar.bz2
2013/endoh2/index.html
2013/endoh3/.winner.json
2013/endoh3/2013_endoh3.tar.bz2
2013/endoh3/index.html
2013/endoh4/.winner.json
2013/endoh4/2013_endoh4.tar.bz2
2013/endoh4/index.html
2013/hou/.winner.json
2013/hou/2013_hou.tar.bz2
2013/hou/doc/example.html
2013/hou/index.html
2013/mills/.winner.json
2013/mills/2013_mills.tar.bz2
2013/mills/index.html
2013/misaka/.winner.json
2013/misaka/2013_misaka.tar.bz2
2013/misaka/index.html
2013/morgan1/.winner.json
2013/morgan1/2013_morgan1.tar.bz2
2013/morgan1/index.html
2013/morgan2/.winner.json
2013/morgan2/2013_morgan2.tar.bz2
2013/morgan2/index.html
2013/robison/.winner.json
2013/robison/2013_robison.tar.bz2
2013/robison/index.html
2014/birken/.winner.json
2014/birken/2014_birken.tar.bz2
2014/birken/index.html
2014/deak/.winner.json
2014/deak/2014_deak.tar.bz2
2014/deak/index.html
2014/endoh1/.winner.json
2014/endoh1/2014_endoh1.tar.bz2
2014/endoh1/index.html
2014/endoh1/read_me.html
2014/endoh1/spoilers.html
2014/endoh2/.winner.json
2014/endoh2/2014_endoh2.tar.bz2
2014/endoh2/index.html
2014/maffiodo1/.winner.json
2014/maffiodo1/2014_maffiodo1.tar.bz2
2014/maffiodo1/index.html
2014/maffiodo2/.winner.json
2014/maffiodo2/2014_maffiodo2.tar.bz2
2014/maffiodo2/index.html
2014/morgan/.winner.json
2014/morgan/2014_morgan.tar.bz2
2014/morgan/index.html
2014/sinon/.winner.json
2014/sinon/2014_sinon.tar.bz2
2014/sinon/index.html
2014/skeggs/.winner.json
2014/skeggs/2014_skeggs.tar.bz2
2014/skeggs/index.html
2014/vik/.winner.json
2014/vik/2014_vik.tar.bz2
2014/vik/index.html
2014/wiedijk/.winner.json
2014/wiedijk/2014_wiedijk.tar.bz2
2014/wiedijk/index.html
2015/burton/.winner.json
2015/burton/2015_burton.tar.bz2
2015/burton/index.html
2015/burton/spoilers.html
2015/dogon/.winner.json
2015/dogon/2015_dogon.tar.bz2
2015/dogon/index.html
2015/duble/.winner.json
2015/duble/2015_duble.tar.bz2
2015/duble/index.html
2015/endoh1/.winner.json
2015/endoh1/2015_endoh1.tar.bz2
2015/endoh1/index.html
2015/endoh2/.winner.json
2015/endoh2/2015_endoh2.tar.bz2
2015/endoh2/index.html
2015/endoh3/.winner.json
2015/endoh3/2015_endoh3.tar.bz2
2015/endoh3/index.html
2015/endoh4/.winner.json
2015/endoh4/2015_endoh4.tar.bz2
2015/endoh4/index.html
2015/hou/.winner.json
2015/hou/2015_hou.tar.bz2
2015/hou/index.html
2015/howe/.winner.json
2015/howe/2015_howe.tar.bz2
2015/howe/index.html
2015/mills1/.winner.json
2015/mills1/2015_mills1.tar.bz2
2015/mills1/index.html
2015/mills2/.winner.json
2015/mills2/2015_mills2.tar.bz2
2015/mills2/index.html
2015/muth/.winner.json
2015/muth/2015_muth.tar.bz2
2015/muth/index.html
2015/schweikhardt/.winner.json
2015/schweikhardt/2015_schweikhardt.tar.bz2
2015/schweikhardt/index.html
2015/yang/.winner.json
2015/yang/2015_yang.tar.bz2
2015/yang/index.html
2018/algmyr/.winner.json
2018/algmyr/2018_algmyr.tar.bz2
2018/algmyr/index.html
2018/anderson/.winner.json
2018/anderson/2018_anderson.tar.bz2
2018/anderson/index.html
2018/bellard/.winner.json
2018/bellard/2018_bellard.tar.bz2
2018/bellard/index.html
2018/burton1/.winner.json
2018/burton1/2018_burton1.tar.bz2
2018/burton1/index.html
2018/burton2/.winner.json
2018/burton2/2018_burton2.tar.bz2
2018/burton2/discrepancies.html
2018/burton2/index.html
2018/ciura/.winner.json
2018/ciura/2018_ciura.tar.bz2
2018/ciura/index.html
2018/endoh1/.winner.json
2018/endoh1/2018_endoh1.tar.bz2
2018/endoh1/index.html
2018/endoh2/.winner.json
2018/endoh2/2018_endoh2.tar.bz2
2018/endoh2/index.html
2018/ferguson/.winner.json
2018/ferguson/2018_ferguson.tar.bz2
2018/ferguson/index.html
2018/ferguson/rpm.html
2018/giles/.winner.json
2018/giles/2018_giles.tar.bz2
2018/giles/index.html
2018/hou/.winner.json
2018/hou/2018_hou.tar.bz2
2018/hou/index.html
2018/mills/.winner.json
2018/mills/2018_mills.tar.bz2
2018/mills/index.html
2018/poikola/.winner.json
2018/poikola/2018_poikola.tar.bz2
2018/poikola/index.html
2018/vokes/.winner.json
2018/vokes/2018_vokes.tar.bz2
2018/vokes/index.html
2018/yang/.winner.json
2018/yang/2018_yang.tar.bz2
2018/yang/index.html
2019/adamovsky/.winner.json
2019/adamovsky/2019_adamovsky.tar.bz2
2019/adamovsky/index.html
2019/burton/.winner.json
2019/burton/2019_burton.tar.bz2
2019/burton/index.html
2019/ciura/.winner.json
2019/ciura/2019_ciura.tar.bz2
2019/ciura/index.html
2019/diels-grabsch1/.winner.json
2019/diels-grabsch1/2019_diels-grabsch1.tar.bz2
2019/diels-grabsch1/index.html
2019/diels-grabsch2/.winner.json
2019/diels-grabsch2/2019_diels-grabsch2.tar.bz2
2019/diels-grabsch2/index.html
2019/dogon/.winner.json
2019/dogon/2019_dogon.tar.bz2
2019/dogon/index.html
2019/duble/.winner.json
2019/duble/2019_duble.tar.bz2
2019/duble/index.html
2019/endoh/.winner.json
2019/endoh/2019_endoh.tar.bz2
2019/endoh/index.html
2019/giles/.winner.json
2019/giles/2019_giles.tar.bz2
2019/giles/index.html
2019/karns/.winner.json
2019/karns/2019_karns.tar.bz2
2019/karns/index.html
2019/lynn/.winner.json
2019/lynn/2019_lynn.tar.bz2
2019/lynn/index.html
2019/mills/.winner.json
2019/mills/2019_mills.tar.bz2
2019/mills/index.html
2019/poikola/.winner.json
2019/poikola/2019_poikola.tar.bz2
2019/poikola/index.html
2019/yang/.winner.json
2019/yang/2019_yang.tar.bz2
2019/yang/index.html
2020/burton/.winner.json
2020/burton/2020_burton.tar.bz2
2020/burton/index.html
2020/carlini/.winner.json
2020/carlini/2020_carlini.tar.bz2
2020/carlini/index.html
2020/endoh1/.winner.json
2020/endoh1/2020_endoh1.tar.bz2
2020/endoh1/index.html
2020/endoh2/.winner.json
2020/endoh2/2020_endoh2.tar.bz2
2020/endoh2/index.html
2020/endoh3/.winner.json
2020/endoh3/2020_endoh3.tar.bz2
2020/endoh3/index.html
2020/ferguson1/.winner.json
2020/ferguson1/2020_ferguson1.tar.bz2
2020/ferguson1/COMPILING.html
2020/ferguson1/HACKING.html
2020/ferguson1/bugs.html
2020/ferguson1/cannibalism.log.html
2020/ferguson1/chocolate-cake.html
2020/ferguson1/crazy.log.html
2020/ferguson1/gameplay.html
2020/ferguson1/index.html
2020/ferguson1/spoilers.html
2020/ferguson1/terminals.html
2020/ferguson1/troubleshooting.html
2020/ferguson2/.winner.json
2020/ferguson2/2020_ferguson2.tar.bz2
2020/ferguson2/index.html
2020/giles/.winner.json
2020/giles/2020_giles.tar.bz2
2020/giles/index.html
2020/kurdyukov1/.winner.json
2020/kurdyukov1/2020_kurdyukov1.tar.bz2
2020/kurdyukov1/index.html
2020/kurdyukov2/.winner.json
2020/kurdyukov2/2020_kurdyukov2.tar.bz2
2020/kurdyukov2/index.html
2020/kurdyukov3/.winner.json
2020/kurdyukov3/2020_kurdyukov3.tar.bz2
2020/kurdyukov3/index.html
2020/kurdyukov4/.winner.json
2020/kurdyukov4/2020_kurdyukov4.tar.bz2
2020/kurdyukov4/index.html
2020/otterness/.winner.json
2020/otterness/2020_otterness.tar.bz2
2020/otterness/index.html
2020/tsoj/.winner.json
2020/tsoj/2020_tsoj.tar.bz2
2020/tsoj/index.html
2020/yang/.winner.json
2020/yang/2020_yang.tar.bz2
2020/yang/index.html
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
-229
View File
@@ -1,229 +0,0 @@
#!/usr/bin/env bash
#
# fix_numbers_csv - fix the exported CSV files from numbers
#
# When Apple numbers exports a CSV file from manifest.numbers,
# and exports a CSV file from missing-manifest.numbers,
# the CSV file lines are separated by carriage returns (\015)
# and is not terminated by a newline. This script will "correct"
# these issues.
#
# XXX - This is a temporary utility that will be removed when
# the .winner.json files are built
# setup
#
export MANIFEST_CSV="manifest.csv"
export MISSING_MANIFEST_CSV="missing_manifest.csv"
export FULL_MANIFEST_CSV="full_manifest.csv"
export TMP_CSV
# process files that exist
#
for i in "$MANIFEST_CSV" "$MISSING_MANIFEST_CSV"; do
# process if non-empty file exists
#
if [[ -s $i ]]; then
# setup temp file
#
TMP_CSV="tmp.$$.$i"
rm -f "$TMP_CSV"
if [[ -e $TMP_CSV ]]; then
echo "$0: ERROR: TMP_CSV cannot be removed: $TMP_CSV" 1>&2
exit 10
fi
# remove carriage returns
#
trap 'rm -f $TMP_CSV; exit' 0 1 2 3 15
tr -d '\015' < "$i" > "$TMP_CSV"
status="$?"
if [[ $status -ne 0 ]]; then
printf "$0: ERROR: TMP_CSV: tr -d '\\\015' < %s > %s failed, error: %s\n" "$i" "$TMP_CSV" "$status" 1>&2
exit 11
fi
if [[ ! -s $TMP_CSV ]]; then
printf "$0: ERROR: TMP_CSV: tr -d '\\\015' < %s > %s produced a empty file" "$i" "$TMP_CSV" 1>&2
exit 12
fi
# sort file
#
sort -t, -k1,1 -k2d,2 -k3g,3 -k4d,10 "$TMP_CSV" -o "$TMP_CSV"
status="$?"
if [[ $status -ne 0 ]]; then
printf "$0: ERROR: sort -t, -k1,1 -k2d,2 -k3g,3 -k4d,10 %s -o %s failed, error: %s\n" "$TMP_CSV" "$TMP_CSV" "$status" 1>&2
exit 13
fi
# append newline if last line is not empty
#
LAST_CHAR=$(tail -c 1 "$TMP_CSV")
if [[ -n $LAST_CHAR ]]; then
echo "" >> "$TMP_CSV"
fi
# replace CSV file if different
#
if ! cmp -s "$TMP_CSV" "$i"; then
# replace CSV file with a better formatted version
#
echo "$0: updating $i"
mv -f -v "$TMP_CSV" "$i"
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: mv -f -v $TMP_CSV $i failed, error: $status" 1>&2
exit 14
fi
else
# CSV file is OK, remove the tmp file
#
rm -f "$TMP_CSV"
if [[ -e $TMP_CSV ]]; then
echo "$0: ERROR: TMP_CSV cannot be removed for cleanup: $TMP_CSV" 1>&2
exit 15
fi
fi
fi
done
# setup the full manifest
#
TMP_CSV="tmp.$$.$FULL_MANIFEST_CSV"
sed -e '/^# -/d' "$MANIFEST_CSV" "$MISSING_MANIFEST_CSV" |
sort -u |
sort -t, -k1,1 -k2d,2 -k3g,3 -k4d,10 > "$TMP_CSV"
if [[ ! -s $TMP_CSV ]]; then
echo "$0: ERROR: sorted $MANIFEST_CSV $MISSING_MANIFEST_CSV is empty" 1>&2
exit 16
fi
if ! cmp -s "$TMP_CSV" "$FULL_MANIFEST_CSV"; then
# replace full CSV file if different
#
echo "$0: updating $FULL_MANIFEST_CSV"
mv -f -v "$TMP_CSV" "$FULL_MANIFEST_CSV"
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: mv -f -v $TMP_CSV $FULL_MANIFEST_CSV failed, error: $status" 1>&2
exit 17
fi
else
# fill CSV file is OK, remove the tmp file
#
rm -f "$TMP_CSV"
if [[ -e $TMP_CSV ]]; then
echo "$0: ERROR: TMP_CSV cannot be removed for cleanup: $TMP_CSV" 1>&2
exit 18
fi
fi
# build required file list
#
export REQUIRED_FILE_LIST="file_list.required.txt"
export TMP_FILE="tmp.$$.$REQUIRED_FILE_LIST"
trap 'rm -f $TMP_FILE; exit' 0 1 2 3 15
awk -F, '$1 !~ "^#" && $5 == "null" { print $1 "/" $2 "/" $4; }' "$FULL_MANIFEST_CSV" | sort -t/ > "$TMP_FILE"
if [[ ! -s $TMP_FILE ]]; then
echo "$0: ERROR: TMP_FILE, for required file list, is empty: $TMP_CSV" 1>&2
exit 19
fi
if ! cmp -s "$TMP_FILE" "$REQUIRED_FILE_LIST"; then
# replace required file
#
echo "$0: updating $REQUIRED_FILE_LIST"
mv -f -v "$TMP_FILE" "$REQUIRED_FILE_LIST"
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: mv -f -v $TMP_FILE $REQUIRED_FILE_LIST failed, error: $status" 1>&2
exit 20
fi
else
# required file list is OK, remove the tmp file
#
rm -f "$TMP_FILE"
if [[ -e $TMP_CSV ]]; then
echo "$0: ERROR: TMP_FILE cannot be removed for cleanup: $TMP_FILE" 1>&2
exit 21
fi
fi
# build the built file list
#
export BUILT_FILE_LIST="file_list.built.txt"
export TMP_FILE="tmp.$$.$BUILT_FILE_LIST"
trap 'rm -f $TMP_FILE; exit' 0 1 2 3 15
awk -F, '$1 !~ "^#" && $5 != "null" { print $1 "/" $2 "/" $4; }' "$FULL_MANIFEST_CSV" | sort -t/ > "$TMP_FILE"
if [[ ! -s $TMP_FILE ]]; then
echo "$0: ERROR: TMP_FILE, for built file list, is empty: $TMP_CSV" 1>&2
exit 22
fi
if ! cmp -s "$TMP_FILE" "$BUILT_FILE_LIST"; then
# replace built file
#
echo "$0: updating $BUILT_FILE_LIST"
mv -f -v "$TMP_FILE" "$BUILT_FILE_LIST"
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: mv -f -v $TMP_FILE $BUILT_FILE_LIST failed, error: $status" 1>&2
exit 23
fi
else
# built file list is OK, remove the tmp file
#
rm -f "$TMP_FILE"
if [[ -e $TMP_CSV ]]; then
echo "$0: ERROR: TMP_FILE cannot be removed for cleanup: $TMP_FILE" 1>&2
exit 24
fi
fi
# build full_manifest file list
#
export FULL_MANIFEST_LIST="file_list.full_manifest.txt"
export TMP_FILE="tmp.$$.$BUILT_FILE_LIST"
trap 'rm -f $TMP_FILE; exit' 0 1 2 3 15
cat "$REQUIRED_FILE_LIST" "$BUILT_FILE_LIST" | sort -t/ > "$TMP_FILE"
if [[ ! -s $TMP_FILE ]]; then
echo "$0: ERROR: TMP_FILE, for full_manifest file list, is empty: $TMP_CSV" 1>&2
exit 25
fi
if ! cmp -s "$TMP_FILE" "$FULL_MANIFEST_LIST"; then
# replace full_manifest file
#
echo "$0: updating $FULL_MANIFEST_LIST"
mv -f -v "$TMP_FILE" "$FULL_MANIFEST_LIST"
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: mv -f -v $TMP_FILE $FULL_MANIFEST_LIST failed, error: $status" 1>&2
exit 26
fi
else
# full_manifest file list is OK, remove the tmp file
#
rm -f "$TMP_FILE"
if [[ -e $TMP_CSV ]]; then
echo "$0: ERROR: TMP_FILE cannot be removed for cleanup: $TMP_FILE" 1>&2
exit 27
fi
fi
# All Done!!! All Done!!! -- Jessica Noll, Age 2
#
exit 0
File diff suppressed because it is too large. Load diff
Binary file not shown.
-565
View File
@@ -1,565 +0,0 @@
#!/usr/bin/env bash
#
# gen_author_json - generate author/author_handle.json files
#
# Generate the initial contents of the author/author_handle.json using
# tmp/author_handle.txt and tmp/author.csv and tmp/author-wins.csv.
#
# XXX - This is a temporary utility that will be replaced when
# the .entry.json files are built.
#
# Copyright (c) 2023,2024 by Landon Curt Noll. All Rights Reserved.
#
# Permission to use, copy, modify, and distribute this software and
# its documentation for any purpose and without fee is hereby granted,
# provided that the above copyright, this permission notice and text
# this comment, and the disclaimer below appear in all of the following:
#
# supporting documentation
# source copies
# source works derived from this source
# binaries derived from this source or from derived source
#
# LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
# EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# chongo (Landon Curt Noll, http://www.isthe.com/chongo/index.html) /\oo/\
#
# Share and enjoy! :-)
# setup
#
export VERSION="1.1 2024-03-04"
NAME=$(basename "$0"); export NAME
export JSTRENCODE="../../mkiocccentry/jparse/jstrencode"
export LOCATION="../../mkiocccentry/soup/location"
#
export V_FLAG=0
# usage
#
export USAGE="usage: $0 [-h] [-v level] [-V] author_handle.txt author.csv author-wins.csv author_dir
-h print help message and exit
-v level set verbosity level (def level: $V_FLAG)
-V print version string and exit
-t jstrencode=path path of jstrencode utility (def: ../../mkiocccentry/jparse/jstrencode)
-t location=path path of location utility (def: ../../mkiocccentry/soup/location)
author_handle.txt author handle names, one per line
author.csv CSV of information about each author
author-wins.csv CSV showing wins for each author
author_dir directory to create with author_handle.json files
Exit codes:
0 all OK
2 -h and help string printed or -V and version string printed
3 command line error
4 missing file (author_handle.txt, author.csv, author-wins.csv_
5 author_dir already exists or cannot be created
6 cannot find critical executable tool
>= 10 internal error
$NAME version: $VERSION"
# parse command line
#
while getopts :hv:Vt: flag; do
case "$flag" in
h) echo "$USAGE"
exit 2
;;
v) V_FLAG="$OPTARG"
;;
V) echo "$VERSION"
exit 2
;;
t) case "$OPTARG" in
jstrencode=*)
JSTRENCODE=${OPTIND##jstrencode=}
;;
location=*)
LOCATION=${OPTIND##location=}
;;
*=*)
echo "$0: ERROR: -t tool=path is unknown" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
;;
*) echo "$0: ERROR: -t optarg must be of the form -t tool=path" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
esac
;;
\?) echo "$0: ERROR: invalid option: -$OPTARG" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
:) echo "$0: ERROR: option -$OPTARG requires an argument" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
*) echo "$0: ERROR: unexpected value from getopts: $flag" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
esac
done
#
# remove the options
#
shift $(( OPTIND - 1 ));
#
# verify arg count
#
if [[ $# -ne 4 ]]; then
echo "$0: ERROR: expected 4 args, found: $#" 1>&2
echo "$USAGE" 1>&2
exit 3
fi
#
# parse args
#
export AUTHOR_HANDLE_TXT="$1"
if [[ ! -r $AUTHOR_HANDLE_TXT ]]; then
echo "$0: ERROR: author_handle.txt not a readable file: $AUTHOR_HANDLE_TXT"
exit 4
fi
export AUTHOR_CSV="$2"
if [[ ! -r $AUTHOR_CSV ]]; then
echo "$0: ERROR: author.csv not a readable file: $AUTHOR_CSV"
exit 4
fi
export AUTHOR_WINS="$3"
if [[ ! -r $AUTHOR_WINS ]]; then
echo "$0: ERROR: author-wins.csv not a readable file: $AUTHOR_WINS"
exit 4
fi
export AUTHOR_DIR="$4"
if [[ -e $AUTHOR_DIR ]]; then
echo "$0: ERROR: author_dir exists: $AUTHOR_DIR"
exit 4
fi
if [[ $V_FLAG -ge 1 ]]; then
echo "$0: debug[1]: debug level: $V_FLAG" 1>&2
fi
# form the initial author_dir
#
mkdir -p "$AUTHOR_DIR"
if [[ ! -d $AUTHOR_DIR ]]; then
echo "$0: ERROR: cannot mkdir author_dir $AUTHOR_DIR"
exit 5
fi
# verify tool paths
#
if [[ ! -e $JSTRENCODE ]]; then
echo "$0: ERROR: jstrencode does not exist: $JSTRENCODE" 1>&2
exit 6
fi
if [[ ! -f $JSTRENCODE ]]; then
echo "$0: ERROR: jstrencode is not a regular file: $JSTRENCODE" 1>&2
exit 6
fi
if [[ ! -x $JSTRENCODE ]]; then
echo "$0: ERROR: jstrencode not executable: $JSTRENCODE" 1>&2
exit 6
fi
if [[ ! -e $LOCATION ]]; then
echo "$0: ERROR: location does not exist: $LOCATION" 1>&2
exit 6
fi
if [[ ! -f $LOCATION ]]; then
echo "$0: ERROR: location is not a regular file: $LOCATION" 1>&2
exit 6
fi
if [[ ! -x $LOCATION ]]; then
echo "$0: ERROR: location not executable: $LOCATION" 1>&2
exit 6
fi
# make is easier to process CSV files
#
IFS="$IFS,"
# process each author handle
#
grep -v '^#' "$AUTHOR_HANDLE_TXT" | while read -r AUTHOR_HANDLE; do
# firewall - must be unique author handle
#
AUTHOR_HANDLE_JSON="$AUTHOR_DIR/$AUTHOR_HANDLE.json"
export AUTHOR_HANDLE_JSON
if [[ -e $AUTHOR_HANDLE_JSON ]]; then
echo "$0: ERROR: AUTHOR_HANDLE.json file already exists: $AUTHOR_HANDLE_JSON" 1>&2
exit 10
fi
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: processing author handle: $AUTHOR_HANDLE" 1>&2
fi
touch "$AUTHOR_HANDLE_JSON"
if [[ ! -e $AUTHOR_HANDLE_JSON ]]; then
echo "$0: ERROR: cannot create AUTHOR_HANDLE.json file: $AUTHOR_HANDLE_JSON" 1>&2
exit 11
fi
# firewall - must have 1 and only 1 line in author.csv
#
FOUND_AUTHOR_CSV_COUNT=$(grep -v '^#' "$AUTHOR_CSV" 2>/dev/null | grep -c "^[^,]*,[^,]*,$AUTHOR_HANDLE," 2>/dev/null)
if [[ $FOUND_AUTHOR_CSV_COUNT -ne 1 ]]; then
echo "$0: ERROR: expected to find one entry for $AUTHOR_HANDLE in $AUTHOR_CSV, found: $FOUND_AUTHOR_CSV_COUNT" 1>&2
exit 12
fi
if [[ $V_FLAG -ge 7 ]]; then
echo "$0: debug[7]: grep -v '^#' \"$AUTHOR_CSV\" 2>/dev/null | grep -c \"^[^,]*,[^,]*,$AUTHOR_HANDLE,\" 2>/dev/null" 1>&2
fi
# firewall - must have 1 and only 1 line in author-wins.csv
#
FOUND_AUTHOR_WINS_COUNT=$(grep -v '^#' "$AUTHOR_WINS" 2>/dev/null | grep -c "^$AUTHOR_HANDLE," 2>/dev/null)
if [[ $FOUND_AUTHOR_WINS_COUNT -ne 1 ]]; then
echo "$0: ERROR: expected to find one entry for $AUTHOR_HANDLE in $AUTHOR_WINS, found: $FOUND_AUTHOR_WINS_COUNT" 1>&2
exit 13
fi
if [[ $V_FLAG -ge 7 ]]; then
echo "$0: debug[7]: grep -v '^#' \"$AUTHOR_WINS\" 2>/dev/null | grep -c \"^$AUTHOR_HANDLE,\" 2>/dev/null" 1>&2
fi
# obtain their author.csv data for this author handle
#
# The format of author.csv is:
#
# # sort_word,name,author_handle,url,email,location_code,deprecated_twitter,mastodon,alternate_url,
#
# 0: lower case sort word
# 1: name
# 2: author_handle
# 3: url
# 4: email address
# 5: location ISO 3166 code
# 6: deprecated twitter handle
# 7: mastodon handle
# 8: alternate url
#
grep -v '^#' "$AUTHOR_CSV" 2>/dev/null | grep "^[^,]*,[^,]*,$AUTHOR_HANDLE," 2>/dev/null |
while IFS="," read -r SORT_WORD NAME AUTHOR_HANDLE_FROM_AUTHOR_CSV URL EMAIL LOCATION_CODE DEPRECATED_TWITTER \
MASTODON ALTERNATE_URL EXTRA; do
# parse CSV values
#
export SORT_WORD NAME AUTHOR_HANDLE_FROM_AUTHOR_CSV URL EMAIL LOCATION_CODE DEPRECATED_TWITTER
export MASTODON ALTERNATE_URL EXTRA
if [[ $V_FLAG -ge 9 ]]; then
echo "$0: debug[9]: SORT_WORD: $SORT_WORD"
echo "$0: debug[7]: NAME: $NAME"
echo "$0: debug[7]: author_handle: $AUTHOR_HANDLE_FROM_AUTHOR_CSV"
echo "$0: debug[7]: URL: $URL"
echo "$0: debug[7]: EMAIL: $EMAIL"
echo "$0: debug[7]: LOCATION_CODE: $LOCATION_CODE"
echo "$0: debug[7]: DEPRECATED_TWITTER: $DEPRECATED_TWITTER"
echo "$0: debug[7]: MASTODON: $MASTODON"
echo "$0: debug[7]: ALTERNATE_URL: $ALTERNATE_URL"
echo "$0: debug[7]: EXTRA: $EXTRA"
fi
if [[ -z $SORT_WORD ]]; then
echo "$0: ERROR: cannot find SORT_WORD for author handle $AUTHOR_HANDLE In $AUTHOR_CSV" 1>&2
exit 14
fi
if [[ -z $NAME ]]; then
echo "$0: ERROR: cannot find NAME for author handle $AUTHOR_HANDLE in $AUTHOR_CSV" 1>&2
exit 15
fi
if [[ -z $AUTHOR_HANDLE_FROM_AUTHOR_CSV ]]; then
echo "$0: ERROR: cannot find author handle $AUTHOR_HANDLE in $AUTHOR_CSV" 1>&2
exit 16
fi
if [[ -z $URL ]]; then
echo "$0: ERROR: cannot find URL for author handle $AUTHOR_HANDLE in $AUTHOR_CSV" 1>&2
exit 17
fi
if [[ -z $EMAIL ]]; then
echo "$0: ERROR: cannot find EMAIL for author handle $AUTHOR_HANDLE in $AUTHOR_CSV" 1>&2
exit 18
fi
if [[ -z $LOCATION_CODE ]]; then
echo "$0: ERROR: cannot find LOCATION_CODE for author handle $AUTHOR_HANDLE in $AUTHOR_CSV" 1>&2
exit 19
fi
if [[ -z $DEPRECATED_TWITTER ]]; then
echo "$0: ERROR: cannot find DEPRECATED_TWITTER for author handle $AUTHOR_HANDLE in $AUTHOR_CSV" 1>&2
exit 20
fi
if [[ -z $MASTODON ]]; then
echo "$0: ERROR: cannot find MASTODON for author handle $AUTHOR_HANDLE in $AUTHOR_CSV" 1>&2
exit 21
fi
if [[ -z $ALTERNATE_URL ]]; then
echo "$0: ERROR: cannot find ALTERNATE_URL for author handle $AUTHOR_HANDLE in $AUTHOR_CSV" 1>&2
exit 22
fi
if [[ -n $EXTRA ]]; then
echo "$0: ERROR: found unexpected data for author handle $AUTHOR_HANDLE in $AUTHOR_CSV" 1>&2
exit 23
fi
# convert "null" to empty values for fields that can use them, object to null for fields that do not want them
#
if [[ $SORT_WORD = "null" ]]; then
echo "$0: ERROR: found null SORT_WORD for author handle $AUTHOR_HANDLE in $AUTHOR_CSV" 1>&2
exit 24
fi
if [[ $NAME = "null" ]]; then
echo "$0: ERROR: found null NAME for author handle $AUTHOR_HANDLE in $AUTHOR_CSV" 1>&2
exit 25
fi
if [[ $AUTHOR_HANDLE_FROM_AUTHOR_CSV = "null" ]]; then
echo "$0: ERROR: found null author handle $AUTHOR_HANDLE in $AUTHOR_CSV" 1>&2
exit 26
fi
if [[ $LOCATION_CODE = "null" ]]; then
LOCATION_CODE=""
fi
if [[ $DEPRECATED_TWITTER = "null" ]]; then
DEPRECATED_TWITTER=""
fi
# verify that the AUTHOR_HANDLE_FROM_AUTHOR_CSV from the AUTHOR_CSV file matches the author handle
#
if [[ $AUTHOR_HANDLE != "$AUTHOR_HANDLE_FROM_AUTHOR_CSV" ]]; then
echo "$0: ERROR: author handle: $AUTHOR_HANDLE_FROM_AUTHOR_CSV mismatch for author handle $AUTHOR_HANDLE in $AUTHOR_CSV" 1>&2
exit 27
fi
# if location code is non-empty, verify it is valid by obtaining the location name
#
export LOCATION_NAME=""
if [[ -n $LOCATION_CODE ]]; then
LOCATION_NAME=$("$LOCATION" -- "$LOCATION_CODE" 2>/dev/null)
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: LOCATION_CODE: $LOCATION_CODE invalid for for author handle $AUTHOR_HANDLE in $AUTHOR_CSV" 1>&2
exit 28
fi
fi
# form the mastodon url from the mastodon handle
#
export MASTODON_URL=""
if [[ -n $MASTODON ]]; then
# verify mastodon handle is of the form @user@server
#
case "$MASTODON" in
null)
MASTODON_URL="null";
;;
@*@*)
AT_MASTODON_USER=${MASTODON%@*}
if [[ -z $AT_MASTODON_USER ]]; then
echo "$0: ERROR: failed to parse @user in MASTODON: $MASTODON is"
"for author handle $AUTHOR_HANDLE in $AUTHOR_CSV" 1>&2
exit 29
fi
MASTODON_SERVER=${MASTODON##*@}
if [[ -z $MASTODON_SERVER ]]; then
echo "$0: ERROR: failed to extract server from MASTODON: $MASTODON is"
"for author handle $AUTHOR_HANDLE in $AUTHOR_CSV" 1>&2
exit 30
fi
MASTODON_URL="https://$MASTODON_SERVER/$AT_MASTODON_USER"
;;
*) echo "$0: ERROR: MASTODON: $MASTODON is not of the form @user@server"
"for author handle $AUTHOR_HANDLE in $AUTHOR_CSV" 1>&2
exit 31
esac
fi
# for AUTHOR_HANDLE_JSON, we need to translate strings
#
SORT_WORD=$("$JSTRENCODE" -n -- "$SORT_WORD" 2>/dev/null)
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: failed to JSON encode SORT_WORD for author handle $AUTHOR_HANDLE in $AUTHOR_CSV" 1>&2
exit 32
fi
NAME=$("$JSTRENCODE" -n -- "$NAME" 2>/dev/null)
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: failed to JSON encode NAME for author handle $AUTHOR_HANDLE in $AUTHOR_CSV" 1>&2
exit 33
fi
AUTHOR_HANDLE_FROM_AUTHOR_CSV=$("$JSTRENCODE" -n -- "$AUTHOR_HANDLE_FROM_AUTHOR_CSV" 2>/dev/null)
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: failed to JSON encode for author handle $AUTHOR_HANDLE in $AUTHOR_CSV" 1>&2
exit 34
fi
URL=$("$JSTRENCODE" -n -- "$URL" 2>/dev/null)
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: failed to JSON encode URL for author handle $AUTHOR_HANDLE in $AUTHOR_CSV" 1>&2
exit 35
fi
EMAIL=$("$JSTRENCODE" -n -- "$EMAIL" 2>/dev/null)
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: failed to JSON encode EMAIL for author handle $AUTHOR_HANDLE in $AUTHOR_CSV" 1>&2
exit 36
fi
LOCATION_CODE=$("$JSTRENCODE" -n -- "$LOCATION_CODE" 2>/dev/null)
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: failed to JSON encode LOCATION_CODE for author handle $AUTHOR_HANDLE in $AUTHOR_CSV" 1>&2
exit 37
fi
LOCATION_NAME=$("$JSTRENCODE" -n -- "$LOCATION_NAME" 2>/dev/null)
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: failed to JSON encode LOCATION_NAME for author handle $AUTHOR_HANDLE in $AUTHOR_CSV" 1>&2
exit 38
fi
DEPRECATED_TWITTER=$("$JSTRENCODE" -n -- "$DEPRECATED_TWITTER" 2>/dev/null)
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: failed to JSON encode DEPRECATED_TWITTER for author handle $AUTHOR_HANDLE in $AUTHOR_CSV" 1>&2
exit 39
fi
MASTODON=$("$JSTRENCODE" -n -- "$MASTODON" 2>/dev/null)
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: failed to JSON encode MASTODON for author handle $AUTHOR_HANDLE in $AUTHOR_CSV" 1>&2
exit 40
fi
MASTODON_URL=$("$JSTRENCODE" -n -- "$MASTODON_URL" 2>/dev/null)
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: failed to JSON encode MASTODON_URL for author handle $AUTHOR_HANDLE in $AUTHOR_CSV" 1>&2
exit 41
fi
ALTERNATE_URL=$("$JSTRENCODE" -n -- "$ALTERNATE_URL" 2>/dev/null)
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: failed to JSON encode ALTERNATE_URL for author handle $AUTHOR_HANDLE in $AUTHOR_CSV" 1>&2
exit 42
fi
# determine the winning entry set for the author handle
#
WINS=$(grep -v '^#' "$AUTHOR_WINS" 2>/dev/null |
grep "^$AUTHOR_HANDLE," 2>/dev/null |
sed -e "s/^$AUTHOR_HANDLE,//" -e "s/,$//")
# verify that the author handle from the AUTHOR_WINS has at least 1 win
#
if [[ -z $WINS ]]; then
echo "$0: ERROR: author handle $AUTHOR_HANDLE as no win CSV fields in $AUTHOR_WINS" 1>&2
exit 43
fi
if [[ $V_FLAG -ge 5 ]]; then
echo "$0: debug[5]: author handle $AUTHOR_HANDLE wins: $WINS" 1>&2
fi
# now that we have all of the data validated write to the AUTHOR_HANDLE_JSON file
#
(
# print the start of the AUTHOR_HANDLE_JSON file
#
echo '{'
echo ' "no_comment" : "mandatory comment: because comments were removed from the original JSON spec",'
echo ' "author_JSON_format_version" : "1.1 2024-02-11",'
# print author handle related JSON members from AUTHOR_CSV
#
echo ' "author_handle" : "'"$AUTHOR_HANDLE"'",'
echo ' "full_name" : "'"$NAME"'",'
echo ' "sort_word" : "'"$SORT_WORD"'",'
if [[ $LOCATION_CODE == null || -z $LOCATION_CODE ]]; then
echo ' "location_code" : null,'
else
echo ' "location_code" : "'"$LOCATION_CODE"'",'
fi
if [[ $EMAIL == null || -z $EMAIL ]]; then
echo ' "email" : null,'
else
echo ' "email" : "'"$EMAIL"'",'
fi
if [[ $URL == null || -z $URL ]]; then
echo ' "url" : null,'
else
echo ' "url" : "'"$URL"'",'
fi
if [[ $ALTERNATE_URL == null || -z $ALTERNATE_URL ]]; then
echo ' "alt_url" : null,'
else
echo ' "alt_url" : "'"$ALTERNATE_URL"'",'
fi
if [[ $DEPRECATED_TWITTER == null || -z $DEPRECATED_TWITTER ]]; then
echo ' "deprecated_twitter_handle" : null,'
else
echo ' "deprecated_twitter_handle" : "'"$DEPRECATED_TWITTER"'",'
fi
if [[ $MASTODON == null || -z $MASTODON ]]; then
echo ' "mastodon" : null,'
else
echo ' "mastodon" : "'"$MASTODON"'",'
fi
if [[ $MASTODON_URL == null || -z $MASTODON_URL ]]; then
echo ' "mastodon_url" : null,'
else
echo ' "mastodon_url" : "'"$MASTODON_URL"'",'
fi
echo ' "github" : null,'
echo ' "affiliation" : null,'
# print the wins
#
echo ' "winning_entry_set" : ['
WIN_COUNT=$(echo "$WINS" | sed -e 's/,/\n/g' | wc -l)
export WIN_COUNT
export WIN_NUMBER=0
echo "$WINS" | sed -e 's/,/\n/g' | while read -r ENTRY_ID; do
((++WIN_NUMBER))
if [[ $WIN_NUMBER -lt $WIN_COUNT ]]; then
echo ' { "entry_id" : "'"$ENTRY_ID"'" },'
else
echo ' { "entry_id" : "'"$ENTRY_ID"'" }'
fi
done
echo ' ]'
# print the end of the AUTHOR_HANDLE_JSON file
#
echo '}'
) > "$AUTHOR_HANDLE_JSON"
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: failed to write $AUTHOR_HANDLE_JSON: error code: $status" 1>&2
exit 44
fi
# make the AUTHOR_HANDLE_JSON file read only
#
chmod 0444 "$AUTHOR_HANDLE_JSON"
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: chmod 0444 $AUTHOR_HANDLE_JSON: error code: $status" 1>&2
exit 45
fi
done
done
# All Done!!! All Done!!! -- Jessica Noll, Age 2
#
exit 0
-163
View File
@@ -1,163 +0,0 @@
#!/usr/bin/env bash
#
# gen_file_list.found.sh - generate tmp/file_list.found.txt for entry directories under a year
#
# XXX - This is a temporary utility that will be replaced when
# the .winner.json files are built
#
# Copyright (c) 2023 by Landon Curt Noll. All Rights Reserved.
#
# Permission to use, copy, modify, and distribute this software and
# its documentation for any purpose and without fee is hereby granted,
# provided that the above copyright, this permission notice and text
# this comment, and the disclaimer below appear in all of the following:
#
# supporting documentation
# source copies
# source works derived from this source
# binaries derived from this source or from derived source
#
# LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
# EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# chongo (Landon Curt Noll, http://www.isthe.com/chongo/index.html) /\oo/\
#
# Share and enjoy! :-)
# setup
#
export VERSION="1.0 2023-10-26"
NAME=$(basename "$0"); export NAME
TOPDIR=".."
#
export V_FLAG=0
# usage
#
export USAGE="usage: $0 [-h] [-v level] [-V] [-t topdir]
-h print help message and exit
-v level set verbosity level (def level: $V_FLAG)
-V print version string and exit
-t topdir top directory under which year dirs are found (def: ..)
Exit codes:
0 all OK
2 -h and help string printed or -V and version string printed
3 command line error
>= 10 internal error
$NAME version: $VERSION"
# parse command line
#
while getopts :hv:Vt: flag; do
case "$flag" in
h) echo "$USAGE"
exit 2
;;
v) V_FLAG="$OPTARG"
;;
V) echo "$VERSION"
exit 2
;;
t) TOPDIR="$OPTARG"
;;
\?) echo "$0: ERROR: invalid option: -$OPTARG" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
:) echo "$0: ERROR: option -$OPTARG requires an argument" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
*) echo "$0: ERROR: unexpected value from getopts: $flag" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
esac
done
#
# remove the options
#
shift $(( OPTIND - 1 ));
#
# verify arg count
#
if [[ $# -ne 0 ]]; then
echo "$0: ERROR: expected 0 args, found: $#" 1>&2
echo "$USAGE" 1>&2
exit 3
fi
#
# verify TOPDIR
#
if [[ -z $TOPDIR ]]; then
echo "$0: ERROR: TOPDIR is empty" 1>&2
exit 3
fi
if [[ ! -d $TOPDIR ]]; then
echo "$0: ERROR: TOPDIR: $TOPDIR is not directory" 1>&2
exit 3
fi
if [[ ! -d $TOPDIR/1984 ]]; then
echo "$0: ERROR: TOPDIR: $TOPDIR is missing the 1984 sub-directory" 1>&2
exit 3
fi
if [[ ! -d $TOPDIR/tmp ]]; then
echo "$0: ERROR: TOPDIR: $TOPDIR is missing the tmp sub-directory" 1>&2
exit 3
fi
if [[ ! -f $TOPDIR/Makefile ]]; then
echo "$0: ERROR: TOPDIR: $TOPDIR is missing the top level Makefile" 1>&2
exit 3
fi
# move to TOPDIR
#
cd "$TOPDIR" || echo "$0: ERROR: cd $TOPDIR failed, error code: $status" 1>&2 || exit 10
export FILE_LIST="tmp/file_list.found.txt"
# make clobber
#
make clobber >/dev/null 2>&1
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: make clobber failed, error code: $status" 1>&2
exit 11
fi
# find files under 4 character dirs
#
TMPFILE="tmp/tmp.file_list.found.txt.$$"
trap 'rm -f $TMPFILE; exit' 0 1 2 3 15
find -- ???? -mindepth 2 ! -name .DS_Store -type f -print | sort -t/ > "$TMPFILE"
if [[ ! -s $TMPFILE ]]; then
echo "$0: ERROR: TMPFILE: $TMPFILE is empty" 1>&2
exit 12
fi
if ! cmp -s "$TMPFILE" "$FILE_LIST"; then
# replace the file list
#
echo "$0: updating $FILE_LIST"
mv -f -v "$TMPFILE" "$FILE_LIST"
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: mv -f -v $TMPFILE $FILE_LIST failed, error: $status" 1>&2
exit 13
fi
fi
# All Done!!! All Done!!! -- Jessica Noll, Age 2
#
exit 0
File diff suppressed because it is too large. Load diff
Binary file not shown.
File diff suppressed because it is too large. Load diff
Binary file not shown.
-994
View File
@@ -1,994 +0,0 @@
# -1,All other cells (excluding year+winners_rank+winners_show) are JSON strings that must not contain commas NOR quotes NOR newlines.,,,,,,,,,
# -2,The year cells must be JSON numbers. The winners_rank cells must be a JSON number or JSON null. The winners_show cells must be JSON booleans.,,,,,,,,,
# -3,Empty cells are filled in with red and need to be filled in and are TBD.,,,,,,,,,
# -4,Any cell containing null is a JSON null value. Any cell containing true or false is a JSON boolean value.,,,,,,,,,
# year,dir,winners_rank,path,created_by,prog,filetype,ext,winners_show,display_via,winners_text
1984,anonymous,null,.winner.json,jwinner,null,json,json,false,null,null
1984,anonymous,10,index.html,readme2index,null,html,html,true,browser,click here first
1984,anonymous,300,1984_anonymous.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1984,decot,null,.winner.json,jwinner,null,json,json,false,null,null
1984,decot,10,index.html,readme2index,null,html,html,true,browser,click here first
1984,decot,300,1984_decot.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1984,laman,null,.winner.json,jwinner,null,json,json,false,null,null
1984,laman,10,index.html,readme2index,null,html,html,true,browser,click here first
1984,laman,300,1984_laman.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1984,mullender,null,.winner.json,jwinner,null,json,json,false,null,null
1984,mullender,10,index.html,readme2index,null,html,html,true,browser,click here first
1984,mullender,300,1984_mullender.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1985,applin,null,.winner.json,jwinner,null,json,json,false,null,null
1985,applin,10,index.html,readme2index,null,html,html,true,browser,click here first
1985,applin,300,1985_applin.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1985,august,null,.winner.json,jwinner,null,json,json,false,null,null
1985,august,10,index.html,readme2index,null,html,html,true,browser,click here first
1985,august,300,1985_august.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1985,lycklama,null,.winner.json,jwinner,null,json,json,false,null,null
1985,lycklama,10,index.html,readme2index,null,html,html,true,browser,click here first
1985,lycklama,300,1985_lycklama.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1985,shapiro,null,.winner.json,jwinner,null,json,json,false,null,null
1985,shapiro,10,index.html,readme2index,null,html,html,true,browser,click here first
1985,shapiro,300,1985_shapiro.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1985,sicherman,null,.winner.json,jwinner,null,json,json,false,null,null
1985,sicherman,10,index.html,readme2index,null,html,html,true,browser,click here first
1985,sicherman,300,1985_sicherman.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1986,applin,null,.winner.json,jwinner,null,json,json,false,null,null
1986,applin,10,index.html,readme2index,null,html,html,true,browser,click here first
1986,applin,300,1986_applin.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1986,august,null,.winner.json,jwinner,null,json,json,false,null,null
1986,august,10,index.html,readme2index,null,html,html,true,browser,click here first
1986,august,300,1986_august.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1986,bright,null,.winner.json,jwinner,null,json,json,false,null,null
1986,bright,10,index.html,readme2index,null,html,html,true,browser,click here first
1986,bright,300,1986_bright.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1986,hague,null,.winner.json,jwinner,null,json,json,false,null,null
1986,hague,10,index.html,readme2index,null,html,html,true,browser,click here first
1986,hague,300,1986_hague.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1986,holloway,null,.winner.json,jwinner,null,json,json,false,null,null
1986,holloway,10,index.html,readme2index,null,html,html,true,browser,click here first
1986,holloway,300,1986_holloway.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1986,marshall,null,.winner.json,jwinner,null,json,json,false,null,null
1986,marshall,10,index.html,readme2index,null,html,html,true,browser,click here first
1986,marshall,300,1986_marshall.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1986,pawka,null,.winner.json,jwinner,null,json,json,false,null,null
1986,pawka,10,index.html,readme2index,null,html,html,true,browser,click here first
1986,pawka,300,1986_pawka.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1986,stein,null,.winner.json,jwinner,null,json,json,false,null,null
1986,stein,10,index.html,readme2index,null,html,html,true,browser,click here first
1986,stein,300,1986_stein.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1986,wall,null,.winner.json,jwinner,null,json,json,false,null,null
1986,wall,10,index.html,readme2index,null,html,html,true,browser,click here first
1986,wall,300,1986_wall.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1987,biggar,null,.winner.json,jwinner,null,json,json,false,null,null
1987,biggar,10,index.html,readme2index,null,html,html,true,browser,click here first
1987,biggar,300,1987_biggar.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1987,heckbert,null,.winner.json,jwinner,null,json,json,false,null,null
1987,heckbert,10,index.html,readme2index,null,html,html,true,browser,click here first
1987,heckbert,300,1987_heckbert.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1987,hines,null,.winner.json,jwinner,null,json,json,false,null,null
1987,hines,10,index.html,readme2index,null,html,html,true,browser,click here first
1987,hines,300,1987_hines.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1987,korn,null,.winner.json,jwinner,null,json,json,false,null,null
1987,korn,10,index.html,readme2index,null,html,html,true,browser,click here first
1987,korn,300,1987_korn.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1987,lievaart,null,.winner.json,jwinner,null,json,json,false,null,null
1987,lievaart,10,index.html,readme2index,null,html,html,true,browser,click here first
1987,lievaart,300,1987_lievaart.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1987,wall,null,.winner.json,jwinner,null,json,json,false,null,null
1987,wall,10,index.html,readme2index,null,html,html,true,browser,click here first
1987,wall,300,1987_wall.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1987,westley,null,.winner.json,jwinner,null,json,json,false,null,null
1987,westley,10,index.html,readme2index,null,html,html,true,browser,click here first
1987,westley,300,1987_westley.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1988,applin,null,.winner.json,jwinner,null,json,json,false,null,null
1988,applin,10,index.html,readme2index,null,html,html,true,browser,click here first
1988,applin,300,1988_applin.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1988,dale,null,.winner.json,jwinner,null,json,json,false,null,null
1988,dale,10,index.html,readme2index,null,html,html,true,browser,click here first
1988,dale,300,1988_dale.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1988,isaak,null,.winner.json,jwinner,null,json,json,false,null,null
1988,isaak,10,index.html,readme2index,null,html,html,true,browser,click here first
1988,isaak,300,1988_isaak.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1988,litmaath,null,.winner.json,jwinner,null,json,json,false,null,null
1988,litmaath,10,index.html,readme2index,null,html,html,true,browser,click here first
1988,litmaath,300,1988_litmaath.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1988,phillipps,null,.winner.json,jwinner,null,json,json,false,null,null
1988,phillipps,10,index.html,readme2index,null,html,html,true,browser,click here first
1988,phillipps,300,1988_phillipps.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1988,reddy,null,.winner.json,jwinner,null,json,json,false,null,null
1988,reddy,10,index.html,readme2index,null,html,html,true,browser,click here first
1988,reddy,300,1988_reddy.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1988,robison,null,.winner.json,jwinner,null,json,json,false,null,null
1988,robison,10,index.html,readme2index,null,html,html,true,browser,click here first
1988,robison,300,1988_robison.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1988,spinellis,null,.winner.json,jwinner,null,json,json,false,null,null
1988,spinellis,10,index.html,readme2index,null,html,html,true,browser,click here first
1988,spinellis,300,1988_spinellis.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1988,westley,null,.winner.json,jwinner,null,json,json,false,null,null
1988,westley,10,index.html,readme2index,null,html,html,true,browser,click here first
1988,westley,300,1988_westley.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1989,fubar,null,.winner.json,jwinner,null,json,json,false,null,null
1989,fubar,10,index.html,readme2index,null,html,html,true,browser,click here first
1989,fubar,300,1989_fubar.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1989,jar.1,null,.winner.json,jwinner,null,json,json,false,null,null
1989,jar.1,10,index.html,readme2index,null,html,html,true,browser,click here first
1989,jar.1,300,1989_jar.1.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1989,jar.2,null,.winner.json,jwinner,null,json,json,false,null,null
1989,jar.2,10,index.html,readme2index,null,html,html,true,browser,click here first
1989,jar.2,300,1989_jar.2.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1989,ovdluhe,null,.winner.json,jwinner,null,json,json,false,null,null
1989,ovdluhe,10,index.html,readme2index,null,html,html,true,browser,click here first
1989,ovdluhe,300,1989_ovdluhe.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1989,paul,null,.winner.json,jwinner,null,json,json,false,null,null
1989,paul,10,index.html,readme2index,null,html,html,true,browser,click here first
1989,paul,300,1989_paul.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1989,robison,null,.winner.json,jwinner,null,json,json,false,null,null
1989,robison,10,index.html,readme2index,null,html,html,true,browser,click here first
1989,robison,300,1989_robison.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1989,roemer,null,.winner.json,jwinner,null,json,json,false,null,null
1989,roemer,10,index.html,readme2index,null,html,html,true,browser,click here first
1989,roemer,300,1989_roemer.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1989,tromp,null,.winner.json,jwinner,null,json,json,false,null,null
1989,tromp,10,index.html,readme2index,null,html,html,true,browser,click here first
1989,tromp,300,1989_tromp.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1989,vanb,null,.winner.json,jwinner,null,json,json,false,null,null
1989,vanb,10,index.html,readme2index,null,html,html,true,browser,click here first
1989,vanb,300,1989_vanb.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1989,westley,null,.winner.json,jwinner,null,json,json,false,null,null
1989,westley,10,index.html,readme2index,null,html,html,true,browser,click here first
1989,westley,300,1989_westley.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1990,baruch,null,.winner.json,jwinner,null,json,json,false,null,null
1990,baruch,10,index.html,readme2index,null,html,html,true,browser,click here first
1990,baruch,300,1990_baruch.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1990,cmills,null,.winner.json,jwinner,null,json,json,false,null,null
1990,cmills,10,index.html,readme2index,null,html,html,true,browser,click here first
1990,cmills,300,1990_cmills.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1990,dds,null,.winner.json,jwinner,null,json,json,false,null,null
1990,dds,10,index.html,readme2index,null,html,html,true,browser,click here first
1990,dds,300,1990_dds.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1990,dg,null,.winner.json,jwinner,null,json,json,false,null,null
1990,dg,10,index.html,readme2index,null,html,html,true,browser,click here first
1990,dg,300,1990_dg.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1990,jaw,null,.winner.json,jwinner,null,json,json,false,null,null
1990,jaw,10,index.html,readme2index,null,html,html,true,browser,click here first
1990,jaw,300,1990_jaw.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1990,pjr,null,.winner.json,jwinner,null,json,json,false,null,null
1990,pjr,10,index.html,readme2index,null,html,html,true,browser,click here first
1990,pjr,300,1990_pjr.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1990,scjones,null,.winner.json,jwinner,null,json,json,false,null,null
1990,scjones,10,index.html,readme2index,null,html,html,true,browser,click here first
1990,scjones,300,1990_scjones.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1990,stig,null,.winner.json,jwinner,null,json,json,false,null,null
1990,stig,10,index.html,readme2index,null,html,html,true,browser,click here first
1990,stig,300,1990_stig.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1990,tbr,null,.winner.json,jwinner,null,json,json,false,null,null
1990,tbr,10,index.html,readme2index,null,html,html,true,browser,click here first
1990,tbr,300,1990_tbr.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1990,theorem,null,.winner.json,jwinner,null,json,json,false,null,null
1990,theorem,10,index.html,readme2index,null,html,html,true,browser,click here first
1990,theorem,300,1990_theorem.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1990,westley,null,.winner.json,jwinner,null,json,json,false,null,null
1990,westley,10,index.html,readme2index,null,html,html,true,browser,click here first
1990,westley,300,1990_westley.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1991,ant,null,.winner.json,jwinner,null,json,json,false,null,null
1991,ant,10,index.html,readme2index,null,html,html,true,browser,click here first
1991,ant,300,1991_ant.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1991,brnstnd,null,.winner.json,jwinner,null,json,json,false,null,null
1991,brnstnd,10,index.html,readme2index,null,html,html,true,browser,click here first
1991,brnstnd,100,sorta.README.html,md2html,null,html,html,true,browser,SORTA language infomation
1991,brnstnd,300,1991_brnstnd.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1991,buzzard,null,.winner.json,jwinner,null,json,json,false,null,null
1991,buzzard,10,index.html,readme2index,null,html,html,true,browser,click here first
1991,buzzard,300,1991_buzzard.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1991,cdupont,null,.winner.json,jwinner,null,json,json,false,null,null
1991,cdupont,10,index.html,readme2index,null,html,html,true,browser,click here first
1991,cdupont,300,1991_cdupont.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1991,davidguy,null,.winner.json,jwinner,null,json,json,false,null,null
1991,davidguy,10,index.html,readme2index,null,html,html,true,browser,click here first
1991,davidguy,300,1991_davidguy.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1991,dds,null,.winner.json,jwinner,null,json,json,false,null,null
1991,dds,10,index.html,readme2index,null,html,html,true,browser,click here first
1991,dds,300,1991_dds.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1991,fine,null,.winner.json,jwinner,null,json,json,false,null,null
1991,fine,10,index.html,readme2index,null,html,html,true,browser,click here first
1991,fine,300,1991_fine.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1991,rince,null,.winner.json,jwinner,null,json,json,false,null,null
1991,rince,10,index.html,readme2index,null,html,html,true,browser,click here first
1991,rince,300,1991_rince.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1991,westley,null,.winner.json,jwinner,null,json,json,false,null,null
1991,westley,10,index.html,readme2index,null,html,html,true,browser,click here first
1991,westley,300,1991_westley.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1992,adrian,null,.winner.json,jwinner,null,json,json,false,null,null
1992,adrian,10,index.html,readme2index,null,html,html,true,browser,click here first
1992,adrian,300,1992_adrian.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1992,albert,null,.winner.json,jwinner,null,json,json,false,null,null
1992,albert,10,index.html,readme2index,null,html,html,true,browser,click here first
1992,albert,300,1992_albert.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1992,ant,null,.winner.json,jwinner,null,json,json,false,null,null
1992,ant,10,index.html,readme2index,null,html,html,true,browser,click here first
1992,ant,300,1992_ant.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1992,buzzard.1,null,.winner.json,jwinner,null,json,json,false,null,null
1992,buzzard.1,10,index.html,readme2index,null,html,html,true,browser,click here first
1992,buzzard.1,300,1992_buzzard.1.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1992,buzzard.2,null,.winner.json,jwinner,null,json,json,false,null,null
1992,buzzard.2,10,index.html,readme2index,null,html,html,true,browser,click here first
1992,buzzard.2,100,buzzard.2.README.html,md2html,null,html,html,true,browser,author description of files
1992,buzzard.2,300,1992_buzzard.2.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1992,gson,null,.winner.json,jwinner,null,json,json,false,null,null
1992,gson,10,index.html,readme2index,null,html,html,true,browser,click here first
1992,gson,300,1992_gson.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1992,imc,null,.winner.json,jwinner,null,json,json,false,null,null
1992,imc,10,index.html,readme2index,null,html,html,true,browser,click here first
1992,imc,300,1992_imc.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1992,kivinen,null,.winner.json,jwinner,null,json,json,false,null,null
1992,kivinen,10,index.html,readme2index,null,html,html,true,browser,click here first
1992,kivinen,300,1992_kivinen.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1992,lush,null,.winner.json,jwinner,null,json,json,false,null,null
1992,lush,10,index.html,readme2index,null,html,html,true,browser,click here first
1992,lush,300,1992_lush.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1992,marangon,null,.winner.json,jwinner,null,json,json,false,null,null
1992,marangon,10,index.html,readme2index,null,html,html,true,browser,click here first
1992,marangon,300,1992_marangon.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1992,nathan,null,.winner.json,jwinner,null,json,json,false,null,null
1992,nathan,10,index.html,readme2index,null,html,html,true,browser,click here first
1992,nathan,300,1992_nathan.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1992,vern,null,.winner.json,jwinner,null,json,json,false,null,null
1992,vern,10,index.html,readme2index,null,html,html,true,browser,click here first
1992,vern,300,1992_vern.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1992,westley,null,.winner.json,jwinner,null,json,json,false,null,null
1992,westley,10,index.html,readme2index,null,html,html,true,browser,click here first
1992,westley,300,1992_westley.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1993,ant,null,.winner.json,jwinner,null,json,json,false,null,null
1993,ant,10,index.html,readme2index,null,html,html,true,browser,click here first
1993,ant,300,1993_ant.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1993,cmills,null,.winner.json,jwinner,null,json,json,false,null,null
1993,cmills,10,index.html,readme2index,null,html,html,true,browser,click here first
1993,cmills,300,1993_cmills.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1993,dgibson,null,.winner.json,jwinner,null,json,json,false,null,null
1993,dgibson,10,index.html,readme2index,null,html,html,true,browser,click here first
1993,dgibson,300,1993_dgibson.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1993,ejb,null,.winner.json,jwinner,null,json,json,false,null,null
1993,ejb,10,index.html,readme2index,null,html,html,true,browser,click here first
1993,ejb,100,hanoi.html,md2html,null,html,html,true,browser,about the Towers of Hanoi puzzle
1993,ejb,100,patience.html,md2html,null,html,html,true,browser,about the Patience puzzle
1993,ejb,300,1993_ejb.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1993,jonth,null,.winner.json,jwinner,null,json,json,false,null,null
1993,jonth,10,index.html,readme2index,null,html,html,true,browser,click here first
1993,jonth,300,1993_jonth.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1993,leo,null,.winner.json,jwinner,null,json,json,false,null,null
1993,leo,10,index.html,readme2index,null,html,html,true,browser,click here first
1993,leo,300,1993_leo.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1993,lmfjyh,null,.winner.json,jwinner,null,json,json,false,null,null
1993,lmfjyh,10,index.html,readme2index,null,html,html,true,browser,click here first
1993,lmfjyh,300,1993_lmfjyh.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1993,plummer,null,.winner.json,jwinner,null,json,json,false,null,null
1993,plummer,10,index.html,readme2index,null,html,html,true,browser,click here first
1993,plummer,300,1993_plummer.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1993,rince,null,.winner.json,jwinner,null,json,json,false,null,null
1993,rince,10,index.html,readme2index,null,html,html,true,browser,click here first
1993,rince,100,design.html,md2html,null,html,html,true,browser,implementation notes
1993,rince,300,1993_rince.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1993,schnitzi,null,.winner.json,jwinner,null,json,json,false,null,null
1993,schnitzi,10,index.html,readme2index,null,html,html,true,browser,click here first
1993,schnitzi,300,1993_schnitzi.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1993,vanb,null,.winner.json,jwinner,null,json,json,false,null,null
1993,vanb,10,index.html,readme2index,null,html,html,true,browser,click here first
1993,vanb,300,1993_vanb.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1994,dodsond1,null,.winner.json,jwinner,null,json,json,false,null,null
1994,dodsond1,10,index.html,readme2index,null,html,html,true,browser,click here first
1994,dodsond1,300,1994_dodsond1.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1994,dodsond2,null,.winner.json,jwinner,null,json,json,false,null,null
1994,dodsond2,10,index.html,readme2index,null,html,html,true,browser,click here first
1994,dodsond2,300,1994_dodsond2.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1994,horton,null,.winner.json,jwinner,null,json,json,false,null,null
1994,horton,10,index.html,readme2index,null,html,html,true,browser,click here first
1994,horton,300,1994_horton.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1994,imc,null,.winner.json,jwinner,null,json,json,false,null,null
1994,imc,10,index.html,readme2index,null,html,html,true,browser,click here first
1994,imc,300,1994_imc.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1994,ldb,null,.winner.json,jwinner,null,json,json,false,null,null
1994,ldb,10,index.html,readme2index,null,html,html,true,browser,click here first
1994,ldb,300,1994_ldb.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1994,schnitzi,null,.winner.json,jwinner,null,json,json,false,null,null
1994,schnitzi,10,index.html,readme2index,null,html,html,true,browser,click here first
1994,schnitzi,300,1994_schnitzi.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1994,shapiro,null,.winner.json,jwinner,null,json,json,false,null,null
1994,shapiro,10,index.html,readme2index,null,html,html,true,browser,click here first
1994,shapiro,100,shapiro.html,md2html,null,html,html,true,browser,author hints
1994,shapiro,300,1994_shapiro.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1994,smr,null,.winner.json,jwinner,null,json,json,false,null,null
1994,smr,10,index.html,readme2index,null,html,html,true,browser,click here first
1994,smr,300,1994_smr.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1994,tvr,null,.winner.json,jwinner,null,json,json,false,null,null
1994,tvr,10,index.html,readme2index,null,html,html,true,browser,click here first
1994,tvr,300,1994_tvr.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1994,weisberg,null,.winner.json,jwinner,null,json,json,false,null,null
1994,weisberg,10,index.html,readme2index,null,html,html,true,browser,click here first
1994,weisberg,300,1994_weisberg.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1994,westley,null,.winner.json,jwinner,null,json,json,false,null,null
1994,westley,10,index.html,readme2index,null,html,html,true,browser,click here first
1994,westley,300,1994_westley.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1995,cdua,null,.winner.json,jwinner,null,json,json,false,null,null
1995,cdua,10,index.html,readme2index,null,html,html,true,browser,click here first
1995,cdua,300,1995_cdua.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1995,dodsond1,null,.winner.json,jwinner,null,json,json,false,null,null
1995,dodsond1,10,index.html,readme2index,null,html,html,true,browser,click here first
1995,dodsond1,300,1995_dodsond1.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1995,dodsond2,null,.winner.json,jwinner,null,json,json,false,null,null
1995,dodsond2,10,index.html,readme2index,null,html,html,true,browser,click here first
1995,dodsond2,300,1995_dodsond2.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1995,esde,null,.winner.json,jwinner,null,json,json,false,null,null
1995,esde,10,index.html,readme2index,null,html,html,true,browser,click here first
1995,esde,300,1995_esde.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1995,garry,null,.winner.json,jwinner,null,json,json,false,null,null
1995,garry,10,index.html,readme2index,null,html,html,true,browser,click here first
1995,garry,300,1995_garry.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1995,heathbar,null,.winner.json,jwinner,null,json,json,false,null,null
1995,heathbar,10,index.html,readme2index,null,html,html,true,browser,click here first
1995,heathbar,300,1995_heathbar.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1995,leo,null,.winner.json,jwinner,null,json,json,false,null,null
1995,leo,10,index.html,readme2index,null,html,html,true,browser,click here first
1995,leo,300,1995_leo.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1995,makarios,null,.winner.json,jwinner,null,json,json,false,null,null
1995,makarios,10,index.html,readme2index,null,html,html,true,browser,click here first
1995,makarios,300,1995_makarios.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1995,savastio,null,.winner.json,jwinner,null,json,json,false,null,null
1995,savastio,10,index.html,readme2index,null,html,html,true,browser,click here first
1995,savastio,300,1995_savastio.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1995,schnitzi,null,.winner.json,jwinner,null,json,json,false,null,null
1995,schnitzi,10,index.html,readme2index,null,html,html,true,browser,click here first
1995,schnitzi,300,1995_schnitzi.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1995,spinellis,null,.winner.json,jwinner,null,json,json,false,null,null
1995,spinellis,10,index.html,readme2index,null,html,html,true,browser,click here first
1995,spinellis,300,1995_spinellis.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1995,vanschnitz,null,.winner.json,jwinner,null,json,json,false,null,null
1995,vanschnitz,10,index.html,readme2index,null,html,html,true,browser,click here first
1995,vanschnitz,300,1995_vanschnitz.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1996,august,null,.winner.json,jwinner,null,json,json,false,null,null
1996,august,10,index.html,readme2index,null,html,html,true,browser,click here first
1996,august,300,1996_august.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1996,dalbec,null,.winner.json,jwinner,null,json,json,false,null,null
1996,dalbec,10,index.html,readme2index,null,html,html,true,browser,click here first
1996,dalbec,300,1996_dalbec.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1996,eldby,null,.winner.json,jwinner,null,json,json,false,null,null
1996,eldby,10,index.html,readme2index,null,html,html,true,browser,click here first
1996,eldby,300,1996_eldby.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1996,gandalf,null,.winner.json,jwinner,null,json,json,false,null,null
1996,gandalf,10,index.html,readme2index,null,html,html,true,browser,click here first
1996,gandalf,300,1996_gandalf.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1996,huffman,null,.winner.json,jwinner,null,json,json,false,null,null
1996,huffman,10,index.html,readme2index,null,html,html,true,browser,click here first
1996,huffman,300,1996_huffman.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1996,jonth,null,.winner.json,jwinner,null,json,json,false,null,null
1996,jonth,10,index.html,readme2index,null,html,html,true,browser,click here first
1996,jonth,300,1996_jonth.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1996,rcm,null,.winner.json,jwinner,null,json,json,false,null,null
1996,rcm,10,index.html,readme2index,null,html,html,true,browser,click here first
1996,rcm,300,1996_rcm.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1996,schweikh1,null,.winner.json,jwinner,null,json,json,false,null,null
1996,schweikh1,10,index.html,readme2index,null,html,html,true,browser,click here first
1996,schweikh1,300,1996_schweikh1.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1996,schweikh2,null,.winner.json,jwinner,null,json,json,false,null,null
1996,schweikh2,10,index.html,readme2index,null,html,html,true,browser,click here first
1996,schweikh2,300,1996_schweikh2.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1996,schweikh3,null,.winner.json,jwinner,null,json,json,false,null,null
1996,schweikh3,10,index.html,readme2index,null,html,html,true,browser,click here first
1996,schweikh3,300,1996_schweikh3.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1996,westley,null,.winner.json,jwinner,null,json,json,false,null,null
1996,westley,10,index.html,readme2index,null,html,html,true,browser,click here first
1996,westley,300,1996_westley.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1998,banks,null,.winner.json,jwinner,null,json,json,false,null,null
1998,banks,10,index.html,readme2index,null,html,html,true,browser,click here first
1998,banks,300,1998_banks.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1998,bas1,null,.winner.json,jwinner,null,json,json,false,null,null
1998,bas1,10,index.html,readme2index,null,html,html,true,browser,click here first
1998,bas1,300,1998_bas1.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1998,bas2,null,.winner.json,jwinner,null,json,json,false,null,null
1998,bas2,10,index.html,readme2index,null,html,html,true,browser,click here first
1998,bas2,300,1998_bas2.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1998,chaos,null,.winner.json,jwinner,null,json,json,false,null,null
1998,chaos,10,index.html,readme2index,null,html,html,true,browser,click here first
1998,chaos,300,1998_chaos.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1998,df,null,.winner.json,jwinner,null,json,json,false,null,null
1998,df,10,index.html,readme2index,null,html,html,true,browser,click here first
1998,df,300,1998_df.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1998,dlowe,null,.winner.json,jwinner,null,json,json,false,null,null
1998,dlowe,10,index.html,readme2index,null,html,html,true,browser,click here first
1998,dlowe,300,1998_dlowe.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1998,dloweneil,null,.winner.json,jwinner,null,json,json,false,null,null
1998,dloweneil,10,index.html,readme2index,null,html,html,true,browser,click here first
1998,dloweneil,300,1998_dloweneil.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1998,dorssel,null,.winner.json,jwinner,null,json,json,false,null,null
1998,dorssel,10,index.html,readme2index,null,html,html,true,browser,click here first
1998,dorssel,100,dorssel.html,md2html,null,html,html,true,browser,author description of entry
1998,dorssel,300,1998_dorssel.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1998,fanf,null,.winner.json,jwinner,null,json,json,false,null,null
1998,fanf,10,index.html,readme2index,null,html,html,true,browser,click here first
1998,fanf,300,1998_fanf.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1998,schnitzi,null,.winner.json,jwinner,null,json,json,false,null,null
1998,schnitzi,10,index.html,readme2index,null,html,html,true,browser,click here first
1998,schnitzi,300,1998_schnitzi.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1998,schweikh1,null,.winner.json,jwinner,null,json,json,false,null,null
1998,schweikh1,10,index.html,readme2index,null,html,html,true,browser,click here first
1998,schweikh1,300,1998_schweikh1.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1998,schweikh2,null,.winner.json,jwinner,null,json,json,false,null,null
1998,schweikh2,10,index.html,readme2index,null,html,html,true,browser,click here first
1998,schweikh2,300,1998_schweikh2.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1998,schweikh3,null,.winner.json,jwinner,null,json,json,false,null,null
1998,schweikh3,10,index.html,readme2index,null,html,html,true,browser,click here first
1998,schweikh3,300,1998_schweikh3.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1998,tomtorfs,null,.winner.json,jwinner,null,json,json,false,null,null
1998,tomtorfs,10,index.html,readme2index,null,html,html,true,browser,click here first
1998,tomtorfs,300,1998_tomtorfs.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2000,anderson,null,.winner.json,jwinner,null,json,json,false,null,null
2000,anderson,10,index.html,readme2index,null,html,html,true,browser,click here first
2000,anderson,300,2000_anderson.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2000,bellard,null,.winner.json,jwinner,null,json,json,false,null,null
2000,bellard,10,index.html,readme2index,null,html,html,true,browser,click here first
2000,bellard,300,2000_bellard.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2000,bmeyer,null,.winner.json,jwinner,null,json,json,false,null,null
2000,bmeyer,10,index.html,readme2index,null,html,html,true,browser,click here first
2000,bmeyer,300,2000_bmeyer.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2000,briddlebane,null,.winner.json,jwinner,null,json,json,false,null,null
2000,briddlebane,10,index.html,readme2index,null,html,html,true,browser,click here first
2000,briddlebane,300,2000_briddlebane.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2000,dhyang,null,.winner.json,jwinner,null,json,json,false,null,null
2000,dhyang,10,index.html,readme2index,null,html,html,true,browser,click here first
2000,dhyang,300,2000_dhyang.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2000,dlowe,null,.winner.json,jwinner,null,json,json,false,null,null
2000,dlowe,10,index.html,readme2index,null,html,html,true,browser,click here first
2000,dlowe,300,2000_dlowe.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2000,jarijyrki,null,.winner.json,jwinner,null,json,json,false,null,null
2000,jarijyrki,10,index.html,readme2index,null,html,html,true,browser,click here first
2000,jarijyrki,300,2000_jarijyrki.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2000,natori,null,.winner.json,jwinner,null,json,json,false,null,null
2000,natori,10,index.html,readme2index,null,html,html,true,browser,click here first
2000,natori,300,2000_natori.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2000,primenum,null,.winner.json,jwinner,null,json,json,false,null,null
2000,primenum,10,index.html,readme2index,null,html,html,true,browser,click here first
2000,primenum,300,2000_primenum.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2000,rince,null,.winner.json,jwinner,null,json,json,false,null,null
2000,rince,10,index.html,readme2index,null,html,html,true,browser,click here first
2000,rince,300,2000_rince.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2000,robison,null,.winner.json,jwinner,null,json,json,false,null,null
2000,robison,10,index.html,readme2index,null,html,html,true,browser,click here first
2000,robison,300,2000_robison.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2000,schneiderwent,null,.winner.json,jwinner,null,json,json,false,null,null
2000,schneiderwent,10,index.html,readme2index,null,html,html,true,browser,click here first
2000,schneiderwent,300,2000_schneiderwent.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2000,thadgavin,null,.winner.json,jwinner,null,json,json,false,null,null
2000,thadgavin,10,index.html,readme2index,null,html,html,true,browser,click here first
2000,thadgavin,300,2000_thadgavin.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2000,tomx,null,.winner.json,jwinner,null,json,json,false,null,null
2000,tomx,10,index.html,readme2index,null,html,html,true,browser,click here first
2000,tomx,300,2000_tomx.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2001,anonymous,null,.winner.json,jwinner,null,json,json,false,null,null
2001,anonymous,10,index.html,readme2index,null,html,html,true,browser,click here first
2001,anonymous,300,2001_anonymous.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2001,bellard,null,.winner.json,jwinner,null,json,json,false,null,null
2001,bellard,10,index.html,readme2index,null,html,html,true,browser,click here first
2001,bellard,300,2001_bellard.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2001,cheong,null,.winner.json,jwinner,null,json,json,false,null,null
2001,cheong,10,index.html,readme2index,null,html,html,true,browser,click here first
2001,cheong,300,2001_cheong.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2001,coupard,null,.winner.json,jwinner,null,json,json,false,null,null
2001,coupard,10,index.html,readme2index,null,html,html,true,browser,click here first
2001,coupard,300,2001_coupard.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2001,ctk,null,.winner.json,jwinner,null,json,json,false,null,null
2001,ctk,10,index.html,readme2index,null,html,html,true,browser,click here first
2001,ctk,300,2001_ctk.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2001,dgbeards,null,.winner.json,jwinner,null,json,json,false,null,null
2001,dgbeards,10,index.html,readme2index,null,html,html,true,browser,click here first
2001,dgbeards,300,2001_dgbeards.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2001,herrmann1,null,.winner.json,jwinner,null,json,json,false,null,null
2001,herrmann1,10,index.html,readme2index,null,html,html,true,browser,click here first
2001,herrmann1,300,2001_herrmann1.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2001,herrmann2,null,.winner.json,jwinner,null,json,json,false,null,null
2001,herrmann2,10,index.html,readme2index,null,html,html,true,browser,click here first
2001,herrmann2,300,2001_herrmann2.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2001,jason,null,.winner.json,jwinner,null,json,json,false,null,null
2001,jason,10,index.html,readme2index,null,html,html,true,browser,click here first
2001,jason,300,2001_jason.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2001,kev,null,.winner.json,jwinner,null,json,json,false,null,null
2001,kev,10,index.html,readme2index,null,html,html,true,browser,click here first
2001,kev,300,2001_kev.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2001,ollinger,null,.winner.json,jwinner,null,json,json,false,null,null
2001,ollinger,10,index.html,readme2index,null,html,html,true,browser,click here first
2001,ollinger,300,2001_ollinger.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2001,rosten,null,.winner.json,jwinner,null,json,json,false,null,null
2001,rosten,10,index.html,readme2index,null,html,html,true,browser,click here first
2001,rosten,300,2001_rosten.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2001,schweikh,null,.winner.json,jwinner,null,json,json,false,null,null
2001,schweikh,10,index.html,readme2index,null,html,html,true,browser,click here first
2001,schweikh,300,2001_schweikh.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2001,westley,null,.winner.json,jwinner,null,json,json,false,null,null
2001,westley,10,index.html,readme2index,null,html,html,true,browser,click here first
2001,westley,300,2001_westley.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2001,williams,null,.winner.json,jwinner,null,json,json,false,null,null
2001,williams,10,index.html,readme2index,null,html,html,true,browser,click here first
2001,williams,300,2001_williams.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2004,anonymous,null,.winner.json,jwinner,null,json,json,false,null,null
2004,anonymous,10,index.html,readme2index,null,html,html,true,browser,click here first
2004,anonymous,300,2004_anonymous.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2004,arachnid,null,.winner.json,jwinner,null,json,json,false,null,null
2004,arachnid,10,index.html,readme2index,null,html,html,true,browser,click here first
2004,arachnid,300,2004_arachnid.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2004,burley,null,.winner.json,jwinner,null,json,json,false,null,null
2004,burley,10,index.html,readme2index,null,html,html,true,browser,click here first
2004,burley,300,2004_burley.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2004,gavare,null,.winner.json,jwinner,null,json,json,false,null,null
2004,gavare,10,index.html,readme2index,null,html,html,true,browser,click here first
2004,gavare,300,2004_gavare.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2004,gavin,null,.winner.json,jwinner,null,json,json,false,null,null
2004,gavin,10,index.html,readme2index,null,html,html,true,browser,click here first
2004,gavin,100,gavin.html,md2html,null,html,html,true,browser,author usage guide
2004,gavin,300,2004_gavin.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2004,hibachi,null,.winner.json,jwinner,null,json,json,false,null,null
2004,hibachi,10,index.html,readme2index,null,html,html,true,browser,click here first
2004,hibachi,300,2004_hibachi.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2004,hoyle,null,.winner.json,jwinner,null,json,json,false,null,null
2004,hoyle,10,index.html,readme2index,null,html,html,true,browser,click here first
2004,hoyle,300,2004_hoyle.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2004,jdalbec,null,.winner.json,jwinner,null,json,json,false,null,null
2004,jdalbec,10,index.html,readme2index,null,html,html,true,browser,click here first
2004,jdalbec,300,2004_jdalbec.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2004,kopczynski,null,.winner.json,jwinner,null,json,json,false,null,null
2004,kopczynski,10,index.html,readme2index,null,html,html,true,browser,click here first
2004,kopczynski,300,2004_kopczynski.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2004,newbern,null,.winner.json,jwinner,null,json,json,false,null,null
2004,newbern,10,index.html,readme2index,null,html,html,true,browser,click here first
2004,newbern,300,2004_newbern.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2004,omoikane,null,.winner.json,jwinner,null,json,json,false,null,null
2004,omoikane,10,index.html,readme2index,null,html,html,true,browser,click here first
2004,omoikane,300,2004_omoikane.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2004,schnitzi,null,.winner.json,jwinner,null,json,json,false,null,null
2004,schnitzi,10,index.html,readme2index,null,html,html,true,browser,click here first
2004,schnitzi,300,2004_schnitzi.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2004,sds,null,.winner.json,jwinner,null,json,json,false,null,null
2004,sds,10,index.html,readme2index,null,html,html,true,browser,click here first
2004,sds,300,2004_sds.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2004,vik1,null,.winner.json,jwinner,null,json,json,false,null,null
2004,vik1,10,index.html,readme2index,null,html,html,true,browser,click here first
2004,vik1,300,2004_vik1.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2004,vik2,null,.winner.json,jwinner,null,json,json,false,null,null
2004,vik2,10,index.html,readme2index,null,html,html,true,browser,click here first
2004,vik2,300,2004_vik2.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2005,aidan,null,.winner.json,jwinner,null,json,json,false,null,null
2005,aidan,10,index.html,readme2index,null,html,html,true,browser,click here first
2005,aidan,300,2005_aidan.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2005,anon,null,.winner.json,jwinner,null,json,json,false,null,null
2005,anon,10,index.html,readme2index,null,html,html,true,browser,click here first
2005,anon,300,2005_anon.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2005,boutines,null,.winner.json,jwinner,null,json,json,false,null,null
2005,boutines,10,index.html,readme2index,null,html,html,true,browser,click here first
2005,boutines,300,2005_boutines.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2005,chia,null,.winner.json,jwinner,null,json,json,false,null,null
2005,chia,10,index.html,readme2index,null,html,html,true,browser,click here first
2005,chia,300,2005_chia.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2005,giljade,null,.winner.json,jwinner,null,json,json,false,null,null
2005,giljade,10,index.html,readme2index,null,html,html,true,browser,click here first
2005,giljade,300,2005_giljade.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2005,jetro,null,.winner.json,jwinner,null,json,json,false,null,null
2005,jetro,10,index.html,readme2index,null,html,html,true,browser,click here first
2005,jetro,300,2005_jetro.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2005,klausler,null,.winner.json,jwinner,null,json,json,false,null,null
2005,klausler,10,index.html,readme2index,null,html,html,true,browser,click here first
2005,klausler,300,2005_klausler.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2005,mikeash,null,.winner.json,jwinner,null,json,json,false,null,null
2005,mikeash,10,index.html,readme2index,null,html,html,true,browser,click here first
2005,mikeash,300,2005_mikeash.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2005,mynx,null,.winner.json,jwinner,null,json,json,false,null,null
2005,mynx,10,index.html,readme2index,null,html,html,true,browser,click here first
2005,mynx,300,2005_mynx.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2005,persano,null,.winner.json,jwinner,null,json,json,false,null,null
2005,persano,10,index.html,readme2index,null,html,html,true,browser,click here first
2005,persano,300,2005_persano.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2005,sykes,null,.winner.json,jwinner,null,json,json,false,null,null
2005,sykes,10,index.html,readme2index,null,html,html,true,browser,click here first
2005,sykes,300,2005_sykes.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2005,timwi,null,.winner.json,jwinner,null,json,json,false,null,null
2005,timwi,10,index.html,readme2index,null,html,html,true,browser,click here first
2005,timwi,300,2005_timwi.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2005,toledo,null,.winner.json,jwinner,null,json,json,false,null,null
2005,toledo,10,index.html,readme2index,null,html,html,true,browser,click here first
2005,toledo,300,2005_toledo.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2005,vik,null,.winner.json,jwinner,null,json,json,false,null,null
2005,vik,10,index.html,readme2index,null,html,html,true,browser,click here first
2005,vik,300,2005_vik.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2005,vince,null,.winner.json,jwinner,null,json,json,false,null,null
2005,vince,10,index.html,readme2index,null,html,html,true,browser,click here first
2005,vince,300,2005_vince.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2006,birken,null,.winner.json,jwinner,null,json,json,false,null,null
2006,birken,10,index.html,readme2index,null,html,html,true,browser,click here first
2006,birken,300,2006_birken.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2006,borsanyi,null,.winner.json,jwinner,null,json,json,false,null,null
2006,borsanyi,10,index.html,readme2index,null,html,html,true,browser,click here first
2006,borsanyi,300,2006_borsanyi.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2006,grothe,null,.winner.json,jwinner,null,json,json,false,null,null
2006,grothe,10,index.html,readme2index,null,html,html,true,browser,click here first
2006,grothe,300,2006_grothe.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2006,hamre,null,.winner.json,jwinner,null,json,json,false,null,null
2006,hamre,10,index.html,readme2index,null,html,html,true,browser,click here first
2006,hamre,300,2006_hamre.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2006,meyer,null,.winner.json,jwinner,null,json,json,false,null,null
2006,meyer,10,index.html,readme2index,null,html,html,true,browser,click here first
2006,meyer,300,2006_meyer.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2006,monge,null,.winner.json,jwinner,null,json,json,false,null,null
2006,monge,10,index.html,readme2index,null,html,html,true,browser,click here first
2006,monge,300,2006_monge.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2006,night,null,.winner.json,jwinner,null,json,json,false,null,null
2006,night,10,index.html,readme2index,null,html,html,true,browser,click here first
2006,night,300,2006_night.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2006,sloane,null,.winner.json,jwinner,null,json,json,false,null,null
2006,sloane,10,index.html,readme2index,null,html,html,true,browser,click here first
2006,sloane,300,2006_sloane.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2006,stewart,null,.winner.json,jwinner,null,json,json,false,null,null
2006,stewart,10,index.html,readme2index,null,html,html,true,browser,click here first
2006,stewart,300,2006_stewart.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2006,sykes1,null,.winner.json,jwinner,null,json,json,false,null,null
2006,sykes1,10,index.html,readme2index,null,html,html,true,browser,click here first
2006,sykes1,300,2006_sykes1.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2006,sykes2,null,.winner.json,jwinner,null,json,json,false,null,null
2006,sykes2,10,index.html,readme2index,null,html,html,true,browser,click here first
2006,sykes2,300,2006_sykes2.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2006,toledo1,null,.winner.json,jwinner,null,json,json,false,null,null
2006,toledo1,10,index.html,readme2index,null,html,html,true,browser,click here first
2006,toledo1,300,2006_toledo1.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2006,toledo2,null,.winner.json,jwinner,null,json,json,false,null,null
2006,toledo2,10,index.html,readme2index,null,html,html,true,browser,click here first
2006,toledo2,300,2006_toledo2.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2006,toledo3,null,.winner.json,jwinner,null,json,json,false,null,null
2006,toledo3,10,index.html,readme2index,null,html,html,true,browser,click here first
2006,toledo3,300,2006_toledo3.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2011,akari,null,.winner.json,jwinner,null,json,json,false,null,null
2011,akari,10,index.html,readme2index,null,html,html,true,browser,click here first
2011,akari,300,2011_akari.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2011,blakely,null,.winner.json,jwinner,null,json,json,false,null,null
2011,blakely,10,index.html,readme2index,null,html,html,true,browser,click here first
2011,blakely,300,2011_blakely.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2011,borsanyi,null,.winner.json,jwinner,null,json,json,false,null,null
2011,borsanyi,10,index.html,readme2index,null,html,html,true,browser,click here first
2011,borsanyi,300,2011_borsanyi.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2011,dlowe,null,.winner.json,jwinner,null,json,json,false,null,null
2011,dlowe,10,index.html,readme2index,null,html,html,true,browser,click here first
2011,dlowe,300,2011_dlowe.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2011,eastman,null,.winner.json,jwinner,null,json,json,false,null,null
2011,eastman,10,index.html,readme2index,null,html,html,true,browser,click here first
2011,eastman,300,2011_eastman.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2011,fredriksson,null,.winner.json,jwinner,null,json,json,false,null,null
2011,fredriksson,10,index.html,readme2index,null,html,html,true,browser,click here first
2011,fredriksson,300,2011_fredriksson.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2011,goren,null,.winner.json,jwinner,null,json,json,false,null,null
2011,goren,10,index.html,readme2index,null,html,html,true,browser,click here first
2011,goren,300,2011_goren.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2011,hamaji,null,.winner.json,jwinner,null,json,json,false,null,null
2011,hamaji,10,index.html,readme2index,null,html,html,true,browser,click here first
2011,hamaji,300,2011_hamaji.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2011,hou,null,.winner.json,jwinner,null,json,json,false,null,null
2011,hou,10,index.html,readme2index,null,html,html,true,browser,click here first
2011,hou,300,2011_hou.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2011,konno,null,.winner.json,jwinner,null,json,json,false,null,null
2011,konno,10,index.html,readme2index,null,html,html,true,browser,click here first
2011,konno,300,2011_konno.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2011,richards,null,.winner.json,jwinner,null,json,json,false,null,null
2011,richards,10,index.html,readme2index,null,html,html,true,browser,click here first
2011,richards,300,2011_richards.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2011,toledo,null,.winner.json,jwinner,null,json,json,false,null,null
2011,toledo,10,index.html,readme2index,null,html,html,true,browser,click here first
2011,toledo,300,2011_toledo.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2011,vik,null,.winner.json,jwinner,null,json,json,false,null,null
2011,vik,10,index.html,readme2index,null,html,html,true,browser,click here first
2011,vik,300,2011_vik.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2011,zucker,null,.winner.json,jwinner,null,json,json,false,null,null
2011,zucker,10,index.html,readme2index,null,html,html,true,browser,click here first
2011,zucker,300,2011_zucker.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2012,blakely,null,.winner.json,jwinner,null,json,json,false,null,null
2012,blakely,10,index.html,readme2index,null,html,html,true,browser,click here first
2012,blakely,300,2012_blakely.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2012,deckmyn,null,.winner.json,jwinner,null,json,json,false,null,null
2012,deckmyn,10,index.html,readme2index,null,html,html,true,browser,click here first
2012,deckmyn,100,deckmyn.html,md2html,null,html,html,true,browser,user manual
2012,deckmyn,300,2012_deckmyn.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2012,dlowe,null,.winner.json,jwinner,null,json,json,false,null,null
2012,dlowe,10,index.html,readme2index,null,html,html,true,browser,click here first
2012,dlowe,300,2012_dlowe.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2012,endoh1,null,.winner.json,jwinner,null,json,json,false,null,null
2012,endoh1,10,index.html,readme2index,null,html,html,true,browser,click here first
2012,endoh1,300,2012_endoh1.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2012,endoh2,null,.winner.json,jwinner,null,json,json,false,null,null
2012,endoh2,10,index.html,readme2index,null,html,html,true,browser,click here first
2012,endoh2,300,2012_endoh2.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2012,grothe,null,.winner.json,jwinner,null,json,json,false,null,null
2012,grothe,10,index.html,readme2index,null,html,html,true,browser,click here first
2012,grothe,300,2012_grothe.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2012,hamano,null,.winner.json,jwinner,null,json,json,false,null,null
2012,hamano,10,index.html,readme2index,null,html,html,true,browser,click here first
2012,hamano,300,2012_hamano.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2012,hou,null,.winner.json,jwinner,null,json,json,false,null,null
2012,hou,10,index.html,readme2index,null,html,html,true,browser,click here first
2012,hou,300,2012_hou.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2012,kang,null,.winner.json,jwinner,null,json,json,false,null,null
2012,kang,10,index.html,readme2index,null,html,html,true,browser,click here first
2012,kang,300,2012_kang.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2012,konno,null,.winner.json,jwinner,null,json,json,false,null,null
2012,konno,10,index.html,readme2index,null,html,html,true,browser,click here first
2012,konno,300,2012_konno.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2012,omoikane,null,.winner.json,jwinner,null,json,json,false,null,null
2012,omoikane,10,index.html,readme2index,null,html,html,true,browser,click here first
2012,omoikane,300,2012_omoikane.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2012,tromp,null,.winner.json,jwinner,null,json,json,false,null,null
2012,tromp,10,index.html,readme2index,null,html,html,true,browser,click here first
2012,tromp,100,how.html,md2html,null,html,html,true,browser,author supplied spoiler
2012,tromp,300,2012_tromp.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2012,vik,null,.winner.json,jwinner,null,json,json,false,null,null
2012,vik,10,index.html,readme2index,null,html,html,true,browser,click here first
2012,vik,300,2012_vik.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2012,zeitak,null,.winner.json,jwinner,null,json,json,false,null,null
2012,zeitak,10,index.html,readme2index,null,html,html,true,browser,click here first
2012,zeitak,300,2012_zeitak.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2013,birken,null,.winner.json,jwinner,null,json,json,false,null,null
2013,birken,10,index.html,readme2index,null,html,html,true,browser,click here first
2013,birken,300,2013_birken.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2013,cable1,null,.winner.json,jwinner,null,json,json,false,null,null
2013,cable1,10,index.html,readme2index,null,html,html,true,browser,click here first
2013,cable1,300,2013_cable1.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2013,cable2,null,.winner.json,jwinner,null,json,json,false,null,null
2013,cable2,10,index.html,readme2index,null,html,html,true,browser,click here first
2013,cable2,300,2013_cable2.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2013,cable3,null,.winner.json,jwinner,null,json,json,false,null,null
2013,cable3,10,index.html,readme2index,null,html,html,true,browser,click here first
2013,cable3,300,2013_cable3.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2013,dlowe,null,.winner.json,jwinner,null,json,json,false,null,null
2013,dlowe,10,index.html,readme2index,null,html,html,true,browser,click here first
2013,dlowe,300,2013_dlowe.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2013,endoh1,null,.winner.json,jwinner,null,json,json,false,null,null
2013,endoh1,10,index.html,readme2index,null,html,html,true,browser,click here first
2013,endoh1,300,2013_endoh1.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2013,endoh2,null,.winner.json,jwinner,null,json,json,false,null,null
2013,endoh2,10,index.html,readme2index,null,html,html,true,browser,click here first
2013,endoh2,300,2013_endoh2.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2013,endoh3,null,.winner.json,jwinner,null,json,json,false,null,null
2013,endoh3,10,index.html,readme2index,null,html,html,true,browser,click here first
2013,endoh3,300,2013_endoh3.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2013,endoh4,null,.winner.json,jwinner,null,json,json,false,null,null
2013,endoh4,10,index.html,readme2index,null,html,html,true,browser,click here first
2013,endoh4,300,2013_endoh4.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2013,hou,null,.winner.json,jwinner,null,json,json,false,null,null
2013,hou,10,index.html,readme2index,null,html,html,true,browser,click here first
2013,hou,100,doc/example.html,md2html,null,html,html,true,browser,detailed information about entry
2013,hou,300,2013_hou.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2013,mills,null,.winner.json,jwinner,null,json,json,false,null,null
2013,mills,10,index.html,readme2index,null,html,html,true,browser,click here first
2013,mills,300,2013_mills.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2013,misaka,null,.winner.json,jwinner,null,json,json,false,null,null
2013,misaka,10,index.html,readme2index,null,html,html,true,browser,click here first
2013,misaka,300,2013_misaka.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2013,morgan1,null,.winner.json,jwinner,null,json,json,false,null,null
2013,morgan1,10,index.html,readme2index,null,html,html,true,browser,click here first
2013,morgan1,300,2013_morgan1.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2013,morgan2,null,.winner.json,jwinner,null,json,json,false,null,null
2013,morgan2,10,index.html,readme2index,null,html,html,true,browser,click here first
2013,morgan2,300,2013_morgan2.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2013,robison,null,.winner.json,jwinner,null,json,json,false,null,null
2013,robison,10,index.html,readme2index,null,html,html,true,browser,click here first
2013,robison,300,2013_robison.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2014,birken,null,.winner.json,jwinner,null,json,json,false,null,null
2014,birken,10,index.html,readme2index,null,html,html,true,browser,click here first
2014,birken,300,2014_birken.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2014,deak,null,.winner.json,jwinner,null,json,json,false,null,null
2014,deak,10,index.html,readme2index,null,html,html,true,browser,click here first
2014,deak,300,2014_deak.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2014,endoh1,null,.winner.json,jwinner,null,json,json,false,null,null
2014,endoh1,10,index.html,readme2index,null,html,html,true,browser,click here first
2014,endoh1,100,read_me.html,md2html,null,html,html,true,browser,about the Q(uine)R code generator
2014,endoh1,100,spoilers.html,md2html,null,html,html,true,browser,spoilers about Q(uine)R code generator
2014,endoh1,300,2014_endoh1.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2014,endoh2,null,.winner.json,jwinner,null,json,json,false,null,null
2014,endoh2,10,index.html,readme2index,null,html,html,true,browser,click here first
2014,endoh2,300,2014_endoh2.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2014,maffiodo1,null,.winner.json,jwinner,null,json,json,false,null,null
2014,maffiodo1,10,index.html,readme2index,null,html,html,true,browser,click here first
2014,maffiodo1,300,2014_maffiodo1.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2014,maffiodo2,null,.winner.json,jwinner,null,json,json,false,null,null
2014,maffiodo2,10,index.html,readme2index,null,html,html,true,browser,click here first
2014,maffiodo2,300,2014_maffiodo2.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2014,morgan,null,.winner.json,jwinner,null,json,json,false,null,null
2014,morgan,10,index.html,readme2index,null,html,html,true,browser,click here first
2014,morgan,300,2014_morgan.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2014,sinon,null,.winner.json,jwinner,null,json,json,false,null,null
2014,sinon,10,index.html,readme2index,null,html,html,true,browser,click here first
2014,sinon,300,2014_sinon.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2014,skeggs,null,.winner.json,jwinner,null,json,json,false,null,null
2014,skeggs,10,index.html,readme2index,null,html,html,true,browser,click here first
2014,skeggs,300,2014_skeggs.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2014,vik,null,.winner.json,jwinner,null,json,json,false,null,null
2014,vik,10,index.html,readme2index,null,html,html,true,browser,click here first
2014,vik,300,2014_vik.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2014,wiedijk,null,.winner.json,jwinner,null,json,json,false,null,null
2014,wiedijk,10,index.html,readme2index,null,html,html,true,browser,click here first
2014,wiedijk,300,2014_wiedijk.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2015,burton,null,.winner.json,jwinner,null,json,json,false,null,null
2015,burton,10,index.html,readme2index,null,html,html,true,browser,click here first
2015,burton,200,spoilers.html,md2html,null,html,html,true,browser,SPOILER WARNING
2015,burton,300,2015_burton.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2015,dogon,null,.winner.json,jwinner,null,json,json,false,null,null
2015,dogon,10,index.html,readme2index,null,html,html,true,browser,click here first
2015,dogon,300,2015_dogon.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2015,duble,null,.winner.json,jwinner,null,json,json,false,null,null
2015,duble,10,index.html,readme2index,null,html,html,true,browser,click here first
2015,duble,300,2015_duble.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2015,endoh1,null,.winner.json,jwinner,null,json,json,false,null,null
2015,endoh1,10,index.html,readme2index,null,html,html,true,browser,click here first
2015,endoh1,300,2015_endoh1.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2015,endoh2,null,.winner.json,jwinner,null,json,json,false,null,null
2015,endoh2,10,index.html,readme2index,null,html,html,true,browser,click here first
2015,endoh2,300,2015_endoh2.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2015,endoh3,null,.winner.json,jwinner,null,json,json,false,null,null
2015,endoh3,10,index.html,readme2index,null,html,html,true,browser,click here first
2015,endoh3,300,2015_endoh3.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2015,endoh4,null,.winner.json,jwinner,null,json,json,false,null,null
2015,endoh4,10,index.html,readme2index,null,html,html,true,browser,click here first
2015,endoh4,300,2015_endoh4.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2015,hou,null,.winner.json,jwinner,null,json,json,false,null,null
2015,hou,10,index.html,readme2index,null,html,html,true,browser,click here first
2015,hou,300,2015_hou.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2015,howe,null,.winner.json,jwinner,null,json,json,false,null,null
2015,howe,10,index.html,readme2index,null,html,html,true,browser,click here first
2015,howe,300,2015_howe.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2015,mills1,null,.winner.json,jwinner,null,json,json,false,null,null
2015,mills1,10,index.html,readme2index,null,html,html,true,browser,click here first
2015,mills1,300,2015_mills1.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2015,mills2,null,.winner.json,jwinner,null,json,json,false,null,null
2015,mills2,10,index.html,readme2index,null,html,html,true,browser,click here first
2015,mills2,300,2015_mills2.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2015,muth,null,.winner.json,jwinner,null,json,json,false,null,null
2015,muth,10,index.html,readme2index,null,html,html,true,browser,click here first
2015,muth,300,2015_muth.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2015,schweikhardt,null,.winner.json,jwinner,null,json,json,false,null,null
2015,schweikhardt,10,index.html,readme2index,null,html,html,true,browser,click here first
2015,schweikhardt,300,2015_schweikhardt.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2015,yang,null,.winner.json,jwinner,null,json,json,false,null,null
2015,yang,10,index.html,readme2index,null,html,html,true,browser,click here first
2015,yang,300,2015_yang.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2018,algmyr,null,.winner.json,jwinner,null,json,json,false,null,null
2018,algmyr,10,index.html,readme2index,null,html,html,true,browser,click here first
2018,algmyr,300,2018_algmyr.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2018,anderson,null,.winner.json,jwinner,null,json,json,false,null,null
2018,anderson,10,index.html,readme2index,null,html,html,true,browser,click here first
2018,anderson,300,2018_anderson.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2018,bellard,null,.winner.json,jwinner,null,json,json,false,null,null
2018,bellard,10,index.html,readme2index,null,html,html,true,browser,click here first
2018,bellard,300,2018_bellard.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2018,burton1,null,.winner.json,jwinner,null,json,json,false,null,null
2018,burton1,10,index.html,readme2index,null,html,html,true,browser,click here first
2018,burton1,300,2018_burton1.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2018,burton2,null,.winner.json,jwinner,null,json,json,false,null,null
2018,burton2,10,index.html,readme2index,null,html,html,true,browser,click here first
2018,burton2,100,discrepancies.html,md2html,null,html,html,true,browser,field-by-field difference between iocccsize and ion
2018,burton2,300,2018_burton2.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2018,ciura,null,.winner.json,jwinner,null,json,json,false,null,null
2018,ciura,10,index.html,readme2index,null,html,html,true,browser,click here first
2018,ciura,300,2018_ciura.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2018,endoh1,null,.winner.json,jwinner,null,json,json,false,null,null
2018,endoh1,10,index.html,readme2index,null,html,html,true,browser,click here first
2018,endoh1,300,2018_endoh1.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2018,endoh2,null,.winner.json,jwinner,null,json,json,false,null,null
2018,endoh2,10,index.html,readme2index,null,html,html,true,browser,click here first
2018,endoh2,300,2018_endoh2.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2018,ferguson,null,.winner.json,jwinner,null,json,json,false,null,null
2018,ferguson,10,index.html,readme2index,null,html,html,true,browser,click here first
2018,ferguson,100,rpm.html,md2html,null,html,html,true,browser,about forming the rpm
2018,ferguson,300,2018_ferguson.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2018,giles,null,.winner.json,jwinner,null,json,json,false,null,null
2018,giles,10,index.html,readme2index,null,html,html,true,browser,click here first
2018,giles,300,2018_giles.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2018,hou,null,.winner.json,jwinner,null,json,json,false,null,null
2018,hou,10,index.html,readme2index,null,html,html,true,browser,click here first
2018,hou,300,2018_hou.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2018,mills,null,.winner.json,jwinner,null,json,json,false,null,null
2018,mills,10,index.html,readme2index,null,html,html,true,browser,click here first
2018,mills,300,2018_mills.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2018,poikola,null,.winner.json,jwinner,null,json,json,false,null,null
2018,poikola,10,index.html,readme2index,null,html,html,true,browser,click here first
2018,poikola,300,2018_poikola.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2018,vokes,null,.winner.json,jwinner,null,json,json,false,null,null
2018,vokes,10,index.html,readme2index,null,html,html,true,browser,click here first
2018,vokes,300,2018_vokes.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2018,yang,null,.winner.json,jwinner,null,json,json,false,null,null
2018,yang,10,index.html,readme2index,null,html,html,true,browser,click here first
2018,yang,300,2018_yang.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2019,adamovsky,null,.winner.json,jwinner,null,json,json,false,null,null
2019,adamovsky,10,index.html,readme2index,null,html,html,true,browser,click here first
2019,adamovsky,300,2019_adamovsky.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2019,burton,null,.winner.json,jwinner,null,json,json,false,null,null
2019,burton,10,index.html,readme2index,null,html,html,true,browser,click here first
2019,burton,300,2019_burton.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2019,ciura,null,.winner.json,jwinner,null,json,json,false,null,null
2019,ciura,10,index.html,readme2index,null,html,html,true,browser,click here first
2019,ciura,300,2019_ciura.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2019,diels-grabsch1,null,.winner.json,jwinner,null,json,json,false,null,null
2019,diels-grabsch1,10,index.html,readme2index,null,html,html,true,browser,click here first
2019,diels-grabsch1,300,2019_diels-grabsch1.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2019,diels-grabsch2,null,.winner.json,jwinner,null,json,json,false,null,null
2019,diels-grabsch2,10,index.html,readme2index,null,html,html,true,browser,click here first
2019,diels-grabsch2,300,2019_diels-grabsch2.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2019,dogon,null,.winner.json,jwinner,null,json,json,false,null,null
2019,dogon,10,index.html,readme2index,null,html,html,true,browser,click here first
2019,dogon,300,2019_dogon.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2019,duble,null,.winner.json,jwinner,null,json,json,false,null,null
2019,duble,10,index.html,readme2index,null,html,html,true,browser,click here first
2019,duble,300,2019_duble.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2019,endoh,null,.winner.json,jwinner,null,json,json,false,null,null
2019,endoh,10,index.html,readme2index,null,html,html,true,browser,click here first
2019,endoh,300,2019_endoh.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2019,giles,null,.winner.json,jwinner,null,json,json,false,null,null
2019,giles,10,index.html,readme2index,null,html,html,true,browser,click here first
2019,giles,300,2019_giles.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2019,karns,null,.winner.json,jwinner,null,json,json,false,null,null
2019,karns,10,index.html,readme2index,null,html,html,true,browser,click here first
2019,karns,300,2019_karns.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2019,lynn,null,.winner.json,jwinner,null,json,json,false,null,null
2019,lynn,10,index.html,readme2index,null,html,html,true,browser,click here first
2019,lynn,300,2019_lynn.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2019,mills,null,.winner.json,jwinner,null,json,json,false,null,null
2019,mills,10,index.html,readme2index,null,html,html,true,browser,click here first
2019,mills,300,2019_mills.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2019,poikola,null,.winner.json,jwinner,null,json,json,false,null,null
2019,poikola,10,index.html,readme2index,null,html,html,true,browser,click here first
2019,poikola,300,2019_poikola.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2019,yang,null,.winner.json,jwinner,null,json,json,false,null,null
2019,yang,10,index.html,readme2index,null,html,html,true,browser,click here first
2019,yang,300,2019_yang.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2020,burton,null,.winner.json,jwinner,null,json,json,false,null,null
2020,burton,10,index.html,readme2index,null,html,html,true,browser,click here first
2020,burton,300,2020_burton.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2020,carlini,null,.winner.json,jwinner,null,json,json,false,null,null
2020,carlini,10,index.html,readme2index,null,html,html,true,browser,click here first
2020,carlini,300,2020_carlini.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2020,endoh1,null,.winner.json,jwinner,null,json,json,false,null,null
2020,endoh1,10,index.html,readme2index,null,html,html,true,browser,click here first
2020,endoh1,300,2020_endoh1.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2020,endoh2,null,.winner.json,jwinner,null,json,json,false,null,null
2020,endoh2,10,index.html,readme2index,null,html,html,true,browser,click here first
2020,endoh2,300,2020_endoh2.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2020,endoh3,null,.winner.json,jwinner,null,json,json,false,null,null
2020,endoh3,10,index.html,readme2index,null,html,html,true,browser,click here first
2020,endoh3,300,2020_endoh3.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2020,ferguson1,null,.winner.json,jwinner,null,json,json,false,null,null
2020,ferguson1,10,index.html,readme2index,null,html,html,true,browser,click here first
2020,ferguson1,100,COMPILING.html,md2html,null,html,html,true,browser,about compiling
2020,ferguson1,100,HACKING.html,md2html,null,html,html,true,browser,information for herpetologist hackers
2020,ferguson1,100,cannibalism.log.html,md2html,null,html,html,true,browser,about the snake game
2020,ferguson1,100,crazy.log.html,md2html,null,html,html,true,browser,about some screen dumps
2020,ferguson1,150,bugs.html,md2html,null,html,html,true,browser,bugs and mis-features
2020,ferguson1,150,chocolate-cake.html,md2html,null,html,html,true,browser,chocolate cake recipe
2020,ferguson1,150,gameplay.html,md2html,null,html,html,true,browser,how to play
2020,ferguson1,150,terminals.html,md2html,null,html,html,true,browser,terminal capability documentation
2020,ferguson1,150,troubleshooting.html,md2html,null,html,html,true,browser,troubleshooting
2020,ferguson1,200,spoilers.html,md2html,null,html,html,true,browser,SPOILER WARNING
2020,ferguson1,300,2020_ferguson1.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2020,ferguson2,null,.winner.json,jwinner,null,json,json,false,null,null
2020,ferguson2,10,index.html,readme2index,null,html,html,true,browser,click here first
2020,ferguson2,300,2020_ferguson2.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2020,giles,null,.winner.json,jwinner,null,json,json,false,null,null
2020,giles,10,index.html,readme2index,null,html,html,true,browser,click here first
2020,giles,300,2020_giles.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2020,kurdyukov1,null,.winner.json,jwinner,null,json,json,false,null,null
2020,kurdyukov1,10,index.html,readme2index,null,html,html,true,browser,click here first
2020,kurdyukov1,300,2020_kurdyukov1.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2020,kurdyukov2,null,.winner.json,jwinner,null,json,json,false,null,null
2020,kurdyukov2,10,index.html,readme2index,null,html,html,true,browser,click here first
2020,kurdyukov2,300,2020_kurdyukov2.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2020,kurdyukov3,null,.winner.json,jwinner,null,json,json,false,null,null
2020,kurdyukov3,10,index.html,readme2index,null,html,html,true,browser,click here first
2020,kurdyukov3,300,2020_kurdyukov3.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2020,kurdyukov4,null,.winner.json,jwinner,null,json,json,false,null,null
2020,kurdyukov4,10,index.html,readme2index,null,html,html,true,browser,click here first
2020,kurdyukov4,300,2020_kurdyukov4.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2020,otterness,null,.winner.json,jwinner,null,json,json,false,null,null
2020,otterness,10,index.html,readme2index,null,html,html,true,browser,click here first
2020,otterness,300,2020_otterness.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2020,tsoj,null,.winner.json,jwinner,null,json,json,false,null,null
2020,tsoj,10,index.html,readme2index,null,html,html,true,browser,click here first
2020,tsoj,300,2020_tsoj.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
2020,yang,null,.winner.json,jwinner,null,json,json,false,null,null
2020,yang,10,index.html,readme2index,null,html,html,true,browser,click here first
2020,yang,300,2020_yang.tar.bz2,mkwinnertbz2,null,tbz2,bz2,true,download,download winning source
1 # -1 All other cells (excluding year+winners_rank+winners_show) are JSON strings that must not contain commas NOR quotes NOR newlines.
2 # -2 The year cells must be JSON numbers. The winners_rank cells must be a JSON number or JSON null. The winners_show cells must be JSON booleans.
3 # -3 Empty cells are filled in with red and need to be filled in and are TBD.
4 # -4 Any cell containing null is a JSON null value. Any cell containing true or false is a JSON boolean value.
5 # year dir winners_rank path created_by prog filetype ext winners_show display_via winners_text
6 1984 anonymous null .winner.json jwinner null json json false null null
7 1984 anonymous 10 index.html readme2index null html html true browser click here first
8 1984 anonymous 300 1984_anonymous.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
9 1984 decot null .winner.json jwinner null json json false null null
10 1984 decot 10 index.html readme2index null html html true browser click here first
11 1984 decot 300 1984_decot.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
12 1984 laman null .winner.json jwinner null json json false null null
13 1984 laman 10 index.html readme2index null html html true browser click here first
14 1984 laman 300 1984_laman.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
15 1984 mullender null .winner.json jwinner null json json false null null
16 1984 mullender 10 index.html readme2index null html html true browser click here first
17 1984 mullender 300 1984_mullender.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
18 1985 applin null .winner.json jwinner null json json false null null
19 1985 applin 10 index.html readme2index null html html true browser click here first
20 1985 applin 300 1985_applin.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
21 1985 august null .winner.json jwinner null json json false null null
22 1985 august 10 index.html readme2index null html html true browser click here first
23 1985 august 300 1985_august.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
24 1985 lycklama null .winner.json jwinner null json json false null null
25 1985 lycklama 10 index.html readme2index null html html true browser click here first
26 1985 lycklama 300 1985_lycklama.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
27 1985 shapiro null .winner.json jwinner null json json false null null
28 1985 shapiro 10 index.html readme2index null html html true browser click here first
29 1985 shapiro 300 1985_shapiro.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
30 1985 sicherman null .winner.json jwinner null json json false null null
31 1985 sicherman 10 index.html readme2index null html html true browser click here first
32 1985 sicherman 300 1985_sicherman.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
33 1986 applin null .winner.json jwinner null json json false null null
34 1986 applin 10 index.html readme2index null html html true browser click here first
35 1986 applin 300 1986_applin.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
36 1986 august null .winner.json jwinner null json json false null null
37 1986 august 10 index.html readme2index null html html true browser click here first
38 1986 august 300 1986_august.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
39 1986 bright null .winner.json jwinner null json json false null null
40 1986 bright 10 index.html readme2index null html html true browser click here first
41 1986 bright 300 1986_bright.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
42 1986 hague null .winner.json jwinner null json json false null null
43 1986 hague 10 index.html readme2index null html html true browser click here first
44 1986 hague 300 1986_hague.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
45 1986 holloway null .winner.json jwinner null json json false null null
46 1986 holloway 10 index.html readme2index null html html true browser click here first
47 1986 holloway 300 1986_holloway.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
48 1986 marshall null .winner.json jwinner null json json false null null
49 1986 marshall 10 index.html readme2index null html html true browser click here first
50 1986 marshall 300 1986_marshall.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
51 1986 pawka null .winner.json jwinner null json json false null null
52 1986 pawka 10 index.html readme2index null html html true browser click here first
53 1986 pawka 300 1986_pawka.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
54 1986 stein null .winner.json jwinner null json json false null null
55 1986 stein 10 index.html readme2index null html html true browser click here first
56 1986 stein 300 1986_stein.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
57 1986 wall null .winner.json jwinner null json json false null null
58 1986 wall 10 index.html readme2index null html html true browser click here first
59 1986 wall 300 1986_wall.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
60 1987 biggar null .winner.json jwinner null json json false null null
61 1987 biggar 10 index.html readme2index null html html true browser click here first
62 1987 biggar 300 1987_biggar.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
63 1987 heckbert null .winner.json jwinner null json json false null null
64 1987 heckbert 10 index.html readme2index null html html true browser click here first
65 1987 heckbert 300 1987_heckbert.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
66 1987 hines null .winner.json jwinner null json json false null null
67 1987 hines 10 index.html readme2index null html html true browser click here first
68 1987 hines 300 1987_hines.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
69 1987 korn null .winner.json jwinner null json json false null null
70 1987 korn 10 index.html readme2index null html html true browser click here first
71 1987 korn 300 1987_korn.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
72 1987 lievaart null .winner.json jwinner null json json false null null
73 1987 lievaart 10 index.html readme2index null html html true browser click here first
74 1987 lievaart 300 1987_lievaart.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
75 1987 wall null .winner.json jwinner null json json false null null
76 1987 wall 10 index.html readme2index null html html true browser click here first
77 1987 wall 300 1987_wall.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
78 1987 westley null .winner.json jwinner null json json false null null
79 1987 westley 10 index.html readme2index null html html true browser click here first
80 1987 westley 300 1987_westley.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
81 1988 applin null .winner.json jwinner null json json false null null
82 1988 applin 10 index.html readme2index null html html true browser click here first
83 1988 applin 300 1988_applin.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
84 1988 dale null .winner.json jwinner null json json false null null
85 1988 dale 10 index.html readme2index null html html true browser click here first
86 1988 dale 300 1988_dale.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
87 1988 isaak null .winner.json jwinner null json json false null null
88 1988 isaak 10 index.html readme2index null html html true browser click here first
89 1988 isaak 300 1988_isaak.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
90 1988 litmaath null .winner.json jwinner null json json false null null
91 1988 litmaath 10 index.html readme2index null html html true browser click here first
92 1988 litmaath 300 1988_litmaath.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
93 1988 phillipps null .winner.json jwinner null json json false null null
94 1988 phillipps 10 index.html readme2index null html html true browser click here first
95 1988 phillipps 300 1988_phillipps.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
96 1988 reddy null .winner.json jwinner null json json false null null
97 1988 reddy 10 index.html readme2index null html html true browser click here first
98 1988 reddy 300 1988_reddy.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
99 1988 robison null .winner.json jwinner null json json false null null
100 1988 robison 10 index.html readme2index null html html true browser click here first
101 1988 robison 300 1988_robison.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
102 1988 spinellis null .winner.json jwinner null json json false null null
103 1988 spinellis 10 index.html readme2index null html html true browser click here first
104 1988 spinellis 300 1988_spinellis.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
105 1988 westley null .winner.json jwinner null json json false null null
106 1988 westley 10 index.html readme2index null html html true browser click here first
107 1988 westley 300 1988_westley.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
108 1989 fubar null .winner.json jwinner null json json false null null
109 1989 fubar 10 index.html readme2index null html html true browser click here first
110 1989 fubar 300 1989_fubar.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
111 1989 jar.1 null .winner.json jwinner null json json false null null
112 1989 jar.1 10 index.html readme2index null html html true browser click here first
113 1989 jar.1 300 1989_jar.1.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
114 1989 jar.2 null .winner.json jwinner null json json false null null
115 1989 jar.2 10 index.html readme2index null html html true browser click here first
116 1989 jar.2 300 1989_jar.2.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
117 1989 ovdluhe null .winner.json jwinner null json json false null null
118 1989 ovdluhe 10 index.html readme2index null html html true browser click here first
119 1989 ovdluhe 300 1989_ovdluhe.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
120 1989 paul null .winner.json jwinner null json json false null null
121 1989 paul 10 index.html readme2index null html html true browser click here first
122 1989 paul 300 1989_paul.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
123 1989 robison null .winner.json jwinner null json json false null null
124 1989 robison 10 index.html readme2index null html html true browser click here first
125 1989 robison 300 1989_robison.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
126 1989 roemer null .winner.json jwinner null json json false null null
127 1989 roemer 10 index.html readme2index null html html true browser click here first
128 1989 roemer 300 1989_roemer.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
129 1989 tromp null .winner.json jwinner null json json false null null
130 1989 tromp 10 index.html readme2index null html html true browser click here first
131 1989 tromp 300 1989_tromp.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
132 1989 vanb null .winner.json jwinner null json json false null null
133 1989 vanb 10 index.html readme2index null html html true browser click here first
134 1989 vanb 300 1989_vanb.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
135 1989 westley null .winner.json jwinner null json json false null null
136 1989 westley 10 index.html readme2index null html html true browser click here first
137 1989 westley 300 1989_westley.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
138 1990 baruch null .winner.json jwinner null json json false null null
139 1990 baruch 10 index.html readme2index null html html true browser click here first
140 1990 baruch 300 1990_baruch.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
141 1990 cmills null .winner.json jwinner null json json false null null
142 1990 cmills 10 index.html readme2index null html html true browser click here first
143 1990 cmills 300 1990_cmills.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
144 1990 dds null .winner.json jwinner null json json false null null
145 1990 dds 10 index.html readme2index null html html true browser click here first
146 1990 dds 300 1990_dds.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
147 1990 dg null .winner.json jwinner null json json false null null
148 1990 dg 10 index.html readme2index null html html true browser click here first
149 1990 dg 300 1990_dg.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
150 1990 jaw null .winner.json jwinner null json json false null null
151 1990 jaw 10 index.html readme2index null html html true browser click here first
152 1990 jaw 300 1990_jaw.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
153 1990 pjr null .winner.json jwinner null json json false null null
154 1990 pjr 10 index.html readme2index null html html true browser click here first
155 1990 pjr 300 1990_pjr.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
156 1990 scjones null .winner.json jwinner null json json false null null
157 1990 scjones 10 index.html readme2index null html html true browser click here first
158 1990 scjones 300 1990_scjones.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
159 1990 stig null .winner.json jwinner null json json false null null
160 1990 stig 10 index.html readme2index null html html true browser click here first
161 1990 stig 300 1990_stig.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
162 1990 tbr null .winner.json jwinner null json json false null null
163 1990 tbr 10 index.html readme2index null html html true browser click here first
164 1990 tbr 300 1990_tbr.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
165 1990 theorem null .winner.json jwinner null json json false null null
166 1990 theorem 10 index.html readme2index null html html true browser click here first
167 1990 theorem 300 1990_theorem.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
168 1990 westley null .winner.json jwinner null json json false null null
169 1990 westley 10 index.html readme2index null html html true browser click here first
170 1990 westley 300 1990_westley.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
171 1991 ant null .winner.json jwinner null json json false null null
172 1991 ant 10 index.html readme2index null html html true browser click here first
173 1991 ant 300 1991_ant.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
174 1991 brnstnd null .winner.json jwinner null json json false null null
175 1991 brnstnd 10 index.html readme2index null html html true browser click here first
176 1991 brnstnd 100 sorta.README.html md2html null html html true browser SORTA language infomation
177 1991 brnstnd 300 1991_brnstnd.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
178 1991 buzzard null .winner.json jwinner null json json false null null
179 1991 buzzard 10 index.html readme2index null html html true browser click here first
180 1991 buzzard 300 1991_buzzard.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
181 1991 cdupont null .winner.json jwinner null json json false null null
182 1991 cdupont 10 index.html readme2index null html html true browser click here first
183 1991 cdupont 300 1991_cdupont.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
184 1991 davidguy null .winner.json jwinner null json json false null null
185 1991 davidguy 10 index.html readme2index null html html true browser click here first
186 1991 davidguy 300 1991_davidguy.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
187 1991 dds null .winner.json jwinner null json json false null null
188 1991 dds 10 index.html readme2index null html html true browser click here first
189 1991 dds 300 1991_dds.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
190 1991 fine null .winner.json jwinner null json json false null null
191 1991 fine 10 index.html readme2index null html html true browser click here first
192 1991 fine 300 1991_fine.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
193 1991 rince null .winner.json jwinner null json json false null null
194 1991 rince 10 index.html readme2index null html html true browser click here first
195 1991 rince 300 1991_rince.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
196 1991 westley null .winner.json jwinner null json json false null null
197 1991 westley 10 index.html readme2index null html html true browser click here first
198 1991 westley 300 1991_westley.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
199 1992 adrian null .winner.json jwinner null json json false null null
200 1992 adrian 10 index.html readme2index null html html true browser click here first
201 1992 adrian 300 1992_adrian.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
202 1992 albert null .winner.json jwinner null json json false null null
203 1992 albert 10 index.html readme2index null html html true browser click here first
204 1992 albert 300 1992_albert.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
205 1992 ant null .winner.json jwinner null json json false null null
206 1992 ant 10 index.html readme2index null html html true browser click here first
207 1992 ant 300 1992_ant.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
208 1992 buzzard.1 null .winner.json jwinner null json json false null null
209 1992 buzzard.1 10 index.html readme2index null html html true browser click here first
210 1992 buzzard.1 300 1992_buzzard.1.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
211 1992 buzzard.2 null .winner.json jwinner null json json false null null
212 1992 buzzard.2 10 index.html readme2index null html html true browser click here first
213 1992 buzzard.2 100 buzzard.2.README.html md2html null html html true browser author description of files
214 1992 buzzard.2 300 1992_buzzard.2.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
215 1992 gson null .winner.json jwinner null json json false null null
216 1992 gson 10 index.html readme2index null html html true browser click here first
217 1992 gson 300 1992_gson.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
218 1992 imc null .winner.json jwinner null json json false null null
219 1992 imc 10 index.html readme2index null html html true browser click here first
220 1992 imc 300 1992_imc.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
221 1992 kivinen null .winner.json jwinner null json json false null null
222 1992 kivinen 10 index.html readme2index null html html true browser click here first
223 1992 kivinen 300 1992_kivinen.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
224 1992 lush null .winner.json jwinner null json json false null null
225 1992 lush 10 index.html readme2index null html html true browser click here first
226 1992 lush 300 1992_lush.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
227 1992 marangon null .winner.json jwinner null json json false null null
228 1992 marangon 10 index.html readme2index null html html true browser click here first
229 1992 marangon 300 1992_marangon.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
230 1992 nathan null .winner.json jwinner null json json false null null
231 1992 nathan 10 index.html readme2index null html html true browser click here first
232 1992 nathan 300 1992_nathan.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
233 1992 vern null .winner.json jwinner null json json false null null
234 1992 vern 10 index.html readme2index null html html true browser click here first
235 1992 vern 300 1992_vern.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
236 1992 westley null .winner.json jwinner null json json false null null
237 1992 westley 10 index.html readme2index null html html true browser click here first
238 1992 westley 300 1992_westley.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
239 1993 ant null .winner.json jwinner null json json false null null
240 1993 ant 10 index.html readme2index null html html true browser click here first
241 1993 ant 300 1993_ant.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
242 1993 cmills null .winner.json jwinner null json json false null null
243 1993 cmills 10 index.html readme2index null html html true browser click here first
244 1993 cmills 300 1993_cmills.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
245 1993 dgibson null .winner.json jwinner null json json false null null
246 1993 dgibson 10 index.html readme2index null html html true browser click here first
247 1993 dgibson 300 1993_dgibson.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
248 1993 ejb null .winner.json jwinner null json json false null null
249 1993 ejb 10 index.html readme2index null html html true browser click here first
250 1993 ejb 100 hanoi.html md2html null html html true browser about the Towers of Hanoi puzzle
251 1993 ejb 100 patience.html md2html null html html true browser about the Patience puzzle
252 1993 ejb 300 1993_ejb.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
253 1993 jonth null .winner.json jwinner null json json false null null
254 1993 jonth 10 index.html readme2index null html html true browser click here first
255 1993 jonth 300 1993_jonth.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
256 1993 leo null .winner.json jwinner null json json false null null
257 1993 leo 10 index.html readme2index null html html true browser click here first
258 1993 leo 300 1993_leo.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
259 1993 lmfjyh null .winner.json jwinner null json json false null null
260 1993 lmfjyh 10 index.html readme2index null html html true browser click here first
261 1993 lmfjyh 300 1993_lmfjyh.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
262 1993 plummer null .winner.json jwinner null json json false null null
263 1993 plummer 10 index.html readme2index null html html true browser click here first
264 1993 plummer 300 1993_plummer.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
265 1993 rince null .winner.json jwinner null json json false null null
266 1993 rince 10 index.html readme2index null html html true browser click here first
267 1993 rince 100 design.html md2html null html html true browser implementation notes
268 1993 rince 300 1993_rince.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
269 1993 schnitzi null .winner.json jwinner null json json false null null
270 1993 schnitzi 10 index.html readme2index null html html true browser click here first
271 1993 schnitzi 300 1993_schnitzi.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
272 1993 vanb null .winner.json jwinner null json json false null null
273 1993 vanb 10 index.html readme2index null html html true browser click here first
274 1993 vanb 300 1993_vanb.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
275 1994 dodsond1 null .winner.json jwinner null json json false null null
276 1994 dodsond1 10 index.html readme2index null html html true browser click here first
277 1994 dodsond1 300 1994_dodsond1.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
278 1994 dodsond2 null .winner.json jwinner null json json false null null
279 1994 dodsond2 10 index.html readme2index null html html true browser click here first
280 1994 dodsond2 300 1994_dodsond2.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
281 1994 horton null .winner.json jwinner null json json false null null
282 1994 horton 10 index.html readme2index null html html true browser click here first
283 1994 horton 300 1994_horton.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
284 1994 imc null .winner.json jwinner null json json false null null
285 1994 imc 10 index.html readme2index null html html true browser click here first
286 1994 imc 300 1994_imc.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
287 1994 ldb null .winner.json jwinner null json json false null null
288 1994 ldb 10 index.html readme2index null html html true browser click here first
289 1994 ldb 300 1994_ldb.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
290 1994 schnitzi null .winner.json jwinner null json json false null null
291 1994 schnitzi 10 index.html readme2index null html html true browser click here first
292 1994 schnitzi 300 1994_schnitzi.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
293 1994 shapiro null .winner.json jwinner null json json false null null
294 1994 shapiro 10 index.html readme2index null html html true browser click here first
295 1994 shapiro 100 shapiro.html md2html null html html true browser author hints
296 1994 shapiro 300 1994_shapiro.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
297 1994 smr null .winner.json jwinner null json json false null null
298 1994 smr 10 index.html readme2index null html html true browser click here first
299 1994 smr 300 1994_smr.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
300 1994 tvr null .winner.json jwinner null json json false null null
301 1994 tvr 10 index.html readme2index null html html true browser click here first
302 1994 tvr 300 1994_tvr.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
303 1994 weisberg null .winner.json jwinner null json json false null null
304 1994 weisberg 10 index.html readme2index null html html true browser click here first
305 1994 weisberg 300 1994_weisberg.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
306 1994 westley null .winner.json jwinner null json json false null null
307 1994 westley 10 index.html readme2index null html html true browser click here first
308 1994 westley 300 1994_westley.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
309 1995 cdua null .winner.json jwinner null json json false null null
310 1995 cdua 10 index.html readme2index null html html true browser click here first
311 1995 cdua 300 1995_cdua.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
312 1995 dodsond1 null .winner.json jwinner null json json false null null
313 1995 dodsond1 10 index.html readme2index null html html true browser click here first
314 1995 dodsond1 300 1995_dodsond1.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
315 1995 dodsond2 null .winner.json jwinner null json json false null null
316 1995 dodsond2 10 index.html readme2index null html html true browser click here first
317 1995 dodsond2 300 1995_dodsond2.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
318 1995 esde null .winner.json jwinner null json json false null null
319 1995 esde 10 index.html readme2index null html html true browser click here first
320 1995 esde 300 1995_esde.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
321 1995 garry null .winner.json jwinner null json json false null null
322 1995 garry 10 index.html readme2index null html html true browser click here first
323 1995 garry 300 1995_garry.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
324 1995 heathbar null .winner.json jwinner null json json false null null
325 1995 heathbar 10 index.html readme2index null html html true browser click here first
326 1995 heathbar 300 1995_heathbar.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
327 1995 leo null .winner.json jwinner null json json false null null
328 1995 leo 10 index.html readme2index null html html true browser click here first
329 1995 leo 300 1995_leo.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
330 1995 makarios null .winner.json jwinner null json json false null null
331 1995 makarios 10 index.html readme2index null html html true browser click here first
332 1995 makarios 300 1995_makarios.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
333 1995 savastio null .winner.json jwinner null json json false null null
334 1995 savastio 10 index.html readme2index null html html true browser click here first
335 1995 savastio 300 1995_savastio.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
336 1995 schnitzi null .winner.json jwinner null json json false null null
337 1995 schnitzi 10 index.html readme2index null html html true browser click here first
338 1995 schnitzi 300 1995_schnitzi.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
339 1995 spinellis null .winner.json jwinner null json json false null null
340 1995 spinellis 10 index.html readme2index null html html true browser click here first
341 1995 spinellis 300 1995_spinellis.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
342 1995 vanschnitz null .winner.json jwinner null json json false null null
343 1995 vanschnitz 10 index.html readme2index null html html true browser click here first
344 1995 vanschnitz 300 1995_vanschnitz.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
345 1996 august null .winner.json jwinner null json json false null null
346 1996 august 10 index.html readme2index null html html true browser click here first
347 1996 august 300 1996_august.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
348 1996 dalbec null .winner.json jwinner null json json false null null
349 1996 dalbec 10 index.html readme2index null html html true browser click here first
350 1996 dalbec 300 1996_dalbec.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
351 1996 eldby null .winner.json jwinner null json json false null null
352 1996 eldby 10 index.html readme2index null html html true browser click here first
353 1996 eldby 300 1996_eldby.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
354 1996 gandalf null .winner.json jwinner null json json false null null
355 1996 gandalf 10 index.html readme2index null html html true browser click here first
356 1996 gandalf 300 1996_gandalf.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
357 1996 huffman null .winner.json jwinner null json json false null null
358 1996 huffman 10 index.html readme2index null html html true browser click here first
359 1996 huffman 300 1996_huffman.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
360 1996 jonth null .winner.json jwinner null json json false null null
361 1996 jonth 10 index.html readme2index null html html true browser click here first
362 1996 jonth 300 1996_jonth.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
363 1996 rcm null .winner.json jwinner null json json false null null
364 1996 rcm 10 index.html readme2index null html html true browser click here first
365 1996 rcm 300 1996_rcm.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
366 1996 schweikh1 null .winner.json jwinner null json json false null null
367 1996 schweikh1 10 index.html readme2index null html html true browser click here first
368 1996 schweikh1 300 1996_schweikh1.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
369 1996 schweikh2 null .winner.json jwinner null json json false null null
370 1996 schweikh2 10 index.html readme2index null html html true browser click here first
371 1996 schweikh2 300 1996_schweikh2.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
372 1996 schweikh3 null .winner.json jwinner null json json false null null
373 1996 schweikh3 10 index.html readme2index null html html true browser click here first
374 1996 schweikh3 300 1996_schweikh3.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
375 1996 westley null .winner.json jwinner null json json false null null
376 1996 westley 10 index.html readme2index null html html true browser click here first
377 1996 westley 300 1996_westley.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
378 1998 banks null .winner.json jwinner null json json false null null
379 1998 banks 10 index.html readme2index null html html true browser click here first
380 1998 banks 300 1998_banks.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
381 1998 bas1 null .winner.json jwinner null json json false null null
382 1998 bas1 10 index.html readme2index null html html true browser click here first
383 1998 bas1 300 1998_bas1.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
384 1998 bas2 null .winner.json jwinner null json json false null null
385 1998 bas2 10 index.html readme2index null html html true browser click here first
386 1998 bas2 300 1998_bas2.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
387 1998 chaos null .winner.json jwinner null json json false null null
388 1998 chaos 10 index.html readme2index null html html true browser click here first
389 1998 chaos 300 1998_chaos.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
390 1998 df null .winner.json jwinner null json json false null null
391 1998 df 10 index.html readme2index null html html true browser click here first
392 1998 df 300 1998_df.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
393 1998 dlowe null .winner.json jwinner null json json false null null
394 1998 dlowe 10 index.html readme2index null html html true browser click here first
395 1998 dlowe 300 1998_dlowe.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
396 1998 dloweneil null .winner.json jwinner null json json false null null
397 1998 dloweneil 10 index.html readme2index null html html true browser click here first
398 1998 dloweneil 300 1998_dloweneil.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
399 1998 dorssel null .winner.json jwinner null json json false null null
400 1998 dorssel 10 index.html readme2index null html html true browser click here first
401 1998 dorssel 100 dorssel.html md2html null html html true browser author description of entry
402 1998 dorssel 300 1998_dorssel.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
403 1998 fanf null .winner.json jwinner null json json false null null
404 1998 fanf 10 index.html readme2index null html html true browser click here first
405 1998 fanf 300 1998_fanf.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
406 1998 schnitzi null .winner.json jwinner null json json false null null
407 1998 schnitzi 10 index.html readme2index null html html true browser click here first
408 1998 schnitzi 300 1998_schnitzi.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
409 1998 schweikh1 null .winner.json jwinner null json json false null null
410 1998 schweikh1 10 index.html readme2index null html html true browser click here first
411 1998 schweikh1 300 1998_schweikh1.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
412 1998 schweikh2 null .winner.json jwinner null json json false null null
413 1998 schweikh2 10 index.html readme2index null html html true browser click here first
414 1998 schweikh2 300 1998_schweikh2.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
415 1998 schweikh3 null .winner.json jwinner null json json false null null
416 1998 schweikh3 10 index.html readme2index null html html true browser click here first
417 1998 schweikh3 300 1998_schweikh3.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
418 1998 tomtorfs null .winner.json jwinner null json json false null null
419 1998 tomtorfs 10 index.html readme2index null html html true browser click here first
420 1998 tomtorfs 300 1998_tomtorfs.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
421 2000 anderson null .winner.json jwinner null json json false null null
422 2000 anderson 10 index.html readme2index null html html true browser click here first
423 2000 anderson 300 2000_anderson.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
424 2000 bellard null .winner.json jwinner null json json false null null
425 2000 bellard 10 index.html readme2index null html html true browser click here first
426 2000 bellard 300 2000_bellard.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
427 2000 bmeyer null .winner.json jwinner null json json false null null
428 2000 bmeyer 10 index.html readme2index null html html true browser click here first
429 2000 bmeyer 300 2000_bmeyer.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
430 2000 briddlebane null .winner.json jwinner null json json false null null
431 2000 briddlebane 10 index.html readme2index null html html true browser click here first
432 2000 briddlebane 300 2000_briddlebane.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
433 2000 dhyang null .winner.json jwinner null json json false null null
434 2000 dhyang 10 index.html readme2index null html html true browser click here first
435 2000 dhyang 300 2000_dhyang.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
436 2000 dlowe null .winner.json jwinner null json json false null null
437 2000 dlowe 10 index.html readme2index null html html true browser click here first
438 2000 dlowe 300 2000_dlowe.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
439 2000 jarijyrki null .winner.json jwinner null json json false null null
440 2000 jarijyrki 10 index.html readme2index null html html true browser click here first
441 2000 jarijyrki 300 2000_jarijyrki.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
442 2000 natori null .winner.json jwinner null json json false null null
443 2000 natori 10 index.html readme2index null html html true browser click here first
444 2000 natori 300 2000_natori.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
445 2000 primenum null .winner.json jwinner null json json false null null
446 2000 primenum 10 index.html readme2index null html html true browser click here first
447 2000 primenum 300 2000_primenum.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
448 2000 rince null .winner.json jwinner null json json false null null
449 2000 rince 10 index.html readme2index null html html true browser click here first
450 2000 rince 300 2000_rince.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
451 2000 robison null .winner.json jwinner null json json false null null
452 2000 robison 10 index.html readme2index null html html true browser click here first
453 2000 robison 300 2000_robison.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
454 2000 schneiderwent null .winner.json jwinner null json json false null null
455 2000 schneiderwent 10 index.html readme2index null html html true browser click here first
456 2000 schneiderwent 300 2000_schneiderwent.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
457 2000 thadgavin null .winner.json jwinner null json json false null null
458 2000 thadgavin 10 index.html readme2index null html html true browser click here first
459 2000 thadgavin 300 2000_thadgavin.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
460 2000 tomx null .winner.json jwinner null json json false null null
461 2000 tomx 10 index.html readme2index null html html true browser click here first
462 2000 tomx 300 2000_tomx.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
463 2001 anonymous null .winner.json jwinner null json json false null null
464 2001 anonymous 10 index.html readme2index null html html true browser click here first
465 2001 anonymous 300 2001_anonymous.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
466 2001 bellard null .winner.json jwinner null json json false null null
467 2001 bellard 10 index.html readme2index null html html true browser click here first
468 2001 bellard 300 2001_bellard.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
469 2001 cheong null .winner.json jwinner null json json false null null
470 2001 cheong 10 index.html readme2index null html html true browser click here first
471 2001 cheong 300 2001_cheong.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
472 2001 coupard null .winner.json jwinner null json json false null null
473 2001 coupard 10 index.html readme2index null html html true browser click here first
474 2001 coupard 300 2001_coupard.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
475 2001 ctk null .winner.json jwinner null json json false null null
476 2001 ctk 10 index.html readme2index null html html true browser click here first
477 2001 ctk 300 2001_ctk.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
478 2001 dgbeards null .winner.json jwinner null json json false null null
479 2001 dgbeards 10 index.html readme2index null html html true browser click here first
480 2001 dgbeards 300 2001_dgbeards.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
481 2001 herrmann1 null .winner.json jwinner null json json false null null
482 2001 herrmann1 10 index.html readme2index null html html true browser click here first
483 2001 herrmann1 300 2001_herrmann1.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
484 2001 herrmann2 null .winner.json jwinner null json json false null null
485 2001 herrmann2 10 index.html readme2index null html html true browser click here first
486 2001 herrmann2 300 2001_herrmann2.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
487 2001 jason null .winner.json jwinner null json json false null null
488 2001 jason 10 index.html readme2index null html html true browser click here first
489 2001 jason 300 2001_jason.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
490 2001 kev null .winner.json jwinner null json json false null null
491 2001 kev 10 index.html readme2index null html html true browser click here first
492 2001 kev 300 2001_kev.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
493 2001 ollinger null .winner.json jwinner null json json false null null
494 2001 ollinger 10 index.html readme2index null html html true browser click here first
495 2001 ollinger 300 2001_ollinger.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
496 2001 rosten null .winner.json jwinner null json json false null null
497 2001 rosten 10 index.html readme2index null html html true browser click here first
498 2001 rosten 300 2001_rosten.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
499 2001 schweikh null .winner.json jwinner null json json false null null
500 2001 schweikh 10 index.html readme2index null html html true browser click here first
501 2001 schweikh 300 2001_schweikh.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
502 2001 westley null .winner.json jwinner null json json false null null
503 2001 westley 10 index.html readme2index null html html true browser click here first
504 2001 westley 300 2001_westley.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
505 2001 williams null .winner.json jwinner null json json false null null
506 2001 williams 10 index.html readme2index null html html true browser click here first
507 2001 williams 300 2001_williams.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
508 2004 anonymous null .winner.json jwinner null json json false null null
509 2004 anonymous 10 index.html readme2index null html html true browser click here first
510 2004 anonymous 300 2004_anonymous.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
511 2004 arachnid null .winner.json jwinner null json json false null null
512 2004 arachnid 10 index.html readme2index null html html true browser click here first
513 2004 arachnid 300 2004_arachnid.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
514 2004 burley null .winner.json jwinner null json json false null null
515 2004 burley 10 index.html readme2index null html html true browser click here first
516 2004 burley 300 2004_burley.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
517 2004 gavare null .winner.json jwinner null json json false null null
518 2004 gavare 10 index.html readme2index null html html true browser click here first
519 2004 gavare 300 2004_gavare.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
520 2004 gavin null .winner.json jwinner null json json false null null
521 2004 gavin 10 index.html readme2index null html html true browser click here first
522 2004 gavin 100 gavin.html md2html null html html true browser author usage guide
523 2004 gavin 300 2004_gavin.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
524 2004 hibachi null .winner.json jwinner null json json false null null
525 2004 hibachi 10 index.html readme2index null html html true browser click here first
526 2004 hibachi 300 2004_hibachi.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
527 2004 hoyle null .winner.json jwinner null json json false null null
528 2004 hoyle 10 index.html readme2index null html html true browser click here first
529 2004 hoyle 300 2004_hoyle.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
530 2004 jdalbec null .winner.json jwinner null json json false null null
531 2004 jdalbec 10 index.html readme2index null html html true browser click here first
532 2004 jdalbec 300 2004_jdalbec.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
533 2004 kopczynski null .winner.json jwinner null json json false null null
534 2004 kopczynski 10 index.html readme2index null html html true browser click here first
535 2004 kopczynski 300 2004_kopczynski.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
536 2004 newbern null .winner.json jwinner null json json false null null
537 2004 newbern 10 index.html readme2index null html html true browser click here first
538 2004 newbern 300 2004_newbern.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
539 2004 omoikane null .winner.json jwinner null json json false null null
540 2004 omoikane 10 index.html readme2index null html html true browser click here first
541 2004 omoikane 300 2004_omoikane.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
542 2004 schnitzi null .winner.json jwinner null json json false null null
543 2004 schnitzi 10 index.html readme2index null html html true browser click here first
544 2004 schnitzi 300 2004_schnitzi.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
545 2004 sds null .winner.json jwinner null json json false null null
546 2004 sds 10 index.html readme2index null html html true browser click here first
547 2004 sds 300 2004_sds.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
548 2004 vik1 null .winner.json jwinner null json json false null null
549 2004 vik1 10 index.html readme2index null html html true browser click here first
550 2004 vik1 300 2004_vik1.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
551 2004 vik2 null .winner.json jwinner null json json false null null
552 2004 vik2 10 index.html readme2index null html html true browser click here first
553 2004 vik2 300 2004_vik2.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
554 2005 aidan null .winner.json jwinner null json json false null null
555 2005 aidan 10 index.html readme2index null html html true browser click here first
556 2005 aidan 300 2005_aidan.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
557 2005 anon null .winner.json jwinner null json json false null null
558 2005 anon 10 index.html readme2index null html html true browser click here first
559 2005 anon 300 2005_anon.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
560 2005 boutines null .winner.json jwinner null json json false null null
561 2005 boutines 10 index.html readme2index null html html true browser click here first
562 2005 boutines 300 2005_boutines.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
563 2005 chia null .winner.json jwinner null json json false null null
564 2005 chia 10 index.html readme2index null html html true browser click here first
565 2005 chia 300 2005_chia.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
566 2005 giljade null .winner.json jwinner null json json false null null
567 2005 giljade 10 index.html readme2index null html html true browser click here first
568 2005 giljade 300 2005_giljade.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
569 2005 jetro null .winner.json jwinner null json json false null null
570 2005 jetro 10 index.html readme2index null html html true browser click here first
571 2005 jetro 300 2005_jetro.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
572 2005 klausler null .winner.json jwinner null json json false null null
573 2005 klausler 10 index.html readme2index null html html true browser click here first
574 2005 klausler 300 2005_klausler.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
575 2005 mikeash null .winner.json jwinner null json json false null null
576 2005 mikeash 10 index.html readme2index null html html true browser click here first
577 2005 mikeash 300 2005_mikeash.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
578 2005 mynx null .winner.json jwinner null json json false null null
579 2005 mynx 10 index.html readme2index null html html true browser click here first
580 2005 mynx 300 2005_mynx.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
581 2005 persano null .winner.json jwinner null json json false null null
582 2005 persano 10 index.html readme2index null html html true browser click here first
583 2005 persano 300 2005_persano.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
584 2005 sykes null .winner.json jwinner null json json false null null
585 2005 sykes 10 index.html readme2index null html html true browser click here first
586 2005 sykes 300 2005_sykes.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
587 2005 timwi null .winner.json jwinner null json json false null null
588 2005 timwi 10 index.html readme2index null html html true browser click here first
589 2005 timwi 300 2005_timwi.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
590 2005 toledo null .winner.json jwinner null json json false null null
591 2005 toledo 10 index.html readme2index null html html true browser click here first
592 2005 toledo 300 2005_toledo.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
593 2005 vik null .winner.json jwinner null json json false null null
594 2005 vik 10 index.html readme2index null html html true browser click here first
595 2005 vik 300 2005_vik.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
596 2005 vince null .winner.json jwinner null json json false null null
597 2005 vince 10 index.html readme2index null html html true browser click here first
598 2005 vince 300 2005_vince.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
599 2006 birken null .winner.json jwinner null json json false null null
600 2006 birken 10 index.html readme2index null html html true browser click here first
601 2006 birken 300 2006_birken.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
602 2006 borsanyi null .winner.json jwinner null json json false null null
603 2006 borsanyi 10 index.html readme2index null html html true browser click here first
604 2006 borsanyi 300 2006_borsanyi.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
605 2006 grothe null .winner.json jwinner null json json false null null
606 2006 grothe 10 index.html readme2index null html html true browser click here first
607 2006 grothe 300 2006_grothe.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
608 2006 hamre null .winner.json jwinner null json json false null null
609 2006 hamre 10 index.html readme2index null html html true browser click here first
610 2006 hamre 300 2006_hamre.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
611 2006 meyer null .winner.json jwinner null json json false null null
612 2006 meyer 10 index.html readme2index null html html true browser click here first
613 2006 meyer 300 2006_meyer.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
614 2006 monge null .winner.json jwinner null json json false null null
615 2006 monge 10 index.html readme2index null html html true browser click here first
616 2006 monge 300 2006_monge.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
617 2006 night null .winner.json jwinner null json json false null null
618 2006 night 10 index.html readme2index null html html true browser click here first
619 2006 night 300 2006_night.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
620 2006 sloane null .winner.json jwinner null json json false null null
621 2006 sloane 10 index.html readme2index null html html true browser click here first
622 2006 sloane 300 2006_sloane.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
623 2006 stewart null .winner.json jwinner null json json false null null
624 2006 stewart 10 index.html readme2index null html html true browser click here first
625 2006 stewart 300 2006_stewart.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
626 2006 sykes1 null .winner.json jwinner null json json false null null
627 2006 sykes1 10 index.html readme2index null html html true browser click here first
628 2006 sykes1 300 2006_sykes1.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
629 2006 sykes2 null .winner.json jwinner null json json false null null
630 2006 sykes2 10 index.html readme2index null html html true browser click here first
631 2006 sykes2 300 2006_sykes2.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
632 2006 toledo1 null .winner.json jwinner null json json false null null
633 2006 toledo1 10 index.html readme2index null html html true browser click here first
634 2006 toledo1 300 2006_toledo1.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
635 2006 toledo2 null .winner.json jwinner null json json false null null
636 2006 toledo2 10 index.html readme2index null html html true browser click here first
637 2006 toledo2 300 2006_toledo2.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
638 2006 toledo3 null .winner.json jwinner null json json false null null
639 2006 toledo3 10 index.html readme2index null html html true browser click here first
640 2006 toledo3 300 2006_toledo3.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
641 2011 akari null .winner.json jwinner null json json false null null
642 2011 akari 10 index.html readme2index null html html true browser click here first
643 2011 akari 300 2011_akari.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
644 2011 blakely null .winner.json jwinner null json json false null null
645 2011 blakely 10 index.html readme2index null html html true browser click here first
646 2011 blakely 300 2011_blakely.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
647 2011 borsanyi null .winner.json jwinner null json json false null null
648 2011 borsanyi 10 index.html readme2index null html html true browser click here first
649 2011 borsanyi 300 2011_borsanyi.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
650 2011 dlowe null .winner.json jwinner null json json false null null
651 2011 dlowe 10 index.html readme2index null html html true browser click here first
652 2011 dlowe 300 2011_dlowe.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
653 2011 eastman null .winner.json jwinner null json json false null null
654 2011 eastman 10 index.html readme2index null html html true browser click here first
655 2011 eastman 300 2011_eastman.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
656 2011 fredriksson null .winner.json jwinner null json json false null null
657 2011 fredriksson 10 index.html readme2index null html html true browser click here first
658 2011 fredriksson 300 2011_fredriksson.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
659 2011 goren null .winner.json jwinner null json json false null null
660 2011 goren 10 index.html readme2index null html html true browser click here first
661 2011 goren 300 2011_goren.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
662 2011 hamaji null .winner.json jwinner null json json false null null
663 2011 hamaji 10 index.html readme2index null html html true browser click here first
664 2011 hamaji 300 2011_hamaji.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
665 2011 hou null .winner.json jwinner null json json false null null
666 2011 hou 10 index.html readme2index null html html true browser click here first
667 2011 hou 300 2011_hou.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
668 2011 konno null .winner.json jwinner null json json false null null
669 2011 konno 10 index.html readme2index null html html true browser click here first
670 2011 konno 300 2011_konno.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
671 2011 richards null .winner.json jwinner null json json false null null
672 2011 richards 10 index.html readme2index null html html true browser click here first
673 2011 richards 300 2011_richards.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
674 2011 toledo null .winner.json jwinner null json json false null null
675 2011 toledo 10 index.html readme2index null html html true browser click here first
676 2011 toledo 300 2011_toledo.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
677 2011 vik null .winner.json jwinner null json json false null null
678 2011 vik 10 index.html readme2index null html html true browser click here first
679 2011 vik 300 2011_vik.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
680 2011 zucker null .winner.json jwinner null json json false null null
681 2011 zucker 10 index.html readme2index null html html true browser click here first
682 2011 zucker 300 2011_zucker.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
683 2012 blakely null .winner.json jwinner null json json false null null
684 2012 blakely 10 index.html readme2index null html html true browser click here first
685 2012 blakely 300 2012_blakely.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
686 2012 deckmyn null .winner.json jwinner null json json false null null
687 2012 deckmyn 10 index.html readme2index null html html true browser click here first
688 2012 deckmyn 100 deckmyn.html md2html null html html true browser user manual
689 2012 deckmyn 300 2012_deckmyn.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
690 2012 dlowe null .winner.json jwinner null json json false null null
691 2012 dlowe 10 index.html readme2index null html html true browser click here first
692 2012 dlowe 300 2012_dlowe.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
693 2012 endoh1 null .winner.json jwinner null json json false null null
694 2012 endoh1 10 index.html readme2index null html html true browser click here first
695 2012 endoh1 300 2012_endoh1.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
696 2012 endoh2 null .winner.json jwinner null json json false null null
697 2012 endoh2 10 index.html readme2index null html html true browser click here first
698 2012 endoh2 300 2012_endoh2.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
699 2012 grothe null .winner.json jwinner null json json false null null
700 2012 grothe 10 index.html readme2index null html html true browser click here first
701 2012 grothe 300 2012_grothe.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
702 2012 hamano null .winner.json jwinner null json json false null null
703 2012 hamano 10 index.html readme2index null html html true browser click here first
704 2012 hamano 300 2012_hamano.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
705 2012 hou null .winner.json jwinner null json json false null null
706 2012 hou 10 index.html readme2index null html html true browser click here first
707 2012 hou 300 2012_hou.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
708 2012 kang null .winner.json jwinner null json json false null null
709 2012 kang 10 index.html readme2index null html html true browser click here first
710 2012 kang 300 2012_kang.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
711 2012 konno null .winner.json jwinner null json json false null null
712 2012 konno 10 index.html readme2index null html html true browser click here first
713 2012 konno 300 2012_konno.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
714 2012 omoikane null .winner.json jwinner null json json false null null
715 2012 omoikane 10 index.html readme2index null html html true browser click here first
716 2012 omoikane 300 2012_omoikane.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
717 2012 tromp null .winner.json jwinner null json json false null null
718 2012 tromp 10 index.html readme2index null html html true browser click here first
719 2012 tromp 100 how.html md2html null html html true browser author supplied spoiler
720 2012 tromp 300 2012_tromp.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
721 2012 vik null .winner.json jwinner null json json false null null
722 2012 vik 10 index.html readme2index null html html true browser click here first
723 2012 vik 300 2012_vik.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
724 2012 zeitak null .winner.json jwinner null json json false null null
725 2012 zeitak 10 index.html readme2index null html html true browser click here first
726 2012 zeitak 300 2012_zeitak.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
727 2013 birken null .winner.json jwinner null json json false null null
728 2013 birken 10 index.html readme2index null html html true browser click here first
729 2013 birken 300 2013_birken.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
730 2013 cable1 null .winner.json jwinner null json json false null null
731 2013 cable1 10 index.html readme2index null html html true browser click here first
732 2013 cable1 300 2013_cable1.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
733 2013 cable2 null .winner.json jwinner null json json false null null
734 2013 cable2 10 index.html readme2index null html html true browser click here first
735 2013 cable2 300 2013_cable2.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
736 2013 cable3 null .winner.json jwinner null json json false null null
737 2013 cable3 10 index.html readme2index null html html true browser click here first
738 2013 cable3 300 2013_cable3.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
739 2013 dlowe null .winner.json jwinner null json json false null null
740 2013 dlowe 10 index.html readme2index null html html true browser click here first
741 2013 dlowe 300 2013_dlowe.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
742 2013 endoh1 null .winner.json jwinner null json json false null null
743 2013 endoh1 10 index.html readme2index null html html true browser click here first
744 2013 endoh1 300 2013_endoh1.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
745 2013 endoh2 null .winner.json jwinner null json json false null null
746 2013 endoh2 10 index.html readme2index null html html true browser click here first
747 2013 endoh2 300 2013_endoh2.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
748 2013 endoh3 null .winner.json jwinner null json json false null null
749 2013 endoh3 10 index.html readme2index null html html true browser click here first
750 2013 endoh3 300 2013_endoh3.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
751 2013 endoh4 null .winner.json jwinner null json json false null null
752 2013 endoh4 10 index.html readme2index null html html true browser click here first
753 2013 endoh4 300 2013_endoh4.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
754 2013 hou null .winner.json jwinner null json json false null null
755 2013 hou 10 index.html readme2index null html html true browser click here first
756 2013 hou 100 doc/example.html md2html null html html true browser detailed information about entry
757 2013 hou 300 2013_hou.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
758 2013 mills null .winner.json jwinner null json json false null null
759 2013 mills 10 index.html readme2index null html html true browser click here first
760 2013 mills 300 2013_mills.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
761 2013 misaka null .winner.json jwinner null json json false null null
762 2013 misaka 10 index.html readme2index null html html true browser click here first
763 2013 misaka 300 2013_misaka.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
764 2013 morgan1 null .winner.json jwinner null json json false null null
765 2013 morgan1 10 index.html readme2index null html html true browser click here first
766 2013 morgan1 300 2013_morgan1.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
767 2013 morgan2 null .winner.json jwinner null json json false null null
768 2013 morgan2 10 index.html readme2index null html html true browser click here first
769 2013 morgan2 300 2013_morgan2.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
770 2013 robison null .winner.json jwinner null json json false null null
771 2013 robison 10 index.html readme2index null html html true browser click here first
772 2013 robison 300 2013_robison.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
773 2014 birken null .winner.json jwinner null json json false null null
774 2014 birken 10 index.html readme2index null html html true browser click here first
775 2014 birken 300 2014_birken.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
776 2014 deak null .winner.json jwinner null json json false null null
777 2014 deak 10 index.html readme2index null html html true browser click here first
778 2014 deak 300 2014_deak.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
779 2014 endoh1 null .winner.json jwinner null json json false null null
780 2014 endoh1 10 index.html readme2index null html html true browser click here first
781 2014 endoh1 100 read_me.html md2html null html html true browser about the Q(uine)R code generator
782 2014 endoh1 100 spoilers.html md2html null html html true browser spoilers about Q(uine)R code generator
783 2014 endoh1 300 2014_endoh1.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
784 2014 endoh2 null .winner.json jwinner null json json false null null
785 2014 endoh2 10 index.html readme2index null html html true browser click here first
786 2014 endoh2 300 2014_endoh2.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
787 2014 maffiodo1 null .winner.json jwinner null json json false null null
788 2014 maffiodo1 10 index.html readme2index null html html true browser click here first
789 2014 maffiodo1 300 2014_maffiodo1.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
790 2014 maffiodo2 null .winner.json jwinner null json json false null null
791 2014 maffiodo2 10 index.html readme2index null html html true browser click here first
792 2014 maffiodo2 300 2014_maffiodo2.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
793 2014 morgan null .winner.json jwinner null json json false null null
794 2014 morgan 10 index.html readme2index null html html true browser click here first
795 2014 morgan 300 2014_morgan.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
796 2014 sinon null .winner.json jwinner null json json false null null
797 2014 sinon 10 index.html readme2index null html html true browser click here first
798 2014 sinon 300 2014_sinon.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
799 2014 skeggs null .winner.json jwinner null json json false null null
800 2014 skeggs 10 index.html readme2index null html html true browser click here first
801 2014 skeggs 300 2014_skeggs.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
802 2014 vik null .winner.json jwinner null json json false null null
803 2014 vik 10 index.html readme2index null html html true browser click here first
804 2014 vik 300 2014_vik.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
805 2014 wiedijk null .winner.json jwinner null json json false null null
806 2014 wiedijk 10 index.html readme2index null html html true browser click here first
807 2014 wiedijk 300 2014_wiedijk.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
808 2015 burton null .winner.json jwinner null json json false null null
809 2015 burton 10 index.html readme2index null html html true browser click here first
810 2015 burton 200 spoilers.html md2html null html html true browser SPOILER WARNING
811 2015 burton 300 2015_burton.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
812 2015 dogon null .winner.json jwinner null json json false null null
813 2015 dogon 10 index.html readme2index null html html true browser click here first
814 2015 dogon 300 2015_dogon.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
815 2015 duble null .winner.json jwinner null json json false null null
816 2015 duble 10 index.html readme2index null html html true browser click here first
817 2015 duble 300 2015_duble.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
818 2015 endoh1 null .winner.json jwinner null json json false null null
819 2015 endoh1 10 index.html readme2index null html html true browser click here first
820 2015 endoh1 300 2015_endoh1.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
821 2015 endoh2 null .winner.json jwinner null json json false null null
822 2015 endoh2 10 index.html readme2index null html html true browser click here first
823 2015 endoh2 300 2015_endoh2.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
824 2015 endoh3 null .winner.json jwinner null json json false null null
825 2015 endoh3 10 index.html readme2index null html html true browser click here first
826 2015 endoh3 300 2015_endoh3.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
827 2015 endoh4 null .winner.json jwinner null json json false null null
828 2015 endoh4 10 index.html readme2index null html html true browser click here first
829 2015 endoh4 300 2015_endoh4.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
830 2015 hou null .winner.json jwinner null json json false null null
831 2015 hou 10 index.html readme2index null html html true browser click here first
832 2015 hou 300 2015_hou.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
833 2015 howe null .winner.json jwinner null json json false null null
834 2015 howe 10 index.html readme2index null html html true browser click here first
835 2015 howe 300 2015_howe.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
836 2015 mills1 null .winner.json jwinner null json json false null null
837 2015 mills1 10 index.html readme2index null html html true browser click here first
838 2015 mills1 300 2015_mills1.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
839 2015 mills2 null .winner.json jwinner null json json false null null
840 2015 mills2 10 index.html readme2index null html html true browser click here first
841 2015 mills2 300 2015_mills2.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
842 2015 muth null .winner.json jwinner null json json false null null
843 2015 muth 10 index.html readme2index null html html true browser click here first
844 2015 muth 300 2015_muth.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
845 2015 schweikhardt null .winner.json jwinner null json json false null null
846 2015 schweikhardt 10 index.html readme2index null html html true browser click here first
847 2015 schweikhardt 300 2015_schweikhardt.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
848 2015 yang null .winner.json jwinner null json json false null null
849 2015 yang 10 index.html readme2index null html html true browser click here first
850 2015 yang 300 2015_yang.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
851 2018 algmyr null .winner.json jwinner null json json false null null
852 2018 algmyr 10 index.html readme2index null html html true browser click here first
853 2018 algmyr 300 2018_algmyr.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
854 2018 anderson null .winner.json jwinner null json json false null null
855 2018 anderson 10 index.html readme2index null html html true browser click here first
856 2018 anderson 300 2018_anderson.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
857 2018 bellard null .winner.json jwinner null json json false null null
858 2018 bellard 10 index.html readme2index null html html true browser click here first
859 2018 bellard 300 2018_bellard.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
860 2018 burton1 null .winner.json jwinner null json json false null null
861 2018 burton1 10 index.html readme2index null html html true browser click here first
862 2018 burton1 300 2018_burton1.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
863 2018 burton2 null .winner.json jwinner null json json false null null
864 2018 burton2 10 index.html readme2index null html html true browser click here first
865 2018 burton2 100 discrepancies.html md2html null html html true browser field-by-field difference between iocccsize and ion
866 2018 burton2 300 2018_burton2.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
867 2018 ciura null .winner.json jwinner null json json false null null
868 2018 ciura 10 index.html readme2index null html html true browser click here first
869 2018 ciura 300 2018_ciura.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
870 2018 endoh1 null .winner.json jwinner null json json false null null
871 2018 endoh1 10 index.html readme2index null html html true browser click here first
872 2018 endoh1 300 2018_endoh1.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
873 2018 endoh2 null .winner.json jwinner null json json false null null
874 2018 endoh2 10 index.html readme2index null html html true browser click here first
875 2018 endoh2 300 2018_endoh2.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
876 2018 ferguson null .winner.json jwinner null json json false null null
877 2018 ferguson 10 index.html readme2index null html html true browser click here first
878 2018 ferguson 100 rpm.html md2html null html html true browser about forming the rpm
879 2018 ferguson 300 2018_ferguson.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
880 2018 giles null .winner.json jwinner null json json false null null
881 2018 giles 10 index.html readme2index null html html true browser click here first
882 2018 giles 300 2018_giles.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
883 2018 hou null .winner.json jwinner null json json false null null
884 2018 hou 10 index.html readme2index null html html true browser click here first
885 2018 hou 300 2018_hou.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
886 2018 mills null .winner.json jwinner null json json false null null
887 2018 mills 10 index.html readme2index null html html true browser click here first
888 2018 mills 300 2018_mills.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
889 2018 poikola null .winner.json jwinner null json json false null null
890 2018 poikola 10 index.html readme2index null html html true browser click here first
891 2018 poikola 300 2018_poikola.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
892 2018 vokes null .winner.json jwinner null json json false null null
893 2018 vokes 10 index.html readme2index null html html true browser click here first
894 2018 vokes 300 2018_vokes.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
895 2018 yang null .winner.json jwinner null json json false null null
896 2018 yang 10 index.html readme2index null html html true browser click here first
897 2018 yang 300 2018_yang.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
898 2019 adamovsky null .winner.json jwinner null json json false null null
899 2019 adamovsky 10 index.html readme2index null html html true browser click here first
900 2019 adamovsky 300 2019_adamovsky.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
901 2019 burton null .winner.json jwinner null json json false null null
902 2019 burton 10 index.html readme2index null html html true browser click here first
903 2019 burton 300 2019_burton.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
904 2019 ciura null .winner.json jwinner null json json false null null
905 2019 ciura 10 index.html readme2index null html html true browser click here first
906 2019 ciura 300 2019_ciura.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
907 2019 diels-grabsch1 null .winner.json jwinner null json json false null null
908 2019 diels-grabsch1 10 index.html readme2index null html html true browser click here first
909 2019 diels-grabsch1 300 2019_diels-grabsch1.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
910 2019 diels-grabsch2 null .winner.json jwinner null json json false null null
911 2019 diels-grabsch2 10 index.html readme2index null html html true browser click here first
912 2019 diels-grabsch2 300 2019_diels-grabsch2.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
913 2019 dogon null .winner.json jwinner null json json false null null
914 2019 dogon 10 index.html readme2index null html html true browser click here first
915 2019 dogon 300 2019_dogon.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
916 2019 duble null .winner.json jwinner null json json false null null
917 2019 duble 10 index.html readme2index null html html true browser click here first
918 2019 duble 300 2019_duble.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
919 2019 endoh null .winner.json jwinner null json json false null null
920 2019 endoh 10 index.html readme2index null html html true browser click here first
921 2019 endoh 300 2019_endoh.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
922 2019 giles null .winner.json jwinner null json json false null null
923 2019 giles 10 index.html readme2index null html html true browser click here first
924 2019 giles 300 2019_giles.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
925 2019 karns null .winner.json jwinner null json json false null null
926 2019 karns 10 index.html readme2index null html html true browser click here first
927 2019 karns 300 2019_karns.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
928 2019 lynn null .winner.json jwinner null json json false null null
929 2019 lynn 10 index.html readme2index null html html true browser click here first
930 2019 lynn 300 2019_lynn.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
931 2019 mills null .winner.json jwinner null json json false null null
932 2019 mills 10 index.html readme2index null html html true browser click here first
933 2019 mills 300 2019_mills.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
934 2019 poikola null .winner.json jwinner null json json false null null
935 2019 poikola 10 index.html readme2index null html html true browser click here first
936 2019 poikola 300 2019_poikola.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
937 2019 yang null .winner.json jwinner null json json false null null
938 2019 yang 10 index.html readme2index null html html true browser click here first
939 2019 yang 300 2019_yang.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
940 2020 burton null .winner.json jwinner null json json false null null
941 2020 burton 10 index.html readme2index null html html true browser click here first
942 2020 burton 300 2020_burton.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
943 2020 carlini null .winner.json jwinner null json json false null null
944 2020 carlini 10 index.html readme2index null html html true browser click here first
945 2020 carlini 300 2020_carlini.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
946 2020 endoh1 null .winner.json jwinner null json json false null null
947 2020 endoh1 10 index.html readme2index null html html true browser click here first
948 2020 endoh1 300 2020_endoh1.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
949 2020 endoh2 null .winner.json jwinner null json json false null null
950 2020 endoh2 10 index.html readme2index null html html true browser click here first
951 2020 endoh2 300 2020_endoh2.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
952 2020 endoh3 null .winner.json jwinner null json json false null null
953 2020 endoh3 10 index.html readme2index null html html true browser click here first
954 2020 endoh3 300 2020_endoh3.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
955 2020 ferguson1 null .winner.json jwinner null json json false null null
956 2020 ferguson1 10 index.html readme2index null html html true browser click here first
957 2020 ferguson1 100 COMPILING.html md2html null html html true browser about compiling
958 2020 ferguson1 100 HACKING.html md2html null html html true browser information for herpetologist hackers
959 2020 ferguson1 100 cannibalism.log.html md2html null html html true browser about the snake game
960 2020 ferguson1 100 crazy.log.html md2html null html html true browser about some screen dumps
961 2020 ferguson1 150 bugs.html md2html null html html true browser bugs and mis-features
962 2020 ferguson1 150 chocolate-cake.html md2html null html html true browser chocolate cake recipe
963 2020 ferguson1 150 gameplay.html md2html null html html true browser how to play
964 2020 ferguson1 150 terminals.html md2html null html html true browser terminal capability documentation
965 2020 ferguson1 150 troubleshooting.html md2html null html html true browser troubleshooting
966 2020 ferguson1 200 spoilers.html md2html null html html true browser SPOILER WARNING
967 2020 ferguson1 300 2020_ferguson1.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
968 2020 ferguson2 null .winner.json jwinner null json json false null null
969 2020 ferguson2 10 index.html readme2index null html html true browser click here first
970 2020 ferguson2 300 2020_ferguson2.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
971 2020 giles null .winner.json jwinner null json json false null null
972 2020 giles 10 index.html readme2index null html html true browser click here first
973 2020 giles 300 2020_giles.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
974 2020 kurdyukov1 null .winner.json jwinner null json json false null null
975 2020 kurdyukov1 10 index.html readme2index null html html true browser click here first
976 2020 kurdyukov1 300 2020_kurdyukov1.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
977 2020 kurdyukov2 null .winner.json jwinner null json json false null null
978 2020 kurdyukov2 10 index.html readme2index null html html true browser click here first
979 2020 kurdyukov2 300 2020_kurdyukov2.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
980 2020 kurdyukov3 null .winner.json jwinner null json json false null null
981 2020 kurdyukov3 10 index.html readme2index null html html true browser click here first
982 2020 kurdyukov3 300 2020_kurdyukov3.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
983 2020 kurdyukov4 null .winner.json jwinner null json json false null null
984 2020 kurdyukov4 10 index.html readme2index null html html true browser click here first
985 2020 kurdyukov4 300 2020_kurdyukov4.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
986 2020 otterness null .winner.json jwinner null json json false null null
987 2020 otterness 10 index.html readme2index null html html true browser click here first
988 2020 otterness 300 2020_otterness.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
989 2020 tsoj null .winner.json jwinner null json json false null null
990 2020 tsoj 10 index.html readme2index null html html true browser click here first
991 2020 tsoj 300 2020_tsoj.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
992 2020 yang null .winner.json jwinner null json json false null null
993 2020 yang 10 index.html readme2index null html html true browser click here first
994 2020 yang 300 2020_yang.tar.bz2 mkwinnertbz2 null tbz2 bz2 true download download winning source
Binary file not shown.
-77
View File
@@ -1,77 +0,0 @@
* {
font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
}
body {
max-width: 50em;
margin: 0 auto;
color: #111;
}
pre, code {
font-family: Monaco, Courier New, monospace;
font-size: 12px;
}
h1 {
font-size: 40px;
font-weight: bold;
letter-spacing: -1px;
margin-bottom: -5px;
}
h1 code {
font-size: 40px;
}
h2 {
color: rgb(43,105,145);
font-weight: bold;
margin-bottom: -5px;
}
h2 code {
font-size: 22px;
}
h3 {
/* color: rgb(43,105,145); */
font-weight: bold;
margin-bottom: -5px;
}
h3 code {
font-size: 16px;
}
a {
color: blue;
text-decoration: underline;
}
a:visited {
color: navy;
}
a:hover {
text-decoration: underline;
}
pre {
border-radius: 10px;
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.3);
-webkit-box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.3);
-moz-box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.3);
border-width: 1px;
border-color: rgb(16,48,0);
border-style: solid;
padding: 0.6em;
padding-left: 1em;
margin-left: 5%;
margin-right: 8%;
background-color: rgb(16,48,0);
overflow: auto;
color: rgb(75,224,0);
}
p, li {
font-size: 14px;
line-height: 18px;
}
-348
View File
@@ -1,348 +0,0 @@
CREATE TABLE winners (
prize_tag TEXT,
person_id TEXT,
country TEXT,
city TEXT,
CONSTRAINT winners UNIQUE (prize_tag, person_id) ON CONFLICT REPLACE
);
INSERT INTO winners VALUES('2000_anderson','Glyn_Anderson',NULL,NULL);
INSERT INTO winners VALUES('1984_anonymous','Anonymous_1984',NULL,NULL);
INSERT INTO winners VALUES('2004_anonymous','Anonymous_2004',NULL,NULL);
INSERT INTO winners VALUES('1991_davidguy','David_Applegate',NULL,NULL);
INSERT INTO winners VALUES('1985_applin','Jack_Applin',NULL,NULL);
INSERT INTO winners VALUES('1986_applin','Jack_Applin',NULL,NULL);
INSERT INTO winners VALUES('1988_applin','Jack_Applin',NULL,NULL);
INSERT INTO winners VALUES('1989_jar.1','Jari_Arkko',NULL,NULL);
INSERT INTO winners VALUES('1989_jar.2','Jari_Arkko',NULL,NULL);
INSERT INTO winners VALUES('2000_jarijyrki','Jari_Arkko',NULL,NULL);
INSERT INTO winners VALUES('1985_august','Lennart_Augustsson',NULL,NULL);
INSERT INTO winners VALUES('1986_august','Lennart_Augustsson',NULL,NULL);
INSERT INTO winners VALUES('1996_august','Lennart_Augustsson',NULL,NULL);
INSERT INTO winners VALUES('1998_banks','Carl_Banks',NULL,NULL);
INSERT INTO winners VALUES('2001_anonymous','Anonymous_2001',NULL,NULL);
INSERT INTO winners VALUES('2004_gavin','Gavin_Barraclough',NULL,NULL);
INSERT INTO winners VALUES('1991_buzzard','Sean_Barrett',NULL,NULL);
INSERT INTO winners VALUES('1992_buzzard.1','Sean_Barrett',NULL,NULL);
INSERT INTO winners VALUES('1992_buzzard.2','Sean_Barrett',NULL,NULL);
INSERT INTO winners VALUES('2001_dgbeards','Doug_Beardsley',NULL,NULL);
INSERT INTO winners VALUES('2000_bellard','Fabrice_Bellard',NULL,NULL);
INSERT INTO winners VALUES('2001_bellard','Fabrice_Bellard',NULL,NULL);
INSERT INTO winners VALUES('1993_ejb','E._Jay_Berkenbilt',NULL,NULL);
INSERT INTO winners VALUES('1991_brnstnd','Daniel_J._Bernstein',NULL,NULL);
INSERT INTO winners VALUES('1987_biggar','Mark_Biggar',NULL,NULL);
INSERT INTO winners VALUES('1989_paul','Paul_E._Black',NULL,NULL);
INSERT INTO winners VALUES('1991_rince','James_Bonfield',NULL,NULL);
INSERT INTO winners VALUES('1993_rince','James_Bonfield',NULL,NULL);
INSERT INTO winners VALUES('2000_rince','James_Bonfield',NULL,NULL);
INSERT INTO winners VALUES('2000_briddlebane','Moxen_N._Briddlebane',NULL,NULL);
INSERT INTO winners VALUES('1986_bright','Walter_Bright',NULL,NULL);
INSERT INTO winners VALUES('1993_leo','Leonid_A._Broukhis',NULL,NULL);
INSERT INTO winners VALUES('1995_leo','Leonid_A._Broukhis',NULL,NULL);
INSERT INTO winners VALUES('1994_ldb','Laurion_Burchall',NULL,NULL);
INSERT INTO winners VALUES('2004_burley','Brent_Burley',NULL,NULL);
INSERT INTO winners VALUES('2000_thadgavin','Gavin_Buttimore',NULL,NULL);
INSERT INTO winners VALUES('2000_primenum','Raymond_Cheong',NULL,NULL);
INSERT INTO winners VALUES('2001_cheong','Raymond_Cheong',NULL,NULL);
INSERT INTO winners VALUES('1992_imc','Ian_Collier',NULL,NULL);
INSERT INTO winners VALUES('1994_imc','Ian_Collier',NULL,NULL);
INSERT INTO winners VALUES('2001_coupard','Pierre-Philippe_Coupard',NULL,NULL);
INSERT INTO winners VALUES('1996_dalbec','John_Dalbec',NULL,NULL);
INSERT INTO winners VALUES('2004_jdalbec','John_Dalbec',NULL,NULL);
INSERT INTO winners VALUES('1988_dale','Paul_Dale',NULL,NULL);
INSERT INTO winners VALUES('1998_bas1','Bas_de_Bakker',NULL,NULL);
INSERT INTO winners VALUES('1998_bas2','Bas_de_Bakker',NULL,NULL);
INSERT INTO winners VALUES('1998_chaos','Alan_De_Smet',NULL,NULL);
INSERT INTO winners VALUES('1984_decot','Dave_Decot',NULL,NULL);
INSERT INTO winners VALUES('1995_esde','Sebastian_Deorowicz',NULL,NULL);
INSERT INTO winners VALUES('1994_dodsond1','Don_Dodson',NULL,NULL);
INSERT INTO winners VALUES('1994_dodsond2','Don_Dodson',NULL,NULL);
INSERT INTO winners VALUES('1995_dodsond1','Don_Dodson',NULL,NULL);
INSERT INTO winners VALUES('1995_dodsond2','Don_Dodson',NULL,NULL);
INSERT INTO winners VALUES('1990_tbr','Sean_Dorward',NULL,NULL);
INSERT INTO winners VALUES('1995_heathbar','Heather_Downs',NULL,NULL);
INSERT INTO winners VALUES('1995_heathbar','Selene_Makarios',NULL,NULL);
INSERT INTO winners VALUES('1995_cdua','Carlos_Duarte',NULL,NULL);
INSERT INTO winners VALUES('1991_cdupont','Christian_Dupont',NULL,NULL);
INSERT INTO winners VALUES('1990_jaw','Paul_Eggert',NULL,NULL);
INSERT INTO winners VALUES('1996_eldby','Thor_Eldby',NULL,NULL);
INSERT INTO winners VALUES('1998_fanf','Tony_Finch',NULL,NULL);
INSERT INTO winners VALUES('1991_fine','Thomas_A._Fine',NULL,NULL);
INSERT INTO winners VALUES('1998_df','Daniel_Fischer',NULL,NULL);
INSERT INTO winners VALUES('1990_jaw','Karl_F._Fox',NULL,NULL);
INSERT INTO winners VALUES('2000_thadgavin','Thaddaeus_Frogley',NULL,NULL);
INSERT INTO winners VALUES('2004_gavare','Anders_Gavare',NULL,NULL);
INSERT INTO winners VALUES('1993_dgibson','David_Gibson',NULL,NULL);
INSERT INTO winners VALUES('1995_garry','Garry_Glendown',NULL,NULL);
INSERT INTO winners VALUES('1990_dg','David_Goodenough',NULL,NULL);
INSERT INTO winners VALUES('1992_gson','Andreas_Gustafsson',NULL,NULL);
INSERT INTO winners VALUES('1986_hague','Jim_Hague',NULL,NULL);
INSERT INTO winners VALUES('1987_heckbert','Paul_Heckbert',NULL,NULL);
INSERT INTO winners VALUES('1985_applin','Robert_Heckendorn',NULL,NULL);
INSERT INTO winners VALUES('1990_stig','Stig_Hemmer',NULL,NULL);
INSERT INTO winners VALUES('2001_herrmann1','Immanuel_Herrmann',NULL,NULL);
INSERT INTO winners VALUES('2001_herrmann2','Immanuel_Herrmann',NULL,NULL);
INSERT INTO winners VALUES('1987_hines','Spencer_Hines',NULL,NULL);
INSERT INTO winners VALUES('1986_holloway','Bruce_Holloway',NULL,NULL);
INSERT INTO winners VALUES('1993_lmfjyh','Jyrki_Holopainen',NULL,NULL);
INSERT INTO winners VALUES('2000_jarijyrki','Jyrki_Holopainen',NULL,NULL);
INSERT INTO winners VALUES('1994_horton','Mary_Ann_Horton',NULL,NULL);
INSERT INTO winners VALUES('1991_ant','Anthony_C._Howe',NULL,NULL);
INSERT INTO winners VALUES('1992_ant','Anthony_C._Howe',NULL,NULL);
INSERT INTO winners VALUES('1993_ant','Anthony_C._Howe',NULL,NULL);
INSERT INTO winners VALUES('2004_hibachi','Anthony_C._Howe',NULL,NULL);
INSERT INTO winners VALUES('2004_hoyle','Jonathan_Hoyle',NULL,NULL);
INSERT INTO winners VALUES('1996_huffman','Ken_Huffman',NULL,NULL);
INSERT INTO winners VALUES('1988_isaak','Mark_Isaak',NULL,NULL);
INSERT INTO winners VALUES('2000_tomx','Thomas_P_John',NULL,NULL);
INSERT INTO winners VALUES('2004_arachnid','Nick_Johnson',NULL,NULL);
INSERT INTO winners VALUES('1990_scjones','Larry_Jones',NULL,NULL);
INSERT INTO winners VALUES('2001_ctk','Chris_King',NULL,NULL);
INSERT INTO winners VALUES('1992_kivinen','Tero_Kivinen',NULL,NULL);
INSERT INTO winners VALUES('2004_kopczynski','Eryk_Kopczynski',NULL,NULL);
INSERT INTO winners VALUES('1987_korn','David_Korn',NULL,NULL);
INSERT INTO winners VALUES('1984_laman','Mike_Laman',NULL,NULL);
INSERT INTO winners VALUES('1989_jar.2','Ora_Lassila',NULL,NULL);
INSERT INTO winners VALUES('1987_lievaart','Roemer_B._Lievaart',NULL,NULL);
INSERT INTO winners VALUES('1989_roemer','Roemer_B._Lievaart',NULL,NULL);
INSERT INTO winners VALUES('1988_litmaath','Maarten_Litmaath',NULL,NULL);
INSERT INTO winners VALUES('1998_dlowe','J_David_Lowe',NULL,NULL);
INSERT INTO winners VALUES('1998_dloweneil','J_David_Lowe',NULL,NULL);
INSERT INTO winners VALUES('2000_dlowe','J_David_Lowe',NULL,NULL);
INSERT INTO winners VALUES('1992_lush','Ed_Luke',NULL,NULL);
INSERT INTO winners VALUES('1985_lycklama','Ed_Lycklama',NULL,NULL);
INSERT INTO winners VALUES('1995_makarios','Selene_Makarios',NULL,NULL);
INSERT INTO winners VALUES('1995_makarios','Heather_Downs',NULL,NULL);
INSERT INTO winners VALUES('1992_marangon','Andrea_Marangoni',NULL,NULL);
INSERT INTO winners VALUES('1990_theorem','Adrian_Mariano',NULL,NULL);
INSERT INTO winners VALUES('1992_adrian','Adrian_Mariano',NULL,NULL);
INSERT INTO winners VALUES('1986_marshall','Eric_Marshall',NULL,NULL);
INSERT INTO winners VALUES('1996_rcm','Ron_McFarland',NULL,NULL);
INSERT INTO winners VALUES('2000_bmeyer','Bernd_Meyer',NULL,NULL);
INSERT INTO winners VALUES('1990_cmills','Christopher_Mills',NULL,NULL);
INSERT INTO winners VALUES('1993_cmills','Christopher_Mills',NULL,NULL);
INSERT INTO winners VALUES('1998_dloweneil','Neil_Mix',NULL,NULL);
INSERT INTO winners VALUES('1984_mullender','Sjoerd_Mullender',NULL,NULL);
INSERT INTO winners VALUES('2004_newbern','Jeff_Newbern',NULL,NULL);
INSERT INTO winners VALUES('1990_baruch','Baruch_Nissenbaum',NULL,NULL);
INSERT INTO winners VALUES('1989_jar.2','Esko_Nuutila',NULL,NULL);
INSERT INTO winners VALUES('2001_ollinger','Nicolas_Ollinger',NULL,NULL);
INSERT INTO winners VALUES('2001_jason','Jason_Orendorff',NULL,NULL);
INSERT INTO winners VALUES('1990_baruch','Doron_Osovlanski',NULL,NULL);
INSERT INTO winners VALUES('1986_pawka','Michael_H._Pawka',NULL,NULL);
INSERT INTO winners VALUES('1992_vern','Vern_Paxson',NULL,NULL);
INSERT INTO winners VALUES('1988_phillipps','Ian_Phillipps',NULL,NULL);
INSERT INTO winners VALUES('1993_plummer','Mark_Plummer',NULL,NULL);
INSERT INTO winners VALUES('2001_kev','Kevin_Pulo',NULL,NULL);
INSERT INTO winners VALUES('1990_tbr','Byron_Rakitzis',NULL,NULL);
INSERT INTO winners VALUES('1994_tvr','Teemu_Rantanen',NULL,NULL);
INSERT INTO winners VALUES('1988_reddy','Gopi_Reddy',NULL,NULL);
INSERT INTO winners VALUES('1988_robison','Arch_D_Robison',NULL,NULL);
INSERT INTO winners VALUES('1989_robison','Arch_D_Robison',NULL,NULL);
INSERT INTO winners VALUES('2000_robison','Arch_D_Robison',NULL,NULL);
INSERT INTO winners VALUES('2001_rosten','Edward_Rosten',NULL,NULL);
INSERT INTO winners VALUES('1990_pjr','Peter_J_Ruczynski',NULL,NULL);
INSERT INTO winners VALUES('1994_smr','Szymon_Rusinkiewicz',NULL,NULL);
INSERT INTO winners VALUES('1995_savastio','Michael_Savastio',NULL,NULL);
INSERT INTO winners VALUES('2000_schneiderwent','Craig_Schneiderwent',NULL,NULL);
INSERT INTO winners VALUES('1993_schnitzi','Mark_Schnitzius',NULL,NULL);
INSERT INTO winners VALUES('1994_schnitzi','Mark_Schnitzius',NULL,NULL);
INSERT INTO winners VALUES('1995_schnitzi','Mark_Schnitzius',NULL,NULL);
INSERT INTO winners VALUES('1995_vanschnitz','Mark_Schnitzius',NULL,NULL);
INSERT INTO winners VALUES('1998_schnitzi','Mark_Schnitzius',NULL,NULL);
INSERT INTO winners VALUES('2004_schnitzi','Mark_Schnitzius',NULL,NULL);
INSERT INTO winners VALUES('1996_schweikh1','Jens_Schweikhardt',NULL,NULL);
INSERT INTO winners VALUES('1996_schweikh2','Jens_Schweikhardt',NULL,NULL);
INSERT INTO winners VALUES('1996_schweikh3','Jens_Schweikhardt',NULL,NULL);
INSERT INTO winners VALUES('1998_schweikh1','Jens_Schweikhardt',NULL,NULL);
INSERT INTO winners VALUES('1998_schweikh2','Jens_Schweikhardt',NULL,NULL);
INSERT INTO winners VALUES('1998_schweikh3','Jens_Schweikhardt',NULL,NULL);
INSERT INTO winners VALUES('2001_schweikh','Jens_Schweikhardt',NULL,NULL);
INSERT INTO winners VALUES('1994_shapiro','Andrew_Shapiro',NULL,NULL);
INSERT INTO winners VALUES('1985_shapiro','Carl_Shapiro',NULL,NULL);
INSERT INTO winners VALUES('2000_natori','NATORI_Shin',NULL,NULL);
INSERT INTO winners VALUES('1985_sicherman','Col._G._L._Sicherman',NULL,NULL);
INSERT INTO winners VALUES('1992_nathan','Nathan_Sidwell',NULL,NULL);
INSERT INTO winners VALUES('1988_spinellis','Diomidis_Spinellis',NULL,NULL);
INSERT INTO winners VALUES('1990_dds','Diomidis_Spinellis',NULL,NULL);
INSERT INTO winners VALUES('1991_dds','Diomidis_Spinellis',NULL,NULL);
INSERT INTO winners VALUES('1995_spinellis','Diomidis_Spinellis',NULL,NULL);
INSERT INTO winners VALUES('1986_stein','Jan_Stein',NULL,NULL);
INSERT INTO winners VALUES('1996_gandalf','Dean_Swift',NULL,NULL);
INSERT INTO winners VALUES('2004_sds','Stephen_Sykes',NULL,NULL);
INSERT INTO winners VALUES('1993_jonth','Jon_Thingvold',NULL,NULL);
INSERT INTO winners VALUES('1996_jonth','Jon_Thingvold',NULL,NULL);
INSERT INTO winners VALUES('1998_tomtorfs','Tom Torfs',NULL,NULL);
INSERT INTO winners VALUES('1989_tromp','John_Tromp',NULL,NULL);
INSERT INTO winners VALUES('1989_vanb','David_Van_Brackle',NULL,NULL);
INSERT INTO winners VALUES('1993_vanb','David_Van_Brackle',NULL,NULL);
INSERT INTO winners VALUES('1995_vanschnitz','David_Van_Brackle',NULL,NULL);
INSERT INTO winners VALUES('1992_albert','Albert_van_der_Horst',NULL,NULL);
INSERT INTO winners VALUES('1998_dorssel','Frans van Dorsselaer',NULL,NULL);
INSERT INTO winners VALUES('1984_mullender','Robbert_van_Renesse',NULL,NULL);
INSERT INTO winners VALUES('2004_vik1','Daniel_Vik',NULL,NULL);
INSERT INTO winners VALUES('2004_vik2','Daniel_Vik',NULL,NULL);
INSERT INTO winners VALUES('1989_ovdluhe','Oskar_von_der_Luehe',NULL,NULL);
INSERT INTO winners VALUES('1989_fubar','Jay_Vosburgh',NULL,NULL);
INSERT INTO winners VALUES('1986_wall','Larry_Wall',NULL,NULL);
INSERT INTO winners VALUES('1987_wall','Larry_Wall',NULL,NULL);
INSERT INTO winners VALUES('1994_weisberg','Jeff_Weisberg',NULL,NULL);
INSERT INTO winners VALUES('1987_westley','Brian_Westley',NULL,NULL);
INSERT INTO winners VALUES('1988_westley','Brian_Westley',NULL,NULL);
INSERT INTO winners VALUES('1989_westley','Brian_Westley',NULL,NULL);
INSERT INTO winners VALUES('1990_westley','Brian_Westley',NULL,NULL);
INSERT INTO winners VALUES('1991_westley','Brian_Westley',NULL,NULL);
INSERT INTO winners VALUES('1992_westley','Brian_Westley',NULL,NULL);
INSERT INTO winners VALUES('1994_westley','Brian_Westley',NULL,NULL);
INSERT INTO winners VALUES('1996_westley','Brian_Westley',NULL,NULL);
INSERT INTO winners VALUES('2001_westley','Brian_Westley',NULL,NULL);
INSERT INTO winners VALUES('2001_williams','John_Williams',NULL,NULL);
INSERT INTO winners VALUES('1990_jaw','James_A._Woods',NULL,NULL);
INSERT INTO winners VALUES('2000_dhyang','Don_Yang',NULL,NULL);
INSERT INTO winners VALUES('2004_omoikane','Don_Yang',NULL,NULL);
INSERT INTO winners VALUES('2000_briddlebane','Lord_Zarbon',NULL,NULL);
INSERT INTO winners VALUES('2005_aidan','Aidan_Thornton',NULL,NULL);
INSERT INTO winners VALUES('2005_anon','Anonymous_2005',NULL,NULL);
INSERT INTO winners VALUES('2005_boutines','Francois_Boutines',NULL,NULL);
INSERT INTO winners VALUES('2005_chia','V._Chia',NULL,NULL);
INSERT INTO winners VALUES('2005_giljade','Gil_Dogon',NULL,NULL);
INSERT INTO winners VALUES('2005_jetro','Jetro_Lauha',NULL,NULL);
INSERT INTO winners VALUES('2005_klausler','Peter_Klausler',NULL,NULL);
INSERT INTO winners VALUES('2005_mikeash','Michael_Ash',NULL,NULL);
INSERT INTO winners VALUES('2005_mynx','Anthony_C._Howe',NULL,NULL);
INSERT INTO winners VALUES('2005_persano','Mauro_Persano',NULL,NULL);
INSERT INTO winners VALUES('2005_sykes','Stephen_Sykes',NULL,NULL);
INSERT INTO winners VALUES('2005_timwi','Arne_Heizmann',NULL,NULL);
INSERT INTO winners VALUES('2005_toledo','Oscar_Toledo_G.',NULL,NULL);
INSERT INTO winners VALUES('2005_vik','Daniel_Vik',NULL,NULL);
INSERT INTO winners VALUES('2005_vince','Vincent_Weaver',NULL,NULL);
INSERT INTO winners VALUES('2006_birken','Michael_Birken',NULL,NULL);
INSERT INTO winners VALUES('2006_borsanyi','Szabolcs_Borsanyi',NULL,NULL);
INSERT INTO winners VALUES('2006_grothe','Aaron_Grothe',NULL,NULL);
INSERT INTO winners VALUES('2006_hamre','Steinar_Hamre',NULL,NULL);
INSERT INTO winners VALUES('2006_meyer','Raphael_Meyer',NULL,NULL);
INSERT INTO winners VALUES('2006_monge','Maurizio_Monge',NULL,NULL);
INSERT INTO winners VALUES('2006_night','Christopher_Night',NULL,NULL);
INSERT INTO winners VALUES('2006_sloane','Andy_Sloane',NULL,NULL);
INSERT INTO winners VALUES('2006_stewart','Thomas_Stewart',NULL,NULL);
INSERT INTO winners VALUES('2006_sykes1','Stephen_Sykes',NULL,NULL);
INSERT INTO winners VALUES('2006_sykes2','Stephen_Sykes',NULL,NULL);
INSERT INTO winners VALUES('2006_toledo1','Oscar_Toledo_G.',NULL,NULL);
INSERT INTO winners VALUES('2006_toledo2','Oscar_Toledo_G.',NULL,NULL);
INSERT INTO winners VALUES('2006_toledo3','Oscar_Toledo_G.',NULL,NULL);
INSERT INTO winners VALUES('2011_blakely','Philip_Blakely','UK',NULL);
INSERT INTO winners VALUES('2011_borsanyi','Szabolcs_Borsanyi','Germany',NULL);
INSERT INTO winners VALUES('2011_dlowe','J_David_Lowe','USA',NULL);
INSERT INTO winners VALUES('2011_eastman','Peter_Eastman','USA',NULL);
INSERT INTO winners VALUES('2011_fredriksson','Kimmo_Fredriksson','Finland',NULL);
INSERT INTO winners VALUES('2011_goren','Uri_Goren','Israel',NULL);
INSERT INTO winners VALUES('2011_hou','Qiming_HOU','China',NULL);
INSERT INTO winners VALUES('2011_konno','Taketo_Konno','Japan',NULL);
INSERT INTO winners VALUES('2011_hamaji','Shinichiro_Hamaji','Japan',NULL);
INSERT INTO winners VALUES('2011_hamaji','bsoup','Japan',NULL);
INSERT INTO winners VALUES('2011_richards','Gregor_Richards','USA',NULL);
INSERT INTO winners VALUES('2011_toledo','Oscar_Toledo_G.','Mexico',NULL);
INSERT INTO winners VALUES('2011_vik','Daniel_Vik','USA',NULL);
INSERT INTO winners VALUES('2011_zucker','Matt_Zucker','USA',NULL);
INSERT INTO winners VALUES('2011_akari','Don_Yang','USA',NULL);
INSERT INTO winners VALUES('2012_hou','Qiming_HOU','CN',NULL);
INSERT INTO winners VALUES('2012_grothe','Aaron_Grothe','US',NULL);
INSERT INTO winners VALUES('2012_grothe','David_Madore','FR',NULL);
INSERT INTO winners VALUES('2012_konno','Taketo_Konno','JP',NULL);
INSERT INTO winners VALUES('2012_omoikane','Don_Yang','US',NULL);
INSERT INTO winners VALUES('2012_kang','Seonghoon_Kang','KR',NULL);
INSERT INTO winners VALUES('2012_dlowe','J_David_Lowe','US',NULL);
INSERT INTO winners VALUES('2012_deckmyn','Alex_Deckmyn','BE',NULL);
INSERT INTO winners VALUES('2012_endoh2','Yusuke_Endoh','JP',NULL);
INSERT INTO winners VALUES('2012_blakely','Philip_Blakely','GB',NULL);
INSERT INTO winners VALUES('2012_tromp','John_Tromp','US',NULL);
INSERT INTO winners VALUES('2012_endoh1','Yusuke_Endoh','JP',NULL);
INSERT INTO winners VALUES('2012_vik','Daniel_Vik','US',NULL);
INSERT INTO winners VALUES('2012_hamano','Tsukasa_Hamano','JP',NULL);
INSERT INTO winners VALUES('2012_zeitak','Adar_Zeitak','IL',NULL);
INSERT INTO winners VALUES('2013_endoh3','Yusuke_Endoh','JP',NULL);
INSERT INTO winners VALUES('2013_cable1','Adrian_Cable','US',NULL);
INSERT INTO winners VALUES('2013_misaka','Don_Yang','US',NULL);
INSERT INTO winners VALUES('2013_dlowe','J_David_Lowe','US',NULL);
INSERT INTO winners VALUES('2013_endoh1','Yusuke_Endoh','JP',NULL);
INSERT INTO winners VALUES('2013_morgan1','Yves-Marie_Morgan','FR',NULL);
INSERT INTO winners VALUES('2013_robison','Arch_D_Robison','US',NULL);
INSERT INTO winners VALUES('2013_hou','Qiming_HOU','CN',NULL);
INSERT INTO winners VALUES('2013_birken','Michael_Birken','US',NULL);
INSERT INTO winners VALUES('2013_endoh2','Yusuke_Endoh','JP',NULL);
INSERT INTO winners VALUES('2013_cable3','Adrian_Cable','US',NULL);
INSERT INTO winners VALUES('2013_morgan2','Yves-Marie_Morgan','FR',NULL);
INSERT INTO winners VALUES('2013_endoh4','Yusuke_Endoh','JP',NULL);
INSERT INTO winners VALUES('2013_mills','Christopher_Mills','US',NULL);
INSERT INTO winners VALUES('2013_cable2','Adrian_Cable','US',NULL);
INSERT INTO winners VALUES('2014_endoh1','Yusuke_Endoh','JP',NULL);
INSERT INTO winners VALUES('2014_morgan','Yves-Marie_Morgan','FR',NULL);
INSERT INTO winners VALUES('2014_maffiodo1','Sandro_Maffiodo','IT',NULL);
INSERT INTO winners VALUES('2014_birken','Michael_Birken','US',NULL);
INSERT INTO winners VALUES('2014_birken','Alexander_Prishchepov','US',NULL);
INSERT INTO winners VALUES('2014_sinon','Don_Yang','US',NULL);
INSERT INTO winners VALUES('2014_deak','Ferenc_Deak','NO',NULL);
INSERT INTO winners VALUES('2014_skeggs','Cel_Skeggs','US',NULL);
INSERT INTO winners VALUES('2014_maffiodo2','Sandro_Maffiodo','IT',NULL);
INSERT INTO winners VALUES('2014_vik','Daniel_Vik','US',NULL);
INSERT INTO winners VALUES('2014_endoh2','Yusuke_Endoh','JP',NULL);
INSERT INTO winners VALUES('2014_wiedijk','Freek_Wiedijk','NL',NULL);
INSERT INTO winners VALUES('2015_mills1','Christopher_Mills','US',NULL);
INSERT INTO winners VALUES('2015_hou','Qiming_HOU','CN',NULL);
INSERT INTO winners VALUES('2015_endoh1','Yusuke_Endoh','JP',NULL);
INSERT INTO winners VALUES('2015_mills2','Christopher_Mills','US',NULL);
INSERT INTO winners VALUES('2015_dogon','Gil_Dogon','IL',NULL);
INSERT INTO winners VALUES('2015_endoh4','Yusuke_Endoh','JP',NULL);
INSERT INTO winners VALUES('2015_endoh3','Yusuke_Endoh','JP',NULL);
INSERT INTO winners VALUES('2015_schweikhardt','Jens_Schweikhardt','DE',NULL);
INSERT INTO winners VALUES('2015_endoh1','Anonymous_2015','JP',NULL);
INSERT INTO winners VALUES('2015_burton','Dave_Burton','US',NULL);
INSERT INTO winners VALUES('2015_duble','Etienne_Duble','FR',NULL);
INSERT INTO winners VALUES('2015_howe','Anthony_C._Howe','CA',NULL);
INSERT INTO winners VALUES('2015_endoh2','Yusuke_Endoh','JP',NULL);
INSERT INTO winners VALUES('2015_yang','Don_Yang','US',NULL);
INSERT INTO winners VALUES('2015_muth','Dominik_Muth','DE',NULL);
INSERT INTO winners VALUES('2018_endoh2','Yusuke_Endoh','JP',NULL);
INSERT INTO winners VALUES('2018_giles','Edward_Giles','AU',NULL);
INSERT INTO winners VALUES('2018_yang','Don_Yang','US',NULL);
INSERT INTO winners VALUES('2018_anderson','Derek_Anderson','US',NULL);
INSERT INTO winners VALUES('2018_ferguson','Cody_Ferguson','US',NULL);
INSERT INTO winners VALUES('2018_bellard','Fabrice_Bellard','FR',NULL);
INSERT INTO winners VALUES('2018_burton2','Dave_Burton','US',NULL);
INSERT INTO winners VALUES('2018_hou','Qiming_HOU','CN',NULL);
INSERT INTO winners VALUES('2018_ciura','Marcin_Ciura','PL',NULL);
INSERT INTO winners VALUES('2018_burton1','Dave_Burton','US',NULL);
INSERT INTO winners VALUES('2018_algmyr','Anton_Älgmyr','SE',NULL);
INSERT INTO winners VALUES('2018_vokes','Scott_Vokes','US',NULL);
INSERT INTO winners VALUES('2018_poikola','Timo_Poikola','FI',NULL);
INSERT INTO winners VALUES('2018_mills','Christopher_Mills','US',NULL);
INSERT INTO winners VALUES('2018_endoh1','Yusuke_Endoh','JP',NULL);
INSERT INTO winners VALUES('2019_lynn','Ben_Lynn','US',NULL);
INSERT INTO winners VALUES('2019_poikola','Timo_Poikola','FI',NULL);
INSERT INTO winners VALUES('2019_duble','Etienne_Duble','FR',NULL);
INSERT INTO winners VALUES('2019_ciura','Marcin_Ciura','PL',NULL);
INSERT INTO winners VALUES('2019_karns','Joshua_Karns','US',NULL);
INSERT INTO winners VALUES('2019_diels-grabsch1','Volker_Diels-Grabsch','DE',NULL);
INSERT INTO winners VALUES('2019_mills','Christopher_Mills','US',NULL);
INSERT INTO winners VALUES('2019_yang','Don_Yang','US',NULL);
INSERT INTO winners VALUES('2019_giles','Edward_Giles','AU',NULL);
INSERT INTO winners VALUES('2019_burton','Dave_Burton','US',NULL);
INSERT INTO winners VALUES('2019_diels-grabsch2','Volker_Diels-Grabsch','DE',NULL);
INSERT INTO winners VALUES('2019_endoh','Yusuke_Endoh','JP',NULL);
INSERT INTO winners VALUES('2019_adamovsky','Ondřej_Adamovský','CZ',NULL);
INSERT INTO winners VALUES('2019_dogon','Gil_Dogon','IL',NULL);
INSERT INTO winners VALUES('2020_kurdyukov4','Ilya_Kurdyukov','RU',NULL);
INSERT INTO winners VALUES('2020_ferguson2','Cody_Ferguson','US',NULL);
INSERT INTO winners VALUES('2020_ferguson1','Cody_Ferguson','US',NULL);
INSERT INTO winners VALUES('2020_endoh2','Yusuke_Endoh','JP',NULL);
INSERT INTO winners VALUES('2020_yang','Don_Yang','US',NULL);
INSERT INTO winners VALUES('2020_giles','Edward_Giles','AU',NULL);
INSERT INTO winners VALUES('2020_tsoj','_tsoj','DE',NULL);
INSERT INTO winners VALUES('2020_endoh3','Yusuke_Endoh','JP',NULL);
INSERT INTO winners VALUES('2020_carlini','Nicholas_Carlini','US',NULL);
INSERT INTO winners VALUES('2020_endoh1','Yusuke_Endoh','JP',NULL);
INSERT INTO winners VALUES('2020_otterness','Nathan_Otterness','US',NULL);
INSERT INTO winners VALUES('2020_burton','Dave_Burton','US',NULL);
INSERT INTO winners VALUES('2020_kurdyukov2','Ilya_Kurdyukov','RU',NULL);
INSERT INTO winners VALUES('2020_kurdyukov3','Ilya_Kurdyukov','RU',NULL);
INSERT INTO winners VALUES('2020_kurdyukov1','Ilya_Kurdyukov','RU',NULL);
-17
View File
@@ -1,17 +0,0 @@
</div>
</div>
<div class="footer">
<hr>
<h2>Footer</h2>
<p>This is where stuff at the bottom of all pages would be found.</p>
<a href="#top">Jump to top</a>
</div>
</body>
</html>
-60
View File
@@ -1,60 +0,0 @@
<!-- -->
<head>
<link rel="stylesheet" href="%%DOCROOT_URL_SLASH%%ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>%%TITIE%%</title>
<meta name="description" content="%%DESCRIPTION%%">
<meta name="keywords" content="%%KEYWORDS%%">
</head>
<body>
<div class="header">
<img src="%%DOCROOT_URL_SLASH%%png/ioccc.png" alt="IOCCC image by Matt Zucker" width=300 height=110>
<h1>%%HEADER_1%%</h1>
<h2>%%HEADER_2%%</h2>
</div>
<div class="topnav">
<a href="%%LEFT_LINK%%">&larr; %%LEFT_TEXT%%</a>
<a href="%%UP_LINK%%">&uarr; %%UP_TEXT%% &uarr;</a>
<a href="%%RIGHT_LINK%%">%%RIGHT_TEXT%% &rarr;</a>
</div>
<div class="row">
<div class="leftcolumn">
<div class="sidenav">
<a href="#content">Jump to contents</a>
</div>
<hr>
<div class="sidenav">
<a href="%%DOCROOT_URL_SLASH%%index.html">IOCCC Home</a>
<a href="%%DOCROOT_URL_SLASH%%years.html">Winning Entries</a>
<a href="%%DOCROOT_URL_SLASH%%winners.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="%%DOCROOT_URL_SLASH%%news.html">IOCCC News</a>
<a href="%%DOCROOT_URL_SLASH%%judges.html">The IOCCC Judges</a>
<a href="%%DOCROOT_URL_SLASH%%contact.html">Contacting the IOCCC</a>
<a href="%%DOCROOT_URL_SLASH%%faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="%%DOCROOT_URL_SLASH%%faq.html#fix_a_winner">Fixing IOCCC winners</a>
<a href="%%DOCROOT_URL_SLASH%%faq.html#fix_web_site">Fixing the web site</a>
<a href="%%DOCROOT_URL_SLASH%%bugs.html">Bugs &amp; (mis)features</a>
<a href="%%DOCROOT_URL_SLASH%%thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="#top">Jump to top</a>
</div>
</div>
<div class="rightcolumn">
<a name="content"></a>
-9
View File
@@ -1,9 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
-150
View File
@@ -1,150 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- file: tmp/test.html -->
<!-- created by tool: vim -->
<!-- tool version: 9.0.1894 -->
<!-- content source: tmp/template-header.html -->
<!-- content source: tmp/template-footer.html -->
<!-- -->
<head>
<link rel="stylesheet" href="../ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>test title</title>
<meta name="description" content="test web page">
<meta name="keywords" content="ioccc test, test, IOCCC CSS, IOCCC CSS test">
</head>
<body>
<div class="header">
<img src="../png/ioccc.png" alt="IOCCC image by Matt Zucker" width=300 height=110>
<h1>The International Obfuscated C Code Contest</h1>
<h2>2020/ferguson1</h2>
</div>
<div class="topnav">
<a class="Left Disabled" href="#">&larr; endoh3</a>
<a class="Left" href="#">&uarr; 2020 &uarr;</a>
<a class="Left" href="#">ferguson2 &rarr;</a>
<a class="Right" href="#">Inventory</a>
</div>
<div class="row">
<div class="leftcolumn">
<div class="sidenav">
<a href="#content">Jump to contents</a>
</div>
<hr>
<div class="sidenav">
<a href="../index.html">IOCCC Home</a>
<a href="../years.html">Winning Entries</a>
<a href="../winners.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="../news.html">IOCCC News</a>
<a href="../judges.html">The IOCCC Judges</a>
<a href="../contact.html">Contacting the IOCCC</a>
<a href="../faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="../faq.html#fix_a_winner">Fixing IOCCC winners</a>
<a href="../faq.html#fix_web_site">Fixing the web site</a>
<a href="../bugs.html">Bugs &amp; (mis)features</a>
<a href="../thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="#top">Jump to top</a>
</div>
</div>
<div class="rightcolumn">
<a name="content"></a>
<h1>Resize the browser window to see how this page changes.</h1>
<h2>This is a Header level 2</h2>
<h3>This content has nothing to do with 2020/ferguson1</h3>
<h4>Some of top and side bar navigation links do not (yet) work.</h4>
Below is some C source code!
<code><pre>
int main(void)
{
printf("Hello, world!\n");
}
</pre></code>
Do *NOT* try this set of shell commands at home:
<code><pre>
date
hostname
uptime
sudo shutdown -p now
</pre></code>
<p><a href="http://www.isthe.com">http://www.isthe.com</a></p>
<p><a href="http://www.example.org">http://www.example.org</a></p>
<p><a href="https://www.example.org">https://www.example.org</a></p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Nibh mauris cursus mattis molestie a iaculis at erat pellentesque.
Faucibus purus in massa tempor nec feugiat.
Gravida dictum fusce ut placerat orci nulla pellentesque.
Vehicula ipsum a arcu cursus vitae congue mauris rhoncus.
Risus viverra adipiscing at in tellus.
Orci ac auctor augue mauris augue neque gravida in.
Amet risus nullam eget felis eget.
Massa tincidunt nunc pulvinar sapien et ligula ullamcorper.
Tincidunt dui ut ornare lectus sit.
Semper risus in hendrerit gravida.
Eu mi bibendum neque egestas congue quisque egestas.
Lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi.
Nunc sed velit dignissim sodales ut eu sem.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Maecenas sit amet pretium urna. Vivamus venenatis velit nec neque ultricies,
eget elementum magna tristique. Quisque vehicula, risus eget aliquam placerat,
purus leo tincidunt eros, eget luctus quam orci in velit.
Praesent scelerisque tortor sed accumsan convallis.</p>
<h4>This is a Header level 4</h4>
<p>Dictum at tempor commodo ullamcorper a lacus.
Porttitor eget dolor morbi non arcu.
Orci phasellus egestas tellus rutrum tellus pellentesque eu tincidunt.
Risus pretium quam vulputate dignissim suspendisse in est ante.
Quam vulputate dignissim suspendisse in est ante in nibh.
In arcu cursus euismod quis viverra nibh cras pulvinar mattis. </p>
<h5>This is a Header level 5</h5>
<p>Chania is the capital of the Chania region on the island of Crete.
The city can be divided in two parts, the old town and the modern city.</p>
</div>
</div>
<div class="footer">
<hr>
<h2>Footer</h2>
<p>This is where stuff at the bottom of all pages would be found.</p>
<a href="#top">Jump to top</a>
</div>
</body>
</html>
-1
View File
@@ -1 +0,0 @@
winner_name
-83
View File
@@ -1,83 +0,0 @@
#!/usr/bin/env make
#
# winner_name - extract NAME handles from winners.html
#
# Copyright (c) 2023 by Landon Curt Noll. All Rights Reserved.
#
# Permission to use, copy, modify, and distribute this software and
# its documentation for any purpose and without fee is hereby granted,
# provided that the above copyright, this permission notice and text
# this comment, and the disclaimer below appear in all of the following:
#
# supporting documentation
# source copies
# source works derived from this source
# binaries derived from this source or from derived source
#
# LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
# EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# chongo (Landon Curt Noll, http://www.isthe.com/chongo/index.html) /\oo/\
#
# Share and enjoy! :-)
#############
# utilities #
#############
CC= cc
CHMOD= chmod
CP= cp
INSTALL= install
RM= rm
SHELL= bash
#CFLAGS= -O3 -g3 --pedantic -Wall -Werror
CFLAGS= -O3 -g3 --pedantic -Wall
######################
# target information #
######################
DESTDIR= ../../bin
TARGETS= winner_name
######################################
# all - default rule - must be first #
######################################
all: ${TARGETS}
@:
winner_name: winner_name.sh
${RM} -f -v $@
${CP} -f -v $? $@
${CHMOD} +x $@
#################################################
# .PHONY list of rules that do not create files #
#################################################
.PHONY: all configure clean clobber install
###################################
# standard Makefile utility rules #
###################################
configure:
@:
clean:
@:
clobber: clean
rm -f ${TARGETS}
install: all
${INSTALL} -m 0555 ${TARGETS} ${DESTDIR}
-147
View File
@@ -1,147 +0,0 @@
#!/usr/bin/env bash
#
# winner_name - extract NAME tags from winners.html
#
# Print NAME tags from a winners.html. By default print just the winner_id renamed NAME tags.
#
# Copyright (c) 2023 by Landon Curt Noll. All Rights Reserved.
#
# Permission to use, copy, modify, and distribute this software and
# its documentation for any purpose and without fee is hereby granted,
# provided that the above copyright, this permission notice and text
# this comment, and the disclaimer below appear in all of the following:
#
# supporting documentation
# source copies
# source works derived from this source
# binaries derived from this source or from derived source
#
# LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
# EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# chongo (Landon Curt Noll, http://www.isthe.com/chongo/index.html) /\oo/\
#
# Share and enjoy! :-)
# setup
#
export VERSION="1.0 2023-05-15"
NAME=$(basename "$0")
export NAME
#
export A_FLAG=
export V_FLAG=0
export WINNERS_HTML="./winners.html"
# usage
#
export USAGE="usage: $0 [-h] [-v level] [-V] [-a] [winners.html]
-h print help message and exit
-v level set verbosity level (def level: $V_FLAG)
-V print version string and exit
-a print all NAME tags (def: print just winner_id NAME tags)
winners.html path of winners.html (def: ./winners.html)
Exit codes:
0 all OK
1 winners.html does not exist, not a file, not readable
2 -h and help string printed or -V and version string printed
3 command line error
>= 10 internal error
$NAME version: $VERSION"
# parse command line
#
while getopts :hv:Va flag; do
case "$flag" in
h) echo "$USAGE"
exit 2
;;
v) V_FLAG="$OPTARG"
;;
V) echo "$VERSION"
exit 2
;;
a) A_FLAG="true"
;;
\?) echo "$0: ERROR: invalid option: -$OPTARG" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
:) echo "$0: ERROR: option -$OPTARG requires an argument" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
*) echo "$0: ERROR: unexpected value from getopts: $flag" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
esac
done
if [[ $V_FLAG -ge 1 ]]; then
echo "$0: debug[1]: debug level: $V_FLAG" 1>&2
fi
#
# remove the options
#
shift $(( OPTIND - 1 ));
#
# verify arg count
#
if [[ $# -gt 1 ]]; then
echo "$0: ERROR: expected 0 or 1 args, found: $#" 1>&2
echo "$USAGE" 1>&2
exit 3
fi
#
# parse args
#
if [[ $# -gt 0 ]]; then
export WINNERS_HTML="$1"
fi
# firewall WINNERS_HTML must be a readable file
#
if [[ ! -e $WINNERS_HTML ]]; then
echo "$0: ERROR: winners.html does not exist: $WINNERS_HTML" 1>&2
exit 1
fi
if [[ ! -f $WINNERS_HTML ]]; then
echo "$0: ERROR: winners.html not a file: $WINNERS_HTML" 1>&2
exit 1
fi
if [[ ! -r $WINNERS_HTML ]]; then
echo "$0: ERROR: winners.html not a readable file: $WINNERS_HTML" 1>&2
exit 1
fi
# case: print only winner_id NAME tags
#
if [[ -z $A_FLAG ]]; then
grep -o -i '<a[[:space:]][[:space:]]*name[[:space:]]*=[[:space:]]*"[^"][^"]*"' "$WINNERS_HTML" |
sed -e 's/^.*<[Aa][[:space:]][[:space:]]*[Nn][Aa][Mm][Ee][[:space:]]*=[[:space:]]*"//' -e 's/".*//' |
grep '^[0-9A-Za-z][0-9A-Za-z]*_[0-9A-Za-z][0-9A-Za-z]*$'
# case: print all NAME tags
#
else
grep -o -i '<a[[:space:]][[:space:]]*name[[:space:]]*=[[:space:]]*"[^"][^"]*"' "$WINNERS_HTML" |
sed -e 's/^.*<[Aa][[:space:]][[:space:]]*[Nn][Aa][Mm][Ee][[:space:]]*=[[:space:]]*"//' -e 's/".*//'
fi
# All Done!!! All Done!!! -- Jessica Noll, Age 2
#
exit 0
-502
View File
@@ -1,502 +0,0 @@
# tmp
The tools under this directory are an alpha release.
The [bin directory](bin/index.html)
holds the formal release of tools that will
maintain the [official IOCCC website](https://www.ioccc.org).
Currently these tools maintain the [experimental website](https://ioccc-src.github.io/temp-test-ioccc/)
by default, via the [temp-test-ioccc GitHub repo](https://github.com/ioccc-src/temp-test-ioccc).
These tools will default to using the temp-test-ioccc repo and the experimental website
until the [official IOCCC website](https://www.ioccc.org), via the
[IOCCC winner repo](https://github.com/ioccc-src/winner) is ready for the mass pull request/merge.
**IMPORTANT**: The purpose of the `tmp` directory is to hold temporary files.
The files in the `tmp` directory will go away leaving behind an empty `tmp` directory.
## purpose
This documentation is here to help define terms, files under `tmp/`
and the format of those files.
*NOTE*: The `terms` section may be moved to another file
later on, after the contents of this directory are removed.
## files
### [OLD_manifest](OLD_manifest)
The files in the [OLD_manifest](OLD_manifest) were in the top of
the tmp directory as of 2023 Oct 26. They represent the first
complete manifest that matched the _YYYY/dir_ entry directories.
These files in this directory are kept as a temporary snapshot.
Some obsolete files and tools were moved under [OLD_manifest](OLD_manifest).
### [README.md](README.md)
This file.
### [author_handle.txt](author_handle.txt)
A text file containing `author_handle`s for each `author`: one `author_handle`
per line.
### [author_names.txt](author_names.txt)
A text file of full names of each `author`: one full name per line.
In the case of anonymous authors the form is:
```
Anonymous YYYY
```
### [author_wins.csv](author_wins.csv)
The [author_wins.csv](author_wins.csv) is a CSV file that was exported from the
[author_wins.numbers](author_wins.numbers) file.
In case of conflict, the data in [author_wins.numbers](author_wins.numbers) file is
considered authoritative over the [author_wins.csv](author_wins.csv) file.
The [author_wins.csv.csv](author_wins.csv) is generated from the [author_wins.numbers](author_wins.numbers) file,
via the [macOS](https://www.apple.com/macos/)
[Numbers](https://www.apple.com/numbers/) spreadsheet app, as follows:
0. open [author_wins.numbers](author_wins.numbers) in numbers: modify if/as needed
1. File -> Export To -> CSV...
* 1a. `[ ]` Include table names (unset)
* 1b. Text Encoding: Unicode (UTF-8)
* 1c. Click ((Save..))
2. Save As: author_wins.csv
* 2a. Select the `tmp` directory
3. Click ((Export))
* 3a. If needed click ((Replace))
4. Execute ./[fix_csv.sh](fix_csv.sh)
### [author_wins.numbers](author_wins.numbers)
A [macOS](https://www.apple.com/macos) [Numbers](https://www.apple.com/numbers/)
spreadsheet: one line per `author`.
The first field is an `author_handle`.
The other fields are the `entry_id`'s of all _YYYY/dir_ entry's won by the `author`.
### [check_path_list.sh](check_path_list.sh)
Look for problems with path_list.required.txt, path_list.manifest.txt,
and path_list.found.txt files. In particular, the files found in
winning directories are compared with the list of required files
as well as the complete manifest list of files.
If all is OK, [check_path_list.sh](check_path_list.sh) exits 0 and prints
nothing. If there are missing required files, or extra files found
then [check_path_list.sh](check_path_list.sh) will exit non-zero and
print information about problems.
### [echo.sh](echo.sh)
Tool that simply echos it arguments: used to test [run_all.sh](run_all.sh).
### [entry_dir.txt](entry_dir.txt)
A list of paths to _YYYY/dir_ entry directories that reside
under year directories.
### [entry_id.txt](entry_id.txt)
A text file containing `entry_id` strings: one `entry_id` per line.
### [example.author.json](example.author.json)
This is a JSON file containing an example `author/author_handle.json` for a
fictitious `author`.
### [example.dot_entry.json](example.dot_entry.json)
This is a JSON file containing an example `year/dir/.entry.json` for a
fictitious winning _YYYY/dir_ entry.
A `year/dir/.entry.json` file will be derived from the contents the `year/dir/.id` file,
the [author_wins.csv](author_wins.csv) file, the `year/dir/.year` file, and the
the [manifest.csv](manifest.csv) file.
The 11 field names in [manifest.numbers](manifest.numbers) match
the JSON member names found in
[example.dot_entry.json](example.dot_entry.json).
### [fix_csv.sh](fix_csv.sh)
This tool will fix CSV files exported by
[macOS](https://www.apple.com/macos)
[Numbers](https://www.apple.com/numbers/) by removing carriage
returns and appending a newline if it was missing.
Fixing involves these actions:
``` <!---sh-->
tr -d '\015' < input.csv > tmp.csv
echo >> tmp.csv
mv -f tmp.csv input.csv
```
This tool also forms [path_list.built.txt](path_list.built.txt),
[path_list.manifest.txt](path_list.manifest.txt), and
[path_list.required.txt](path_list.required.txt) from
[manifest.csv](manifest.csv).
### [format-headers.sh](format-headers.sh)
This tool helped format the `README.md` files for _YYYY/dir_ winning entries.
### [gen_entry_json.sh](gen_entry_json.sh)
Generate a `.entry.json` for a given winning _YYYY/dir_ entry.
### [gen_path_list.found.sh](gen_path_list.found.sh)
The list of paths of files in all winning entries.
After doing a `make clobber` this tool updates, if needed,
form [path_list.found.txt](path_list.found.txt).
### [manifest.csv](manifest.csv)
The [manifest.csv](manifest.csv) is a CSV file that was exported from the
[manifest.numbers](manifest.numbers) file.
In case of conflict, the data in [manifest.numbers](manifest.numbers) file is
considered authoritative over the [manifest.csv](manifest.csv) file.
The [manifest.csv](manifest.csv) is generated from the [manifest.numbers](manifest.numbers) file,
via the [macOS](https://www.apple.com/macos/)
[Numbers](https://www.apple.com/numbers/) spreadsheet app, as follows:
0. open [manifest.numbers](manifest.numbers) in numbers: modify if/as needed
1. File -> Export To -> CSV...
* 1a. `[ ]` Include table names (unset)
* 1b. Text Encoding: Unicode (UTF-8)
* 1c. Click ((Save..))
2. Save As: manifest.csv
* 2a. Select the `tmp` directory
3. Click ((Export))
* 3a. If needed click ((Replace))
4. Execute ./[fix_csv.sh](fix_csv.sh)
### [manifest.numbers](manifest.numbers)
A [macOS](https://www.apple.com/macos) [Numbers](https://www.apple.com/numbers/)
spreadsheet contains information about files in _YYYY/dir_ entry directories under year directories.
This file as the following fields:
1. year:
IOCCC year as a 4-character string. Normally this would be a 4 digit year string,
however it may also be a string such as "mock".
NOTE: If year begins with "#", then dir is a comment, and the
rest of the row is to be ignored. Rows of this form do NOT
contain manifest information for a file.
2. dir:
Directory name number the IOCCC year.
3. path:
Path under the IOCCC/directory. In a few cases this is a path,
not just a simple filename under the IOCCC/directory.
4. inventory_order:
This number is the rank showing the order
that this file is to be listed for the given entry's in
the winning entry's `index.html` file.
If the number is 9 digits or less, then the given file
is considered a primary file when listed in the inventory
of files for a given winning _YYYY/dir_ entry.
If the number is 10 digits or more, then the given file
is considered a secondary file when listed in the inventory
of files for a given winning _YYYY/dir_ entry We recommend using the
value **4294967295** (2^32-1) for secondary files.
5. OK_to_edit:
If the value is `true`, then the file is one that may be
edited directly.
If the value is `false`, then the file should **NOT** be
edited, because the given file is generated by a tool.
One should **NOT** modify such a file directly, but
instead modify source files (i.e., markdown files,
JSON files, etc.)
6. display_as:
The type of given file.
7. display_via_github
If `true`, then the contents of the file should be viewed
via the GitHub repo.
If `false`, then the contents of the file should be viewed
in the web browser directly. In some cases this may
result in the file being downloaded instead of being displayed.
8. entry_text:
Any text that should be displayed at the end of line in `index.html`
(with a preceding " - "), or null is no such text is to be displayed.
The 8 field names in [manifest.numbers](manifest.numbers), must
match the JSON member names found in
[example.dot_entry.json](example.dot_entry.json).
NOTE: Cells containing true or false are JSON booleans.
NOTE: All other cells are JSON strings that need to be double quoted, including the year.
NOTE: Do not put commas, nor quotes, nor newlines in fields as these are bound to cause problems.
In case of conflict, the data in [manifest.numbers](manifest.numbers) file is
considered authoritative over the [manifest.csv](manifest.csv) file.
### [path_list.built.txt](path_list.built.txt)
A list of file paths (from the top directory) of _YYYY/dir_ entry directories,
that are built from other primary content files.
These paths are formed from [manifest.numbers](manifest.numbers)
entries where the "created_by" (5th) field is null. See
[manifest.numbers](manifest.numbers) for details on the fields.
This file is formed by the [fix_csv.sh](fix_csv.sh) tool.
### [path_list.found.txt](path_list.found.txt)
A list of files that exist, or should exist once the tools to generate certain files,
such as the `index.html`, or the `.entry.json` files for each entry, are created.
This file is created by [gen_path_list.found.sh](gen_path_list.found.sh).
### [path_list.manifest.txt](path_list.manifest.txt)
This is the list of file paths, both primary and constructed
files from _YYYY/dir_ entry directories.
This file is formed by the [fix_csv.sh](fix_csv.sh) tool.
### [path_list.required.txt](path_list.required.txt)
A list of file paths (from the top directory) of _YYYY/dir_ entry directories,
that are required to exist.
These paths are formed from [manifest.numbers](manifest.numbers)
entries where the "created_by" (5th) field is non-null. See
[manifest.numbers](manifest.numbers) for details on the fields.
This file is formed by the [fix_csv.sh](fix_csv.sh) tool.
### [run_all.sh](run_all.sh)
A tool to run another tool over all _YYYY/dir_ entry directories.
Examples:
``` <!---sh-->
./run_all.sh -v 3 ./fake.gen_index.sh
./run_all.sh -v 1 ./gen_entry_json.sh
```
## [md-chk-paths.sh](%%DOCROOT_SLASH%%tmp/md-chk-paths.sh)
Print full directories of local (non-remote URL) markdown paths.
Usage:
``` <!---sh-->
tmp/md-chk-paths.sh
```
## [md-links.sh](%%DOCROOT_SLASH%%tmp/md-links.sh)
For all markdown files, print markdown links.
Usage:
``` <!---sh-->
tmp/md-links.sh
```
Lines printed are of the form:
```
markdown_path.md [pseudo title](path)
```
## [md-local-links.sh](%%DOCROOT_SLASH%%tmp/md-local-links.sh)
For all markdown files, print markdown links that are local.
We ignore URLs that start with "http:" or "https:" or "mailto:".
We ignore links that are internal to the file (i.e., "#name").
Usage:
``` <!---sh-->
tmp/md-local-links.sh
```
Lines printed are of the form:
```
markdown_path.md [pseudo title](path)
```
## [md-token-links.sh](%%DOCROOT_SLASH%%tmp/md-token-links.sh)
For all markdown files, print markdown links that start with a **%%TOKEN%%**.
Usage:
``` <!---sh-->
tmp/md-token-links.sh
```
Lines printed are of the form:
```
markdown_path.md [pseudo title](%%TOKEN%%path)
```
## [md-link-paths.sh](%%DOCROOT_SLASH%%tmp/md-link-paths.sh(
Print local file paths referenced in markdown links.
We ignore URLs that start with "http:" or "https:" or "mailto:".
We remove "%%REPO_URL%%/" and "%%DOCROOT_SLASH%%" from paths.
We delete lines with "%%TOKEN%%" as this is just a test/example token.
Usage:
``` <!---sh-->
tmp/md-link-paths.sh
```
Lines printed are of the form:
```
path
```
### [src](src)
This is a temporary location for potential tools that are used to
build and maintain the www.ioccc.org website.
### [things-todo.md](things-todo.md)
A todo list of known things to check and/or do.
### [update-manifest.sh](update-manifest.sh)
Interactive script to update the IOCCC manifest step by step post manifest.csv export.
### [year_prize.csv](year_prize.csv)
The [year_prize.csv](year_prize.csv) is a CSV file that was exported from the
[year_prize.numbers](year_prize.numbers) file.
In case of conflict, the data in [year_prize.numbers](year_prize.numbers) file is
considered authoritative over the [year_prize.csv](year_prize.csv) file.
The [year_prize.csv.csv](year_prize.csv) is generated from the [year_prizes.numbers](year_prize.numbers) file,
via the [macOS](https://www.apple.com/macos/)
[Numbers](https://www.apple.com/numbers/) spreadsheet app, as follows:
0. open [year_prize.numbers](year_prize.numbers) in numbers: modify if/as needed
1. File -> Export To -> CSV...
* 1a. `[ ]` Include table names (unset)
* 1b. Text Encoding: Unicode (UTF-8)
* 1c. Click ((Save..))
2. Save As: year_prize.csv
* 2a. Select the `tmp` directory
3. Click ((Export))
* 3a. If needed click ((Replace))
4. Execute ./[fix_csv.sh](fix_csv.sh)
### [year_prize.numbers](year_prize.numbers)
A [macOS](https://www.apple.com/macos) [Numbers](https://www.apple.com/numbers/)
spreadsheet: one line per _YYYY/dir_ entry directory.
The first field is a `entry_id`.
The second field is the name of the award for given _YYYY/dir_ entry.
<!--
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/
-->
-196
View File
@@ -1,196 +0,0 @@
Aaron_Grothe
Adar_Zeitak
Adrian_Cable
Adrian_Mariano
Aidan_Thornton
Alan_De_Smet
Albert_van_der_Horst
Alex_Deckmyn
Alexander_Prishchepov
Anders_Gavare
Andrea_Marangoni
Andreas_Gustafsson
Andrew_Shapiro
Andy_Sloane
Anonymous_1984
Anonymous_2004
Anonymous_2005
Anonymous_2015
Anthony_C_Howe
Anton_Algmyr
Arch_D_Robison
Arne_Heizmann
Baruch_Nissenbaum
Bas_de_Bakker
Ben_Lynn
Bernd_Meyer
Brent_Burley
Brian_Westley
Bruce_Holloway
Bsoup
Byron_Rakitzis
Carl_Banks
Carl_Shapiro
Carlos_Duarte
Cel_Skeggs
Chris_King
Christian_Dupont
Christopher_Mills
Christopher_Night
Cody_Boone_Ferguson
Col_G_L_Sicherman
Craig_Schneiderwent
Daniel_Fischer
Daniel_J_Bernstein
Daniel_Vik
Dave_Burton
Dave_Decot
David_Applegate
David_Gibson
David_Goodenough
David_Korn
David_Madore
David_Van_Brackle
Dean_Swift
Derek_Anderson
Diomidis_Spinellis
Dominik_Muth
Don_Dodson
Don_Yang
Doron_Osovlanski
Doug_Beardsley
E_Jay_Berkenbilt
Ed_Luke
Ed_Lycklama
Edward_Giles
Edward_Rosten
Eric_Marshall
Eryk_Kopczynski
Esko_Nuutila
Etienne_Duble
Fabrice_Bellard
Ferenc_Deak
Francois_Boutines
Frans_van_Dorsselaer
Freek_Wiedijk
Garry_Glendown
Gavin_Barraclough
Gavin_Buttimore
Gil_Dogon
Glyn_Anderson
Gopi_Reddy
Gregor_Richards
Heather_Downs
Ian_Collier
Ian_Phillipps
Ilya_Kurdyukov
Immanuel_Herrmann
J_David_Lowe
Jack_Applin
James_A_Woods
James_Bonfield
Jan_Stein
Jari_Arkko
Jason_Orendorff
Jay_Vosburgh
Jeff_Newbern
Jeff_Weisberg
Jens_Schweikhardt
Jetro_Lauha
Jim_Hague
John_Dalbec
John_Tromp
John_Williams
Jon_Thingvold
Jonathan_Hoyle
Joshua_Karns
Jyrki_Holopainen
Karl_F_Fox
Ken_Huffman
Kevin_Pulo
Kimmo_Fredriksson
Larry_Jones
Larry_Wall
Laurion_Burchall
Lennart_Augustsson
Leonid_A_Broukhis
Lord_Zarbon
Maarten_Litmaath
Marcin_Ciura
Mark_Biggar
Mark_Isaak
Mark_Plummer
Mark_Schnitzius
Mary_Ann_Horton
Matt_Zucker
Maurizio_Monge
Mauro_Persano
Michael_Ash
Michael_Birken
Michael_H_Pawka
Michael_Savastio
Mike_Laman
Moxen_N_Briddlebane
NATORI_Shin
Nathan_Otterness
Nathan_Sidwell
Neil_Mix
Nicholas_Carlini
Nick_Johnson
Nicolas_Ollinger
Ondrej_Adamovsky
Ora_Lassila
Oscar_Toledo
Oskar_von_der_Luehe
Paul_Dale
Paul_E_Black
Paul_Eggert
Paul_Heckbert
Peter_Eastman
Peter_J_Ruczynski
Peter_Klausler
Philip_Blakely
Pierre-Philippe_Coupard
Qiming_HOU
Raphael_Meyer
Raymond_Cheong
Robbert_van_Renesse
Robert_Heckendorn
Roemer_B_Lievaart
Ron_McFarland
Sandro_Maffiodo
Scott_Vokes
Sean_Barrett
Sean_Dorward
Sebastian_Deorowicz
Selene_Makarios
Seonghoon_Kang
Shinichiro_Hamaji
Sjoerd_Mullender
Spencer_Hines
Steinar_Hamre
Stephen_Sykes
Stig_Hemmer
Szabolcs_Borsanyi
Szymon_Rusinkiewicz
Taketo_Konno
Teemu_Rantanen
Tero_Kivinen
Thaddaeus_Frogley
Thomas_A_Fine
Thomas_P_John
Thomas_Stewart
Thor_Eldby
Timo_Poikola
Tom_Torfs
Tony_Finch
Tsoj
Tsukasa_Hamano
Uri_Goren
V_Chia
Vern_Paxson
Vincent_Weaver
Volker_Diels-Grabsch
Walter_Bright
Yusuke_Endoh
Yves-Marie_Morgan
-196
View File
@@ -1,196 +0,0 @@
Aaron Grothe
Adar Zeitak
Adrian Cable
Adrian Mariano
Aidan Thornton
Alan De Smet
Albert van der Horst
Alex Deckmyn
Alexander Prishchepov
Anders Gavare
Andrea Marangoni
Andreas Gustafsson
Andrew T. Shapiro
Andy Sloane
Anonymous 1984
Anonymous 2004
Anonymous 2005
Anonymous 2015
Anthony C. Howe
Anton Älgmyr
Arch D. Robison
Arne Timwi Heizmann
Baruch Nissenbaum
Bas de Bakker
Ben Lynn
Bernd Meyer
Brent Burley
Brian Westley
Bruce Holloway
Byron Rakitzis
Carl Banks
Carl Shapiro
Carlos Duarte
Cel Skeggs
Chris King
Christian Dupont
Christopher Mills
Christopher Night
Cody Boone Ferguson
Col. G. L. Sicherman
Craig Schneiderwent
Daniel Fischer
Daniel J. Bernstein
Daniel Vik
Dave Burton
Dave Decot
David Applegate
David Gibson
David Goodenough
David Korn
David Madore
David Van Brackle
Dean Swift
Derek Anderson
Diomidis Spinellis
Dominik Muth
Don Dodson
Don Yang
Doron Osovlanski
Doug Beardsley
E. Jay Berkenbilt
Ed Luke
Ed Lycklama
Edward Giles
Edward Rosten
Eric Marshall
Eryk Kopczynski
Esko Nuutila
Etienne Duble
Fabrice Bellard
Ferenc Deak
Francois Boutines
Frans van Dorsselaer
Freek Wiedijk
Garry Glendown
Gavin Barraclough
Gavin Buttimore
Gil Dogon
Glyn Anderson
Gopi Reddy
Gregor Richards
Heather Downs
Ian Collier
Ian Phillipps
Ilya Kurdyukov
Immanuel Herrmann
J. David Lowe
Jack Applin
James A. Woods
James Bonfield
Jan Stein
Jari Arkko
Jason Orendorff
Jay Vosburgh
Jeff Newbern
Jeff Weisberg
Jens Schweikhardt
Jetro Lauha
Jim Hague
John Dalbec
John Tromp
John Williams
Jon Thingvold
Jonathan Hoyle
Joshua Karns
Jyrki Holopainen
Karl F. Fox
Ken Huffman
Kevin Pulo
Kimmo Fredriksson
Larry Jones
Larry Wall
Laurion Burchall
Lennart Augustsson
Leonid A. Broukhis
Lord Zarbon
Maarten Litmaath
Marcin Ciura
Mark Biggar
Mark Isaak
Mark Plummer
Mark Schnitzius
Mary Ann Horton
Matt Zucker
Maurizio Monge
Mauro Persano
Michael Ash
Michael Birken
Michael H. Pawka
Michael Savastio
Mike Laman
Moxen N. Briddlebane
NATORI Shin
Nathan Otterness
Nathan Sidwell
Neil Mix
Nicholas Carlini
Nick Johnson
Nicolas Ollinger
Ondřej Adamovský
Ora Lassila
Oscar Toledo G.
Oskar von der Luehe
Paul Dale
Paul E. Black
Paul Eggert
Paul Heckbert
Peter Eastman
Peter J Ruczynski
Peter Klausler
Philip Blakely
Pierre-Philippe Coupard
Qiming HOU
Raphael Meyer
Raymond Cheong
Robbert van Renesse
Robert Heckendorn
Roemer B. Lievaart
Ron McFarland
Sandro Maffiodo
Scott Vokes
Sean Barrett
Sean Dorward
Sebastian Deorowicz
Selene Makarios
Seonghoon Kang
Shinichiro Hamaji
Sjoerd Mullender
Spencer Hines
Steinar Hamre
Stephen Sykes
Stig Hemmer
Szabolcs Borsanyi
Szymon Rusinkiewicz
Taketo Konno
Teemu Rantanen
Tero Kivinen
Thaddaeus Frogley
Thomas A. Fine
Thomas P John
Thomas Stewart
Thor Eldby
Timo Poikola
Tom Torfs
Tony Finch
Tsukasa Hamano
Uri Goren
V. Chia
Vern Paxson
Vincent Weaver
Volker Diels-Grabsch
Walter Bright
Yusuke Endoh
Yves-Marie Morgan
bsoup
tsoj
-198
View File
@@ -1,198 +0,0 @@
# author_handle,entry_id,entry_id,entry_id,…,,,,,,,,,,,,,,,
Aaron_Grothe,2006_grothe,2012_grothe,,,,,,,,,,,,,,,,,
Adar_Zeitak,2012_zeitak,,,,,,,,,,,,,,,,,,
Adrian_Cable,2013_cable1,2013_cable2,2013_cable3,,,,,,,,,,,,,,,,
Adrian_Mariano,1990_theorem,1992_adrian,,,,,,,,,,,,,,,,,
Aidan_Thornton,2005_aidan,,,,,,,,,,,,,,,,,,
Alan_De_Smet,1998_chaos,,,,,,,,,,,,,,,,,,
Albert_van_der_Horst,1992_albert,,,,,,,,,,,,,,,,,,
Alex_Deckmyn,2012_deckmyn,,,,,,,,,,,,,,,,,,
Alexander_Prishchepov,2014_birken,,,,,,,,,,,,,,,,,,
Anders_Gavare,2004_gavare,,,,,,,,,,,,,,,,,,
Andrea_Marangoni,1992_marangon,,,,,,,,,,,,,,,,,,
Andreas_Gustafsson,1992_gson,,,,,,,,,,,,,,,,,,
Andrew_Shapiro,1994_shapiro,,,,,,,,,,,,,,,,,,
Andy_Sloane,2006_sloane,,,,,,,,,,,,,,,,,,
Anonymous_1984,1984_anonymous,,,,,,,,,,,,,,,,,,
Anonymous_2001,2001_anonymous,,,,,,,,,,,,,,,,,,
Anonymous_2004,2004_anonymous,,,,,,,,,,,,,,,,,,
Anonymous_2005,2005_anon,,,,,,,,,,,,,,,,,,
Anonymous_2015,2015_endoh1,,,,,,,,,,,,,,,,,,
Anthony_C_Howe,1991_ant,1992_ant,1993_ant,2004_hibachi,2005_mynx,2015_howe,,,,,,,,,,,,,
Anton_Algmyr,2018_algmyr,,,,,,,,,,,,,,,,,,
Arch_D_Robison,1988_robison,1989_robison,2000_robison,2013_robison,,,,,,,,,,,,,,,
Arne_Heizmann,2005_timwi,,,,,,,,,,,,,,,,,,
Baruch_Nissenbaum,1990_baruch,,,,,,,,,,,,,,,,,,
Bas_de_Bakker,1998_bas1,1998_bas2,,,,,,,,,,,,,,,,,
Ben_Lynn,2019_lynn,,,,,,,,,,,,,,,,,,
Bernd_Meyer,2000_bmeyer,,,,,,,,,,,,,,,,,,
Brent_Burley,2004_burley,,,,,,,,,,,,,,,,,,
Brian_Westley,1987_westley,1988_westley,1989_westley,1990_westley,1991_westley,1992_westley,1994_westley,1996_westley,2001_westley,,,,,,,,,,
Bruce_Holloway,1986_holloway,,,,,,,,,,,,,,,,,,
Bsoup,2011_hamaji,,,,,,,,,,,,,,,,,,
Byron_Rakitzis,1990_tbr,,,,,,,,,,,,,,,,,,
Carl_Banks,1998_banks,,,,,,,,,,,,,,,,,,
Carl_Shapiro,1985_shapiro,,,,,,,,,,,,,,,,,,
Carlos_Duarte,1995_cdua,,,,,,,,,,,,,,,,,,
Cel_Skeggs,2014_skeggs,,,,,,,,,,,,,,,,,,
Chris_King,2001_ctk,,,,,,,,,,,,,,,,,,
Christian_Dupont,1991_cdupont,,,,,,,,,,,,,,,,,,
Christopher_Mills,1990_cmills,1993_cmills,2013_mills,2015_mills1,2015_mills2,2018_mills,2019_mills,,,,,,,,,,,,
Christopher_Night,2006_night,,,,,,,,,,,,,,,,,,
Cody_Boone_Ferguson,2018_ferguson,2020_ferguson1,2020_ferguson2,,,,,,,,,,,,,,,,
Col_G_L_Sicherman,1985_sicherman,,,,,,,,,,,,,,,,,,
Craig_Schneiderwent,2000_schneiderwent,,,,,,,,,,,,,,,,,,
Daniel_Fischer,1998_df,,,,,,,,,,,,,,,,,,
Daniel_J_Bernstein,1991_brnstnd,,,,,,,,,,,,,,,,,,
Daniel_Vik,2004_vik1,2004_vik2,2005_vik,2011_vik,2012_vik,2014_vik,,,,,,,,,,,,,
Dave_Burton,2015_burton,2018_burton1,2018_burton2,2019_burton,2020_burton,,,,,,,,,,,,,,
Dave_Decot,1984_decot,,,,,,,,,,,,,,,,,,
David_Applegate,1991_davidguy,,,,,,,,,,,,,,,,,,
David_Gibson,1993_dgibson,,,,,,,,,,,,,,,,,,
David_Goodenough,1990_dg,,,,,,,,,,,,,,,,,,
David_Korn,1987_korn,,,,,,,,,,,,,,,,,,
David_Madore,2012_grothe,,,,,,,,,,,,,,,,,,
David_Van_Brackle,1989_vanb,1993_vanb,1995_vanschnitz,,,,,,,,,,,,,,,,
Dean_Swift,1996_gandalf,,,,,,,,,,,,,,,,,,
Derek_Anderson,2018_anderson,,,,,,,,,,,,,,,,,,
Diomidis_Spinellis,1988_spinellis,1990_dds,1991_dds,1995_spinellis,,,,,,,,,,,,,,,
Dominik_Muth,2015_muth,,,,,,,,,,,,,,,,,,
Don_Dodson,1994_dodsond1,1994_dodsond2,1995_dodsond1,1995_dodsond2,,,,,,,,,,,,,,,
Don_Yang,2000_dhyang,2004_omoikane,2011_akari,2012_omoikane,2013_misaka,2014_sinon,2015_yang,2018_yang,2019_yang,2020_yang,,,,,,,,,
Doron_Osovlanski,1990_baruch,,,,,,,,,,,,,,,,,,
Doug_Beardsley,2001_dgbeards,,,,,,,,,,,,,,,,,,
E_Jay_Berkenbilt,1993_ejb,,,,,,,,,,,,,,,,,,
Ed_Luke,1992_lush,,,,,,,,,,,,,,,,,,
Ed_Lycklama,1985_lycklama,,,,,,,,,,,,,,,,,,
Edward_Giles,2018_giles,2019_giles,2020_giles,,,,,,,,,,,,,,,,
Edward_Rosten,2001_rosten,,,,,,,,,,,,,,,,,,
Eric_Marshall,1986_marshall,,,,,,,,,,,,,,,,,,
Eryk_Kopczynski,2004_kopczynski,,,,,,,,,,,,,,,,,,
Esko_Nuutila,1989_jar.2,,,,,,,,,,,,,,,,,,
Etienne_Duble,2015_duble,2019_duble,,,,,,,,,,,,,,,,,
Fabrice_Bellard,2000_bellard,2001_bellard,2018_bellard,,,,,,,,,,,,,,,,
Ferenc_Deak,2014_deak,,,,,,,,,,,,,,,,,,
Francois_Boutines,2005_boutines,,,,,,,,,,,,,,,,,,
Frans_van_Dorsselaer,1998_dorssel,,,,,,,,,,,,,,,,,,
Freek_Wiedijk,2014_wiedijk,,,,,,,,,,,,,,,,,,
Garry_Glendown,1995_garry,,,,,,,,,,,,,,,,,,
Gavin_Barraclough,2004_gavin,,,,,,,,,,,,,,,,,,
Gavin_Buttimore,2000_thadgavin,,,,,,,,,,,,,,,,,,
Gil_Dogon,2005_giljade,2015_dogon,2019_dogon,,,,,,,,,,,,,,,,
Glyn_Anderson,2000_anderson,,,,,,,,,,,,,,,,,,
Gopi_Reddy,1988_reddy,,,,,,,,,,,,,,,,,,
Gregor_Richards,2011_richards,,,,,,,,,,,,,,,,,,
Heather_Downs,1995_heathbar,1995_makarios,,,,,,,,,,,,,,,,,
Ian_Collier,1992_imc,1994_imc,,,,,,,,,,,,,,,,,
Ian_Phillipps,1988_phillipps,,,,,,,,,,,,,,,,,,
Ilya_Kurdyukov,2020_kurdyukov1,2020_kurdyukov2,2020_kurdyukov3,2020_kurdyukov4,,,,,,,,,,,,,,,
Immanuel_Herrmann,2001_herrmann1,2001_herrmann2,,,,,,,,,,,,,,,,,
J_David_Lowe,1998_dlowe,1998_dloweneil,2000_dlowe,2011_dlowe,2012_dlowe,2013_dlowe,,,,,,,,,,,,,
Jack_Applin,1985_applin,1986_applin,1988_applin,,,,,,,,,,,,,,,,
James_A_Woods,1990_jaw,,,,,,,,,,,,,,,,,,
James_Bonfield,1991_rince,1993_rince,2000_rince,,,,,,,,,,,,,,,,
Jan_Stein,1986_stein,,,,,,,,,,,,,,,,,,
Jari_Arkko,1989_jar.1,1989_jar.2,2000_jarijyrki,,,,,,,,,,,,,,,,
Jason_Orendorff,2001_jason,,,,,,,,,,,,,,,,,,
Jay_Vosburgh,1989_fubar,,,,,,,,,,,,,,,,,,
Jeff_Newbern,2004_newbern,,,,,,,,,,,,,,,,,,
Jeff_Weisberg,1994_weisberg,,,,,,,,,,,,,,,,,,
Jens_Schweikhardt,1996_schweikh1,1996_schweikh2,1996_schweikh3,1998_schweikh1,1998_schweikh2,1998_schweikh3,2001_schweikh,2015_schweikhardt,,,,,,,,,,,
Jetro_Lauha,2005_jetro,,,,,,,,,,,,,,,,,,
Jim_Hague,1986_hague,,,,,,,,,,,,,,,,,,
John_Dalbec,1996_dalbec,2004_jdalbec,,,,,,,,,,,,,,,,,
John_Tromp,1989_tromp,2012_tromp,,,,,,,,,,,,,,,,,
John_Williams,2001_williams,,,,,,,,,,,,,,,,,,
Jon_Thingvold,1993_jonth,1996_jonth,,,,,,,,,,,,,,,,,
Jonathan_Hoyle,2004_hoyle,,,,,,,,,,,,,,,,,,
Joshua_Karns,2019_karns,,,,,,,,,,,,,,,,,,
Jyrki_Holopainen,1993_lmfjyh,2000_jarijyrki,,,,,,,,,,,,,,,,,
Karl_F_Fox,1990_jaw,,,,,,,,,,,,,,,,,,
Ken_Huffman,1996_huffman,,,,,,,,,,,,,,,,,,
Kevin_Pulo,2001_kev,,,,,,,,,,,,,,,,,,
Kimmo_Fredriksson,2011_fredriksson,,,,,,,,,,,,,,,,,,
Larry_Jones,1990_scjones,,,,,,,,,,,,,,,,,,
Larry_Wall,1986_wall,1987_wall,,,,,,,,,,,,,,,,,
Laurion_Burchall,1994_ldb,,,,,,,,,,,,,,,,,,
Lennart_Augustsson,1985_august,1986_august,1996_august,,,,,,,,,,,,,,,,
Leonid_A_Broukhis,1993_leo,1995_leo,,,,,,,,,,,,,,,,,
Lord_Zarbon,2000_briddlebane,,,,,,,,,,,,,,,,,,
Maarten_Litmaath,1988_litmaath,,,,,,,,,,,,,,,,,,
Marcin_Ciura,2018_ciura,2019_ciura,,,,,,,,,,,,,,,,,
Mark_Biggar,1987_biggar,,,,,,,,,,,,,,,,,,
Mark_Isaak,1988_isaak,,,,,,,,,,,,,,,,,,
Mark_Plummer,1993_plummer,,,,,,,,,,,,,,,,,,
Mark_Schnitzius,1993_schnitzi,1994_schnitzi,1995_schnitzi,1995_vanschnitz,1998_schnitzi,2004_schnitzi,,,,,,,,,,,,,
Mary_Ann_Horton,1994_horton,,,,,,,,,,,,,,,,,,
Matt_Zucker,2011_zucker,,,,,,,,,,,,,,,,,,
Maurizio_Monge,2006_monge,,,,,,,,,,,,,,,,,,
Mauro_Persano,2005_persano,,,,,,,,,,,,,,,,,,
Michael_Ash,2005_mikeash,,,,,,,,,,,,,,,,,,
Michael_Birken,2006_birken,2013_birken,2014_birken,,,,,,,,,,,,,,,,
Michael_H_Pawka,1986_pawka,,,,,,,,,,,,,,,,,,
Michael_Savastio,1995_savastio,,,,,,,,,,,,,,,,,,
Mike_Laman,1984_laman,,,,,,,,,,,,,,,,,,
Moxen_N_Briddlebane,2000_briddlebane,,,,,,,,,,,,,,,,,,
NATORI_Shin,2000_natori,,,,,,,,,,,,,,,,,,
Nathan_Otterness,2020_otterness,,,,,,,,,,,,,,,,,,
Nathan_Sidwell,1992_nathan,,,,,,,,,,,,,,,,,,
Neil_Mix,1998_dloweneil,,,,,,,,,,,,,,,,,,
Nicholas_Carlini,2020_carlini,,,,,,,,,,,,,,,,,,
Nick_Johnson,2004_arachnid,,,,,,,,,,,,,,,,,,
Nicolas_Ollinger,2001_ollinger,,,,,,,,,,,,,,,,,,
Ondrej_Adamovsky,2019_adamovsky,,,,,,,,,,,,,,,,,,
Ora_Lassila,1989_jar.2,,,,,,,,,,,,,,,,,,
Oscar_Toledo,2005_toledo,2006_toledo1,2006_toledo2,2006_toledo3,2011_toledo,,,,,,,,,,,,,,
Oskar_von_der_Luehe,1989_ovdluhe,,,,,,,,,,,,,,,,,,
Paul_Dale,1988_dale,,,,,,,,,,,,,,,,,,
Paul_E_Black,1989_paul,,,,,,,,,,,,,,,,,,
Paul_Eggert,1990_jaw,,,,,,,,,,,,,,,,,,
Paul_Heckbert,1987_heckbert,,,,,,,,,,,,,,,,,,
Peter_Eastman,2011_eastman,,,,,,,,,,,,,,,,,,
Peter_J_Ruczynski,1990_pjr,,,,,,,,,,,,,,,,,,
Peter_Klausler,2005_klausler,,,,,,,,,,,,,,,,,,
Philip_Blakely,2011_blakely,2012_blakely,,,,,,,,,,,,,,,,,
Pierre-Philippe_Coupard,2001_coupard,,,,,,,,,,,,,,,,,,
Qiming_HOU,2011_hou,2012_hou,2013_hou,2015_hou,2018_hou,,,,,,,,,,,,,,
Raphael_Meyer,2006_meyer,,,,,,,,,,,,,,,,,,
Raymond_Cheong,2000_primenum,2001_cheong,,,,,,,,,,,,,,,,,
Robbert_van_Renesse,1984_mullender,,,,,,,,,,,,,,,,,,
Robert_Heckendorn,1985_applin,,,,,,,,,,,,,,,,,,
Roemer_B_Lievaart,1987_lievaart,1989_roemer,,,,,,,,,,,,,,,,,
Ron_McFarland,1996_rcm,,,,,,,,,,,,,,,,,,
Sandro_Maffiodo,2014_maffiodo1,2014_maffiodo2,,,,,,,,,,,,,,,,,
Scott_Vokes,2018_vokes,,,,,,,,,,,,,,,,,,
Sean_Barrett,1991_buzzard,1992_buzzard.1,1992_buzzard.2,,,,,,,,,,,,,,,,
Sean_Dorward,1990_tbr,,,,,,,,,,,,,,,,,,
Sebastian_Deorowicz,1995_esde,,,,,,,,,,,,,,,,,,
Selene_Makarios,1995_heathbar,1995_makarios,,,,,,,,,,,,,,,,,
Seonghoon_Kang,2012_kang,,,,,,,,,,,,,,,,,,
Shinichiro_Hamaji,2011_hamaji,,,,,,,,,,,,,,,,,,
Sjoerd_Mullender,1984_mullender,,,,,,,,,,,,,,,,,,
Spencer_Hines,1987_hines,,,,,,,,,,,,,,,,,,
Steinar_Hamre,2006_hamre,,,,,,,,,,,,,,,,,,
Stephen_Sykes,2004_sds,2005_sykes,2006_sykes1,2006_sykes2,,,,,,,,,,,,,,,
Stig_Hemmer,1990_stig,,,,,,,,,,,,,,,,,,
Szabolcs_Borsanyi,2006_borsanyi,2011_borsanyi,,,,,,,,,,,,,,,,,
Szymon_Rusinkiewicz,1994_smr,,,,,,,,,,,,,,,,,,
Taketo_Konno,2011_konno,2012_konno,,,,,,,,,,,,,,,,,
Teemu_Rantanen,1994_tvr,,,,,,,,,,,,,,,,,,
Tero_Kivinen,1992_kivinen,,,,,,,,,,,,,,,,,,
Thaddaeus_Frogley,2000_thadgavin,,,,,,,,,,,,,,,,,,
Thomas_A_Fine,1991_fine,,,,,,,,,,,,,,,,,,
Thomas_P_John,2000_tomx,,,,,,,,,,,,,,,,,,
Thomas_Stewart,2006_stewart,,,,,,,,,,,,,,,,,,
Thor_Eldby,1996_eldby,,,,,,,,,,,,,,,,,,
Timo_Poikola,2018_poikola,2019_poikola,,,,,,,,,,,,,,,,,
Tom_Torfs,1998_tomtorfs,,,,,,,,,,,,,,,,,,
Tony_Finch,1998_fanf,,,,,,,,,,,,,,,,,,
Tsoj,2020_tsoj,,,,,,,,,,,,,,,,,,
Tsukasa_Hamano,2012_hamano,,,,,,,,,,,,,,,,,,
Uri_Goren,2011_goren,,,,,,,,,,,,,,,,,,
V_Chia,2005_chia,,,,,,,,,,,,,,,,,,
Vern_Paxson,1992_vern,,,,,,,,,,,,,,,,,,
Vincent_Weaver,2005_vince,,,,,,,,,,,,,,,,,,
Volker_Diels-Grabsch,2019_diels-grabsch1,2019_diels-grabsch2,,,,,,,,,,,,,,,,,
Walter_Bright,1986_bright,,,,,,,,,,,,,,,,,,
Yusuke_Endoh,2012_endoh1,2012_endoh2,2013_endoh1,2013_endoh2,2013_endoh3,2013_endoh4,2014_endoh1,2014_endoh2,2015_endoh1,2015_endoh2,2015_endoh3,2015_endoh4,2018_endoh1,2018_endoh2,2019_endoh,2020_endoh1,2020_endoh2,2020_endoh3,
Yves-Marie_Morgan,2013_morgan1,2013_morgan2,2014_morgan,,,,,,,,,,,,,,,,
1 # author_handle entry_id entry_id entry_id …
2 Aaron_Grothe 2006_grothe 2012_grothe
3 Adar_Zeitak 2012_zeitak
4 Adrian_Cable 2013_cable1 2013_cable2 2013_cable3
5 Adrian_Mariano 1990_theorem 1992_adrian
6 Aidan_Thornton 2005_aidan
7 Alan_De_Smet 1998_chaos
8 Albert_van_der_Horst 1992_albert
9 Alex_Deckmyn 2012_deckmyn
10 Alexander_Prishchepov 2014_birken
11 Anders_Gavare 2004_gavare
12 Andrea_Marangoni 1992_marangon
13 Andreas_Gustafsson 1992_gson
14 Andrew_Shapiro 1994_shapiro
15 Andy_Sloane 2006_sloane
16 Anonymous_1984 1984_anonymous
17 Anonymous_2001 2001_anonymous
18 Anonymous_2004 2004_anonymous
19 Anonymous_2005 2005_anon
20 Anonymous_2015 2015_endoh1
21 Anthony_C_Howe 1991_ant 1992_ant 1993_ant 2004_hibachi 2005_mynx 2015_howe
22 Anton_Algmyr 2018_algmyr
23 Arch_D_Robison 1988_robison 1989_robison 2000_robison 2013_robison
24 Arne_Heizmann 2005_timwi
25 Baruch_Nissenbaum 1990_baruch
26 Bas_de_Bakker 1998_bas1 1998_bas2
27 Ben_Lynn 2019_lynn
28 Bernd_Meyer 2000_bmeyer
29 Brent_Burley 2004_burley
30 Brian_Westley 1987_westley 1988_westley 1989_westley 1990_westley 1991_westley 1992_westley 1994_westley 1996_westley 2001_westley
31 Bruce_Holloway 1986_holloway
32 Bsoup 2011_hamaji
33 Byron_Rakitzis 1990_tbr
34 Carl_Banks 1998_banks
35 Carl_Shapiro 1985_shapiro
36 Carlos_Duarte 1995_cdua
37 Cel_Skeggs 2014_skeggs
38 Chris_King 2001_ctk
39 Christian_Dupont 1991_cdupont
40 Christopher_Mills 1990_cmills 1993_cmills 2013_mills 2015_mills1 2015_mills2 2018_mills 2019_mills
41 Christopher_Night 2006_night
42 Cody_Boone_Ferguson 2018_ferguson 2020_ferguson1 2020_ferguson2
43 Col_G_L_Sicherman 1985_sicherman
44 Craig_Schneiderwent 2000_schneiderwent
45 Daniel_Fischer 1998_df
46 Daniel_J_Bernstein 1991_brnstnd
47 Daniel_Vik 2004_vik1 2004_vik2 2005_vik 2011_vik 2012_vik 2014_vik
48 Dave_Burton 2015_burton 2018_burton1 2018_burton2 2019_burton 2020_burton
49 Dave_Decot 1984_decot
50 David_Applegate 1991_davidguy
51 David_Gibson 1993_dgibson
52 David_Goodenough 1990_dg
53 David_Korn 1987_korn
54 David_Madore 2012_grothe
55 David_Van_Brackle 1989_vanb 1993_vanb 1995_vanschnitz
56 Dean_Swift 1996_gandalf
57 Derek_Anderson 2018_anderson
58 Diomidis_Spinellis 1988_spinellis 1990_dds 1991_dds 1995_spinellis
59 Dominik_Muth 2015_muth
60 Don_Dodson 1994_dodsond1 1994_dodsond2 1995_dodsond1 1995_dodsond2
61 Don_Yang 2000_dhyang 2004_omoikane 2011_akari 2012_omoikane 2013_misaka 2014_sinon 2015_yang 2018_yang 2019_yang 2020_yang
62 Doron_Osovlanski 1990_baruch
63 Doug_Beardsley 2001_dgbeards
64 E_Jay_Berkenbilt 1993_ejb
65 Ed_Luke 1992_lush
66 Ed_Lycklama 1985_lycklama
67 Edward_Giles 2018_giles 2019_giles 2020_giles
68 Edward_Rosten 2001_rosten
69 Eric_Marshall 1986_marshall
70 Eryk_Kopczynski 2004_kopczynski
71 Esko_Nuutila 1989_jar.2
72 Etienne_Duble 2015_duble 2019_duble
73 Fabrice_Bellard 2000_bellard 2001_bellard 2018_bellard
74 Ferenc_Deak 2014_deak
75 Francois_Boutines 2005_boutines
76 Frans_van_Dorsselaer 1998_dorssel
77 Freek_Wiedijk 2014_wiedijk
78 Garry_Glendown 1995_garry
79 Gavin_Barraclough 2004_gavin
80 Gavin_Buttimore 2000_thadgavin
81 Gil_Dogon 2005_giljade 2015_dogon 2019_dogon
82 Glyn_Anderson 2000_anderson
83 Gopi_Reddy 1988_reddy
84 Gregor_Richards 2011_richards
85 Heather_Downs 1995_heathbar 1995_makarios
86 Ian_Collier 1992_imc 1994_imc
87 Ian_Phillipps 1988_phillipps
88 Ilya_Kurdyukov 2020_kurdyukov1 2020_kurdyukov2 2020_kurdyukov3 2020_kurdyukov4
89 Immanuel_Herrmann 2001_herrmann1 2001_herrmann2
90 J_David_Lowe 1998_dlowe 1998_dloweneil 2000_dlowe 2011_dlowe 2012_dlowe 2013_dlowe
91 Jack_Applin 1985_applin 1986_applin 1988_applin
92 James_A_Woods 1990_jaw
93 James_Bonfield 1991_rince 1993_rince 2000_rince
94 Jan_Stein 1986_stein
95 Jari_Arkko 1989_jar.1 1989_jar.2 2000_jarijyrki
96 Jason_Orendorff 2001_jason
97 Jay_Vosburgh 1989_fubar
98 Jeff_Newbern 2004_newbern
99 Jeff_Weisberg 1994_weisberg
100 Jens_Schweikhardt 1996_schweikh1 1996_schweikh2 1996_schweikh3 1998_schweikh1 1998_schweikh2 1998_schweikh3 2001_schweikh 2015_schweikhardt
101 Jetro_Lauha 2005_jetro
102 Jim_Hague 1986_hague
103 John_Dalbec 1996_dalbec 2004_jdalbec
104 John_Tromp 1989_tromp 2012_tromp
105 John_Williams 2001_williams
106 Jon_Thingvold 1993_jonth 1996_jonth
107 Jonathan_Hoyle 2004_hoyle
108 Joshua_Karns 2019_karns
109 Jyrki_Holopainen 1993_lmfjyh 2000_jarijyrki
110 Karl_F_Fox 1990_jaw
111 Ken_Huffman 1996_huffman
112 Kevin_Pulo 2001_kev
113 Kimmo_Fredriksson 2011_fredriksson
114 Larry_Jones 1990_scjones
115 Larry_Wall 1986_wall 1987_wall
116 Laurion_Burchall 1994_ldb
117 Lennart_Augustsson 1985_august 1986_august 1996_august
118 Leonid_A_Broukhis 1993_leo 1995_leo
119 Lord_Zarbon 2000_briddlebane
120 Maarten_Litmaath 1988_litmaath
121 Marcin_Ciura 2018_ciura 2019_ciura
122 Mark_Biggar 1987_biggar
123 Mark_Isaak 1988_isaak
124 Mark_Plummer 1993_plummer
125 Mark_Schnitzius 1993_schnitzi 1994_schnitzi 1995_schnitzi 1995_vanschnitz 1998_schnitzi 2004_schnitzi
126 Mary_Ann_Horton 1994_horton
127 Matt_Zucker 2011_zucker
128 Maurizio_Monge 2006_monge
129 Mauro_Persano 2005_persano
130 Michael_Ash 2005_mikeash
131 Michael_Birken 2006_birken 2013_birken 2014_birken
132 Michael_H_Pawka 1986_pawka
133 Michael_Savastio 1995_savastio
134 Mike_Laman 1984_laman
135 Moxen_N_Briddlebane 2000_briddlebane
136 NATORI_Shin 2000_natori
137 Nathan_Otterness 2020_otterness
138 Nathan_Sidwell 1992_nathan
139 Neil_Mix 1998_dloweneil
140 Nicholas_Carlini 2020_carlini
141 Nick_Johnson 2004_arachnid
142 Nicolas_Ollinger 2001_ollinger
143 Ondrej_Adamovsky 2019_adamovsky
144 Ora_Lassila 1989_jar.2
145 Oscar_Toledo 2005_toledo 2006_toledo1 2006_toledo2 2006_toledo3 2011_toledo
146 Oskar_von_der_Luehe 1989_ovdluhe
147 Paul_Dale 1988_dale
148 Paul_E_Black 1989_paul
149 Paul_Eggert 1990_jaw
150 Paul_Heckbert 1987_heckbert
151 Peter_Eastman 2011_eastman
152 Peter_J_Ruczynski 1990_pjr
153 Peter_Klausler 2005_klausler
154 Philip_Blakely 2011_blakely 2012_blakely
155 Pierre-Philippe_Coupard 2001_coupard
156 Qiming_HOU 2011_hou 2012_hou 2013_hou 2015_hou 2018_hou
157 Raphael_Meyer 2006_meyer
158 Raymond_Cheong 2000_primenum 2001_cheong
159 Robbert_van_Renesse 1984_mullender
160 Robert_Heckendorn 1985_applin
161 Roemer_B_Lievaart 1987_lievaart 1989_roemer
162 Ron_McFarland 1996_rcm
163 Sandro_Maffiodo 2014_maffiodo1 2014_maffiodo2
164 Scott_Vokes 2018_vokes
165 Sean_Barrett 1991_buzzard 1992_buzzard.1 1992_buzzard.2
166 Sean_Dorward 1990_tbr
167 Sebastian_Deorowicz 1995_esde
168 Selene_Makarios 1995_heathbar 1995_makarios
169 Seonghoon_Kang 2012_kang
170 Shinichiro_Hamaji 2011_hamaji
171 Sjoerd_Mullender 1984_mullender
172 Spencer_Hines 1987_hines
173 Steinar_Hamre 2006_hamre
174 Stephen_Sykes 2004_sds 2005_sykes 2006_sykes1 2006_sykes2
175 Stig_Hemmer 1990_stig
176 Szabolcs_Borsanyi 2006_borsanyi 2011_borsanyi
177 Szymon_Rusinkiewicz 1994_smr
178 Taketo_Konno 2011_konno 2012_konno
179 Teemu_Rantanen 1994_tvr
180 Tero_Kivinen 1992_kivinen
181 Thaddaeus_Frogley 2000_thadgavin
182 Thomas_A_Fine 1991_fine
183 Thomas_P_John 2000_tomx
184 Thomas_Stewart 2006_stewart
185 Thor_Eldby 1996_eldby
186 Timo_Poikola 2018_poikola 2019_poikola
187 Tom_Torfs 1998_tomtorfs
188 Tony_Finch 1998_fanf
189 Tsoj 2020_tsoj
190 Tsukasa_Hamano 2012_hamano
191 Uri_Goren 2011_goren
192 V_Chia 2005_chia
193 Vern_Paxson 1992_vern
194 Vincent_Weaver 2005_vince
195 Volker_Diels-Grabsch 2019_diels-grabsch1 2019_diels-grabsch2
196 Walter_Bright 1986_bright
197 Yusuke_Endoh 2012_endoh1 2012_endoh2 2013_endoh1 2013_endoh2 2013_endoh3 2013_endoh4 2014_endoh1 2014_endoh2 2015_endoh1 2015_endoh2 2015_endoh3 2015_endoh4 2018_endoh1 2018_endoh2 2019_endoh 2020_endoh1 2020_endoh2 2020_endoh3
198 Yves-Marie_Morgan 2013_morgan1 2013_morgan2 2014_morgan
Binary file not shown.
-89
View File
@@ -1,89 +0,0 @@
#!/usr/bin/env bash
#
# check_path_list.sh - look for problems with path_list.* files
#
# XXX - This is a temporary utility that will be replaced when
# the .entry.json files are built
#
# setup
#
export REQUIRED_PATH_LIST="path_list.required.txt"
export BUILT_PATH_LIST="path_list.built.txt"
export MANIFEST_LIST="path_list.manifest.txt"
export FOUND_LIST="path_list.found.txt"
export EXIT_CODE=0
# firewall
#
if [[ ! -f $REQUIRED_PATH_LIST ]]; then
echo "$0: ERROR: missing REQUIRED_PATH_LIST: $REQUIRED_PATH_LIST" 1>&2
exit 10
fi
if [[ ! -s $REQUIRED_PATH_LIST ]]; then
echo "$0: ERROR: REQUIRED_PATH_LIST is empty: $REQUIRED_PATH_LIST" 1>&2
exit 11
fi
if [[ ! -f $BUILT_PATH_LIST ]]; then
echo "$0: ERROR: missing BUILT_PATH_LIST: $BUILT_PATH_LIST" 1>&2
exit 12
fi
if [[ ! -s $BUILT_PATH_LIST ]]; then
echo "$0: ERROR: BUILT_PATH_LIST is empty: $BUILT_PATH_LIST" 1>&2
exit 13
fi
if [[ ! -f $MANIFEST_LIST ]]; then
echo "$0: ERROR: missing MANIFEST_LIST: $MANIFEST_LIST" 1>&2
exit 14
fi
if [[ ! -s $MANIFEST_LIST ]]; then
echo "$0: ERROR: MANIFEST_LIST is empty: $MANIFEST_LIST" 1>&2
exit 15
fi
if [[ ! -f $FOUND_LIST ]]; then
echo "$0: ERROR: missing FOUND_LIST: $FOUND_LIST" 1>&2
exit 16
fi
if [[ ! -s $FOUND_LIST ]]; then
echo "$0: ERROR: FOUND_LIST is empty: $FOUND_LIST" 1>&2
exit 17
fi
# look for missing required files
#
export TMP_FILE="tmp.$$.missing"
trap 'rm -f $TMP_FILE; exit' 0 1 2 3 15
comm -23 "$REQUIRED_PATH_LIST" "$FOUND_LIST" | sort -t/ > "$TMP_FILE"
if [[ -s $TMP_FILE ]]; then
COUNT=$(wc -l < "$TMP_FILE" | sed -e 's/^ *//')
echo "# $0: Warning: missing required file count: $COUNT"
EXIT_CODE=18 # exit 18
echo "#"
echo "# $0: missing required file list starts below"
cat "$TMP_FILE"
echo "# $0: missing required file list ends above"
fi
rm -f "$TMP_FILE"
# look for found files not in the manifest
#
export TMP_FILE="tmp.$$.missing"
trap 'rm -f $TMP_FILE; exit' 0 1 2 3 15
comm -13 "$MANIFEST_LIST" "$FOUND_LIST" | sort -t/ > "$TMP_FILE"
if [[ -s $TMP_FILE ]]; then
COUNT=$(wc -l < "$TMP_FILE" | sed -e 's/^ *//')
echo "# $0: Warning: found files not in the manifest count: $COUNT"
EXIT_CODE=19 # exit 19
echo "#"
echo "# $0: found files not in the manifest list starts below"
cat "$TMP_FILE"
echo "# $0: found files not in the manifest list ends above"
fi
rm -f "$TMP_FILE"
# All Done!!! All Done!!! -- Jessica Noll, Age 2
#
if [[ $EXIT_CODE -ne 0 ]]; then
echo "$0: Warning: about to exit: $EXIT_CODE" 1>&2
fi
exit "$EXIT_CODE"
-9
View File
@@ -1,9 +0,0 @@
#!/usr/bin/env bash
#
# echo.sh - echo arguments
#
# XXX - This is a temporary utility that will be removed when
# the .entry.json files are built
echo "$@"
exit 0
-321
View File
@@ -1,321 +0,0 @@
1984/anonymous
1984/decot
1984/laman
1984/mullender
1985/applin
1985/august
1985/lycklama
1985/shapiro
1985/sicherman
1986/applin
1986/august
1986/bright
1986/hague
1986/holloway
1986/marshall
1986/pawka
1986/stein
1986/wall
1987/biggar
1987/heckbert
1987/hines
1987/korn
1987/lievaart
1987/wall
1987/westley
1988/applin
1988/dale
1988/isaak
1988/litmaath
1988/phillipps
1988/reddy
1988/robison
1988/spinellis
1988/westley
1989/fubar
1989/jar.1
1989/jar.2
1989/ovdluhe
1989/paul
1989/robison
1989/roemer
1989/tromp
1989/vanb
1989/westley
1990/baruch
1990/cmills
1990/dds
1990/dg
1990/jaw
1990/pjr
1990/scjones
1990/stig
1990/tbr
1990/theorem
1990/westley
1991/ant
1991/brnstnd
1991/buzzard
1991/cdupont
1991/davidguy
1991/dds
1991/fine
1991/rince
1991/westley
1992/adrian
1992/albert
1992/ant
1992/buzzard.1
1992/buzzard.2
1992/gson
1992/imc
1992/kivinen
1992/lush
1992/marangon
1992/nathan
1992/vern
1992/westley
1993/ant
1993/cmills
1993/dgibson
1993/ejb
1993/jonth
1993/leo
1993/lmfjyh
1993/plummer
1993/rince
1993/schnitzi
1993/vanb
1994/dodsond1
1994/dodsond2
1994/horton
1994/imc
1994/ldb
1994/schnitzi
1994/shapiro
1994/smr
1994/tvr
1994/weisberg
1994/westley
1995/cdua
1995/dodsond1
1995/dodsond2
1995/esde
1995/garry
1995/heathbar
1995/leo
1995/makarios
1995/savastio
1995/schnitzi
1995/spinellis
1995/vanschnitz
1996/august
1996/dalbec
1996/eldby
1996/gandalf
1996/huffman
1996/jonth
1996/rcm
1996/schweikh1
1996/schweikh2
1996/schweikh3
1996/westley
1998/banks
1998/bas1
1998/bas2
1998/chaos
1998/df
1998/dlowe
1998/dloweneil
1998/dorssel
1998/fanf
1998/schnitzi
1998/schweikh1
1998/schweikh2
1998/schweikh3
1998/tomtorfs
2000/anderson
2000/bellard
2000/bmeyer
2000/briddlebane
2000/dhyang
2000/dlowe
2000/jarijyrki
2000/natori
2000/primenum
2000/rince
2000/robison
2000/schneiderwent
2000/thadgavin
2000/tomx
2001/anonymous
2001/bellard
2001/cheong
2001/coupard
2001/ctk
2001/dgbeards
2001/herrmann1
2001/herrmann2
2001/jason
2001/kev
2001/ollinger
2001/rosten
2001/schweikh
2001/westley
2001/williams
2004/anonymous
2004/arachnid
2004/burley
2004/gavare
2004/gavin
2004/hibachi
2004/hoyle
2004/jdalbec
2004/kopczynski
2004/newbern
2004/omoikane
2004/schnitzi
2004/sds
2004/vik1
2004/vik2
2005/aidan
2005/anon
2005/boutines
2005/chia
2005/giljade
2005/jetro
2005/klausler
2005/mikeash
2005/mynx
2005/persano
2005/sykes
2005/timwi
2005/toledo
2005/vik
2005/vince
2006/birken
2006/borsanyi
2006/grothe
2006/hamre
2006/meyer
2006/monge
2006/night
2006/sloane
2006/stewart
2006/sykes1
2006/sykes2
2006/toledo1
2006/toledo2
2006/toledo3
2011/akari
2011/blakely
2011/borsanyi
2011/dlowe
2011/eastman
2011/fredriksson
2011/goren
2011/hamaji
2011/hou
2011/konno
2011/richards
2011/toledo
2011/vik
2011/zucker
2012/blakely
2012/deckmyn
2012/dlowe
2012/endoh1
2012/endoh2
2012/grothe
2012/hamano
2012/hou
2012/kang
2012/konno
2012/omoikane
2012/tromp
2012/vik
2012/zeitak
2013/birken
2013/cable1
2013/cable2
2013/cable3
2013/dlowe
2013/endoh1
2013/endoh2
2013/endoh3
2013/endoh4
2013/hou
2013/mills
2013/misaka
2013/morgan1
2013/morgan2
2013/robison
2014/birken
2014/deak
2014/endoh1
2014/endoh2
2014/maffiodo1
2014/maffiodo2
2014/morgan
2014/sinon
2014/skeggs
2014/vik
2014/wiedijk
2015/burton
2015/dogon
2015/duble
2015/endoh1
2015/endoh2
2015/endoh3
2015/endoh4
2015/hou
2015/howe
2015/mills1
2015/mills2
2015/muth
2015/schweikhardt
2015/yang
2018/algmyr
2018/anderson
2018/bellard
2018/burton1
2018/burton2
2018/ciura
2018/endoh1
2018/endoh2
2018/ferguson
2018/giles
2018/hou
2018/mills
2018/poikola
2018/vokes
2018/yang
2019/adamovsky
2019/burton
2019/ciura
2019/diels-grabsch1
2019/diels-grabsch2
2019/dogon
2019/duble
2019/endoh
2019/giles
2019/karns
2019/lynn
2019/mills
2019/poikola
2019/yang
2020/burton
2020/carlini
2020/endoh1
2020/endoh2
2020/endoh3
2020/ferguson1
2020/ferguson2
2020/giles
2020/kurdyukov1
2020/kurdyukov2
2020/kurdyukov3
2020/kurdyukov4
2020/otterness
2020/tsoj
2020/yang
-321
View File
@@ -1,321 +0,0 @@
1984_anonymous
1984_decot
1984_laman
1984_mullender
1985_applin
1985_august
1985_lycklama
1985_shapiro
1985_sicherman
1986_applin
1986_august
1986_bright
1986_hague
1986_holloway
1986_marshall
1986_pawka
1986_stein
1986_wall
1987_biggar
1987_heckbert
1987_hines
1987_korn
1987_lievaart
1987_wall
1987_westley
1988_applin
1988_dale
1988_isaak
1988_litmaath
1988_phillipps
1988_reddy
1988_robison
1988_spinellis
1988_westley
1989_fubar
1989_jar.1
1989_jar.2
1989_ovdluhe
1989_paul
1989_robison
1989_roemer
1989_tromp
1989_vanb
1989_westley
1990_baruch
1990_cmills
1990_dds
1990_dg
1990_jaw
1990_pjr
1990_scjones
1990_stig
1990_tbr
1990_theorem
1990_westley
1991_ant
1991_brnstnd
1991_buzzard
1991_cdupont
1991_davidguy
1991_dds
1991_fine
1991_rince
1991_westley
1992_adrian
1992_albert
1992_ant
1992_buzzard.1
1992_buzzard.2
1992_gson
1992_imc
1992_kivinen
1992_lush
1992_marangon
1992_nathan
1992_vern
1992_westley
1993_ant
1993_cmills
1993_dgibson
1993_ejb
1993_jonth
1993_leo
1993_lmfjyh
1993_plummer
1993_rince
1993_schnitzi
1993_vanb
1994_dodsond1
1994_dodsond2
1994_horton
1994_imc
1994_ldb
1994_schnitzi
1994_shapiro
1994_smr
1994_tvr
1994_weisberg
1994_westley
1995_cdua
1995_dodsond1
1995_dodsond2
1995_esde
1995_garry
1995_heathbar
1995_leo
1995_makarios
1995_savastio
1995_schnitzi
1995_spinellis
1995_vanschnitz
1996_august
1996_dalbec
1996_eldby
1996_gandalf
1996_huffman
1996_jonth
1996_rcm
1996_schweikh1
1996_schweikh2
1996_schweikh3
1996_westley
1998_banks
1998_bas1
1998_bas2
1998_chaos
1998_df
1998_dlowe
1998_dloweneil
1998_dorssel
1998_fanf
1998_schnitzi
1998_schweikh1
1998_schweikh2
1998_schweikh3
1998_tomtorfs
2000_anderson
2000_bellard
2000_bmeyer
2000_briddlebane
2000_dhyang
2000_dlowe
2000_jarijyrki
2000_natori
2000_primenum
2000_rince
2000_robison
2000_schneiderwent
2000_thadgavin
2000_tomx
2001_anonymous
2001_bellard
2001_cheong
2001_coupard
2001_ctk
2001_dgbeards
2001_herrmann1
2001_herrmann2
2001_jason
2001_kev
2001_ollinger
2001_rosten
2001_schweikh
2001_westley
2001_williams
2004_anonymous
2004_arachnid
2004_burley
2004_gavare
2004_gavin
2004_hibachi
2004_hoyle
2004_jdalbec
2004_kopczynski
2004_newbern
2004_omoikane
2004_schnitzi
2004_sds
2004_vik1
2004_vik2
2005_aidan
2005_anon
2005_boutines
2005_chia
2005_giljade
2005_jetro
2005_klausler
2005_mikeash
2005_mynx
2005_persano
2005_sykes
2005_timwi
2005_toledo
2005_vik
2005_vince
2006_birken
2006_borsanyi
2006_grothe
2006_hamre
2006_meyer
2006_monge
2006_night
2006_sloane
2006_stewart
2006_sykes1
2006_sykes2
2006_toledo1
2006_toledo2
2006_toledo3
2011_akari
2011_blakely
2011_borsanyi
2011_dlowe
2011_eastman
2011_fredriksson
2011_goren
2011_hamaji
2011_hou
2011_konno
2011_richards
2011_toledo
2011_vik
2011_zucker
2012_blakely
2012_deckmyn
2012_dlowe
2012_endoh1
2012_endoh2
2012_grothe
2012_hamano
2012_hou
2012_kang
2012_konno
2012_omoikane
2012_tromp
2012_vik
2012_zeitak
2013_birken
2013_cable1
2013_cable2
2013_cable3
2013_dlowe
2013_endoh1
2013_endoh2
2013_endoh3
2013_endoh4
2013_hou
2013_mills
2013_misaka
2013_morgan1
2013_morgan2
2013_robison
2014_birken
2014_deak
2014_endoh1
2014_endoh2
2014_maffiodo1
2014_maffiodo2
2014_morgan
2014_sinon
2014_skeggs
2014_vik
2014_wiedijk
2015_burton
2015_dogon
2015_duble
2015_endoh1
2015_endoh2
2015_endoh3
2015_endoh4
2015_hou
2015_howe
2015_mills1
2015_mills2
2015_muth
2015_schweikhardt
2015_yang
2018_algmyr
2018_anderson
2018_bellard
2018_burton1
2018_burton2
2018_ciura
2018_endoh1
2018_endoh2
2018_ferguson
2018_giles
2018_hou
2018_mills
2018_poikola
2018_vokes
2018_yang
2019_adamovsky
2019_burton
2019_ciura
2019_diels-grabsch1
2019_diels-grabsch2
2019_dogon
2019_duble
2019_endoh
2019_giles
2019_karns
2019_lynn
2019_mills
2019_poikola
2019_yang
2020_burton
2020_carlini
2020_endoh1
2020_endoh2
2020_endoh3
2020_ferguson1
2020_ferguson2
2020_giles
2020_kurdyukov1
2020_kurdyukov2
2020_kurdyukov3
2020_kurdyukov4
2020_otterness
2020_tsoj
2020_yang
-21
View File
@@ -1,21 +0,0 @@
{
"no_comment" : "mandatory comment: because comments were removed from the original JSON spec",
"author_JSON_format_version" : "1.1 2024-02-11",
"author_handle" : "first0_last0",
"full_name" : "First Middle Last",
"sort_word" : "lowercaselast",
"location_code" : "AU",
"email" : "user0@example.com",
"url" : "https:\/\/a.host0.example.com\/index.html",
"alt_url" : "https:\/\/b.host0.example.com\/index.html",
"deprecated_twitter_handle" : "@something",
"mastodon" : "@mastodon0@example.com",
"mastodon_url" : "https:\/\/example.org\/@mastodon0",
"github" : "@github0",
"affiliation" : "an affiliation group",
"winning_entry_set" : [
{ "entry_id" : "1987_somedir" },
{ "entry_id" : "2020_entrydir" },
{ "entry_id" : "2024_dirname" }
]
}
-127
View File
@@ -1,127 +0,0 @@
{
"no_comment" : "mandatory comment: because comments were removed from the original JSON spec",
"entry_JSON_format_version" : "1.1 2024-02-11",
"award" : "Award title",
"year" : "2024",
"dir" : "dirname",
"entry_id" : "2024_dirname",
"author_set" : [
{ "author_handle" : "first0_last0" },
{ "author_handle" : "first1_last1" },
{ "author_handle" : "first2_last2" }
],
"manifest" : [
{
"file_path" : "index.html",
"inventory_order" : 10,
"OK_to_edit" : false,
"display_as" : "html",
"display_via_github" : false,
"entry_text" : "entry home page"
},
{
"file_path" : "prog.c",
"inventory_order" : 20,
"OK_to_edit" : true,
"display_as" : "c",
"display_via_github" : true,
"entry_text" : "winning source"
},
{
"file_path" : "Makefile",
"inventory_order" : 30,
"OK_to_edit" : true,
"display_as" : "makefile",
"display_via_github" : true,
"entry_text" : "how to compile"
},
{
"file_path" : "prog.alt.c",
"inventory_order" : 40,
"OK_to_edit" : true,
"display_as" : "c",
"display_via_github" : true,
"entry_text" : "alternative source"
},
{
"file_path" : "prog.orig.c",
"inventory_order" : 50,
"OK_to_edit" : false,
"display_as" : "c",
"display_via_github" : true,
"entry_text" : "original source"
},
{
"file_path" : "chocolate_cake.jpg",
"inventory_order" : 100,
"OK_to_edit" : true,
"display_as" : "image",
"display_via_github" : false,
"entry_text" : "required argument file"
},
{
"file_path" : "magic.txt",
"inventory_order" : 150,
"OK_to_edit" : true,
"display_as" : "text",
"display_via_github" : true,
"entry_text" : "data file"
},
{
"file_path" : "special.src",
"inventory_order" : 150,
"OK_to_edit" : true,
"display_as" : "text",
"display_via_github" : true,
"entry_text" : "special language source code"
},
{
"file_path" : "raw_data.file",
"inventory_order" : 180,
"OK_to_edit" : true,
"display_as" : "data",
"display_via_github" : false,
"entry_text" : "optional argument file"
},
{
"file_path" : "spoiler.html",
"inventory_order" : 200,
"OK_to_edit" : true,
"display_as" : "html",
"display_via_github" : false,
"entry_text" : "SPOILER WARNING"
},
{
"file_path" : "2024_dirname.tar.bz2",
"inventory_order" : 300,
"OK_to_edit" : false,
"display_as" : "tbz2",
"display_via_github" : false,
"entry_text" : "download winning source"
},
{
"file_path" : ".gitignore",
"inventory_order" : 4294967295,
"OK_to_edit" : true,
"display_as" : "gitignore",
"display_via_github" : true,
"entry_text" : "list of files that should not be committed under git"
},
{
"file_path" : ".entry.json",
"inventory_order" : 4294967295,
"OK_to_edit" : true,
"display_as" : "json",
"display_via_github" : true,
"entry_text" : "description of entry in JSON"
},
{
"file_path" : "README.md",
"inventory_order" : 4294967295,
"OK_to_edit" : true,
"display_as" : "markdown",
"display_via_github" : true,
"entry_text" : "markdown source for index.html"
}
]
}
-429
View File
@@ -1,429 +0,0 @@
#!/usr/bin/env bash
#
# fix_csv - fix the exported CSV files, form path_list.* files
#
# When Apple numbers exports a CSV file from manifest.numbers,
# and exports a CSV file from missing-manifest.numbers,
# the CSV file lines are separated by carriage returns (\015)
# and is not terminated by a newline. This script will "correct"
# these issues.
#
# XXX - This is a temporary utility that will be removed when
# the .entry.json files are built
# setup
#
export MANIFEST_CSV="manifest.csv"
export TMP_CSV
if [[ ! -f $MANIFEST_CSV ]]; then
echo "$0: ERROR: MANIFEST_CSV is missing: $MANIFEST_CSV" 1>&2
exit 10
fi
if [[ ! -s $MANIFEST_CSV ]]; then
echo "$0: ERROR: MANIFEST_CSV is empty: $MANIFEST_CSV" 1>&2
exit 11
fi
# setup temp manifest CSV file
#
TMP_CSV="tmp.$$.$MANIFEST_CSV"
rm -f "$TMP_CSV"
if [[ -e $TMP_CSV ]]; then
echo "$0: ERROR: TMP_CSV cannot be removed: $TMP_CSV" 1>&2
exit 12
fi
# remove carriage returns in manifest CSV file
#
trap 'rm -f $TMP_CSV; exit' 0 1 2 3 15
tr -d '\015' < "$MANIFEST_CSV" > "$TMP_CSV"
status="$?"
if [[ $status -ne 0 ]]; then
printf "$0: ERROR: TMP_CSV: tr -d '\\\015' < %s > %s failed, error: %s\n" "$MANIFEST_CSV" "$TMP_CSV" "$status" 1>&2
exit 13
fi
if [[ ! -s $TMP_CSV ]]; then
printf "$0: ERROR: TMP_CSV: tr -d '\\\015' < %s > %s produced an empty file" "$MANIFEST_CSV" "$TMP_CSV" 1>&2
exit 14
fi
# sanity check manifest CSV
#
# check for double whitespace
#
trap 'rm -f $TMP_CSV $TMP_CHECK; exit' 0 1 2 3 15
TMP_CHECK="tmp.$$.check"
rm -f "$TMP_CHECK"
grep -E '[[:space:]][[:space:]]' "$TMP_CSV" > "$TMP_CHECK"
if [[ -s $TMP_CHECK ]]; then
echo "$0: ERROR: found multiple consecutive whitespace in $MANIFEST_CSV" 1>&2
echo "$0: Warning: consecutive whitespace lines from $MANIFEST_CSV starts below" 1>&2
cat "$TMP_CHECK" 1>&2
echo "$0: Warning: consecutive whitespace lines from $MANIFEST_CSV ends above" 1>&2
exit 15
fi
# check for leading whitespace
#
rm -f "$TMP_CHECK"
grep -E ',[[:space:]]|^[[:space:]]' "$TMP_CSV" > "$TMP_CHECK"
if [[ -s $TMP_CHECK ]]; then
echo "$0: ERROR: found leading whitespace in $MANIFEST_CSV" 1>&2
echo "$0: Warning: leading whitespace lines from $MANIFEST_CSV starts below" 1>&2
cat "$TMP_CHECK" 1>&2
echo "$0: Warning: leading whitespace lines from $MANIFEST_CSV ends above" 1>&2
exit 16
fi
# check for trailing whitespace
#
rm -f "$TMP_CHECK"
grep -E '[[:space:]],|[[:space:]]$' "$TMP_CSV" > "$TMP_CHECK"
if [[ -s $TMP_CHECK ]]; then
echo "$0: ERROR: found trailing whitespace in $MANIFEST_CSV" 1>&2
echo "$0: Warning: trailing whitespace lines from $MANIFEST_CSV starts below" 1>&2
cat "$TMP_CHECK" 1>&2
echo "$0: Warning: trailing whitespace lines from $MANIFEST_CSV ends above" 1>&2
exit 17
fi
# check for duplicate year,dir,file_path
#
rm -f "$TMP_CHECK"
sed -e 's/^\([^,]*,[^,]*,[^,]*\).*/\1/' "$TMP_CSV" | sort | uniq -d > "$TMP_CHECK"
if [[ -s $TMP_CHECK ]]; then
echo "$0: ERROR: found duplicated year,dir,file_path in $MANIFEST_CSV" 1>&2
echo "$0: Warning: duplicated year,dir,file_path in $MANIFEST_CSV starts below" 1>&2
cat "$TMP_CHECK" 1>&2
echo "$0: Warning: duplicated year,dir,file_path in $MANIFEST_CSV ends above" 1>&2
exit 18
fi
# check for ,TRUE,
#
rm -f "$TMP_CHECK"
grep -E ',TRUE,|,TRUE$' "$TMP_CSV" > "$TMP_CHECK"
if [[ -s $TMP_CHECK ]]; then
echo "$0: ERROR: found ,TRUE, instead of ,true, in $MANIFEST_CSV" 1>&2
echo "$0: Warning: lines with ,TRUE, $MANIFEST_CSV starts below" 1>&2
cat "$TMP_CHECK" 1>&2
echo "$0: Warning: lines with ,TRUE, $MANIFEST_CSV ends above" 1>&2
exit 19
fi
# check for ,FALSE,
#
rm -f "$TMP_CHECK"
grep -E ',FALSE,|,FALSE$' "$TMP_CSV" > "$TMP_CHECK"
if [[ -s $TMP_CHECK ]]; then
echo "$0: ERROR: found ,FALSE, instead of ,false, in $MANIFEST_CSV" 1>&2
echo "$0: Warning: lines with ,FALSE, $MANIFEST_CSV starts below" 1>&2
cat "$TMP_CHECK" 1>&2
echo "$0: Warning: lines with ,FALSE, $MANIFEST_CSV ends above" 1>&2
exit 20
fi
# check for ,null,
#
rm -f "$TMP_CHECK"
grep -E ',null,|.,null$' "$TMP_CSV" > "$TMP_CHECK"
if [[ -s $TMP_CHECK ]]; then
echo "$0: ERROR: found ,null, in $MANIFEST_CSV" 1>&2
echo "$0: Warning: lines with ,null, $MANIFEST_CSV starts below" 1>&2
cat "$TMP_CHECK" 1>&2
echo "$0: Warning: lines with ,null, $MANIFEST_CSV ends above" 1>&2
exit 21
fi
rm -f "$TMP_CHECK"
# check for ,NULL,
#
rm -f "$TMP_CHECK"
grep -E ',NULL,|,NULL$' "$TMP_CSV" > "$TMP_CHECK"
if [[ -s $TMP_CHECK ]]; then
echo "$0: ERROR: found ,NULL, in $MANIFEST_CSV" 1>&2
echo "$0: Warning: lines with ,NULL, $MANIFEST_CSV starts below" 1>&2
cat "$TMP_CHECK" 1>&2
echo "$0: Warning: lines with ,NULL, $MANIFEST_CSV ends above" 1>&2
exit 22
fi
rm -f "$TMP_CHECK"
# fix manifest CSV
#
# sort manifest CSV file
#
# sort by: year dir file_path inventory_order everything_else
#
sort -t, -k1,1 -k2d,2 -k4g,4 -k3d,3 -k5d,8 "$TMP_CSV" -o "$TMP_CSV"
status="$?"
if [[ $status -ne 0 ]]; then
printf "$0: ERROR: sort -t, -k1,1 -k2d,2 -k4n,4 -k3d,3 -k5d,8 %s -o %s failed, error: %s\n" "$TMP_CSV" "$TMP_CSV" "$status" 1>&2
exit 23
fi
# append newline if last line of manifest CSV file if not empty
#
LAST_CHAR=$(tail -c 1 "$TMP_CSV")
if [[ -n $LAST_CHAR ]]; then
echo "" >> "$TMP_CSV"
fi
# check for empty cells
#
rm -f "$TMP_CHECK"
grep -E ',,|,$' "$TMP_CSV" > "$TMP_CHECK"
if [[ -s $TMP_CHECK ]]; then
echo "$0: ERROR: found ,empty cell in $MANIFEST_CSV" 1>&2
echo "$0: Warning: lines with empty cell $MANIFEST_CSV starts below" 1>&2
cat "$TMP_CHECK" 1>&2
echo "$0: Warning: lines with empty cell $MANIFEST_CSV ends above" 1>&2
exit 24
fi
rm -f "$TMP_CHECK"
# replace manifest CSV file if different
#
if ! cmp -s "$TMP_CSV" "$MANIFEST_CSV"; then
# replace CSV file with a better formatted version
#
echo "$0: updating $MANIFEST_CSV"
mv -f -v "$TMP_CSV" "$MANIFEST_CSV"
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: mv -f -v $TMP_CSV $MANIFEST_CSV failed, error: $status" 1>&2
exit 25
fi
else
# CSV file is OK, remove the tmp file
#
rm -f "$TMP_CSV"
if [[ -e $TMP_CSV ]]; then
echo "$0: ERROR: TMP_CSV cannot be removed for cleanup: $TMP_CSV" 1>&2
exit 26
fi
fi
# setup the full manifest path list
#
TMP_CSV="tmp.$$.$MANIFEST_CSV"
sed -e '/^# -/d' "$MANIFEST_CSV" |
sort -u |
sort -t, -k1,1 -k2d,2 -k4g,4 -k3d,3 -k5d,10 > "$TMP_CSV"
if [[ ! -s $TMP_CSV ]]; then
echo "$0: ERROR: sorted $MANIFEST_CSV is empty" 1>&2
exit 27
fi
if ! cmp -s "$TMP_CSV" "$MANIFEST_CSV"; then
# replace full CSV file if different
#
echo "$0: updating $MANIFEST_CSV"
mv -f -v "$TMP_CSV" "$MANIFEST_CSV"
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: mv -f -v $TMP_CSV $MANIFEST_CSV failed, error: $status" 1>&2
exit 28
fi
else
# fill CSV file is OK, remove the tmp file
#
rm -f "$TMP_CSV"
if [[ -e $TMP_CSV ]]; then
echo "$0: ERROR: TMP_CSV cannot be removed for cleanup: $TMP_CSV" 1>&2
exit 29
fi
fi
# build required file path list
#
export REQUIRED_PATH_LIST="path_list.required.txt"
export TMP_FILE="tmp.$$.$REQUIRED_PATH_LIST"
trap 'rm -f $TMP_FILE; exit' 0 1 2 3 15
awk -F, '$1 !~ "^#" && ( $5 == "true" || $8 == "original source" ) { print $1 "/" $2 "/" $3; }' "$MANIFEST_CSV" | sort -t/ > "$TMP_FILE"
if [[ ! -s $TMP_FILE ]]; then
echo "$0: ERROR: TMP_FILE, for required file list, is empty: $TMP_CSV" 1>&2
exit 30
fi
if ! cmp -s "$TMP_FILE" "$REQUIRED_PATH_LIST"; then
# replace required file
#
echo "$0: updating $REQUIRED_PATH_LIST"
mv -f -v "$TMP_FILE" "$REQUIRED_PATH_LIST"
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: mv -f -v $TMP_FILE $REQUIRED_PATH_LIST failed, error: $status" 1>&2
exit 31
fi
else
# required file list is OK, remove the tmp file
#
rm -f "$TMP_FILE"
if [[ -e $TMP_CSV ]]; then
echo "$0: ERROR: TMP_FILE cannot be removed for cleanup: $TMP_FILE" 1>&2
exit 32
fi
fi
# build the built file path list
#
export BUILT_PATH_LIST="path_list.built.txt"
export TMP_FILE="tmp.$$.$BUILT_PATH_LIST"
trap 'rm -f $TMP_FILE; exit' 0 1 2 3 15
awk -F, '$1 !~ "^#" && $5 == "false" && $8 != "original source" { print $1 "/" $2 "/" $3; }' "$MANIFEST_CSV" | sort -t/ > "$TMP_FILE"
if [[ ! -s $TMP_FILE ]]; then
echo "$0: ERROR: TMP_FILE, for built file list, is empty: $TMP_CSV" 1>&2
exit 33
fi
if ! cmp -s "$TMP_FILE" "$BUILT_PATH_LIST"; then
# replace built file
#
echo "$0: updating $BUILT_PATH_LIST"
mv -f -v "$TMP_FILE" "$BUILT_PATH_LIST"
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: mv -f -v $TMP_FILE $BUILT_PATH_LIST failed, error: $status" 1>&2
exit 34
fi
else
# built file list is OK, remove the tmp file
#
rm -f "$TMP_FILE"
if [[ -e $TMP_CSV ]]; then
echo "$0: ERROR: TMP_FILE cannot be removed for cleanup: $TMP_FILE" 1>&2
exit 35
fi
fi
# build manifest file list
#
export MANIFEST_LIST="path_list.manifest.txt"
export TMP_FILE="tmp.$$.$BUILT_PATH_LIST"
trap 'rm -f $TMP_FILE; exit' 0 1 2 3 15
cat "$REQUIRED_PATH_LIST" "$BUILT_PATH_LIST" | sort -t/ > "$TMP_FILE"
if [[ ! -s $TMP_FILE ]]; then
echo "$0: ERROR: TMP_FILE, for manifest file list, is empty: $TMP_CSV" 1>&2
exit 36
fi
if ! cmp -s "$TMP_FILE" "$MANIFEST_LIST"; then
# replace manifest file
#
echo "$0: updating $MANIFEST_LIST"
mv -f -v "$TMP_FILE" "$MANIFEST_LIST"
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: mv -f -v $TMP_FILE $MANIFEST_LIST failed, error: $status" 1>&2
exit 37
fi
else
# manifest file list is OK, remove the tmp file
#
rm -f "$TMP_FILE"
if [[ -e $TMP_CSV ]]; then
echo "$0: ERROR: TMP_FILE cannot be removed for cleanup: $TMP_FILE" 1>&2
exit 38
fi
fi
# fix other CSV files
#
# We will fix author_wins.csv, and year_prize.csv
#
for csv in author_wins.csv year_prize.csv; do
# verify that a CSV file exists
#
if [[ ! -f $csv ]]; then
echo "$0: ERROR: CSV is missing: $csv" 1>&2
exit 39
fi
if [[ ! -s $csv ]]; then
echo "$0: ERROR: CSV is empty: $csv" 1>&2
exit 40
fi
# setup temp CSV file
#
TMP_CSV="tmp.$$.$csv"
rm -f "$TMP_CSV"
if [[ -e $TMP_CSV ]]; then
echo "$0: ERROR: TMP_CSV cannot be removed: $TMP_CSV" 1>&2
exit 41
fi
# remove carriage returns in CSV file
#
trap 'rm -f $TMP_CSV; exit' 0 1 2 3 15
tr -d '\015' < "$csv" > "$TMP_CSV"
status="$?"
if [[ $status -ne 0 ]]; then
printf "$0: ERROR: TMP_CSV: tr -d '\\\015' < %s > %s failed, error: %s\n" "$csv" "$TMP_CSV" "$status" 1>&2
exit 42
fi
if [[ ! -s $TMP_CSV ]]; then
printf "$0: ERROR: TMP_CSV: tr -d '\\\015' < %s > %s produced an empty file" "$csv" "$TMP_CSV" 1>&2
exit 43
fi
# sort CSV file
#
sort -t, -k1d,1 -k2d,2 "$TMP_CSV" -o "$TMP_CSV"
status="$?"
if [[ $status -ne 0 ]]; then
printf "$0: ERROR: sort -t, -k1d,1 -k2d,2 %s -o %s failed, error: %s\n" "$TMP_CSV" "$TMP_CSV" "$status" 1>&2
exit 44
fi
# append newline if last line of CSV file if not empty
#
LAST_CHAR=$(tail -c 1 "$TMP_CSV")
if [[ -n $LAST_CHAR ]]; then
echo "" >> "$TMP_CSV"
fi
# replace CSV file if different
#
if ! cmp -s "$TMP_CSV" "$csv"; then
# replace CSV file with a better formatted version
#
echo "$0: updating $csv"
mv -f -v "$TMP_CSV" "$csv"
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: mv -f -v $TMP_CSV $csv failed, error: $status" 1>&2
exit 45
fi
else
# CSV file is OK, remove the tmp file
#
rm -f "$TMP_CSV"
if [[ -e $TMP_CSV ]]; then
echo "$0: ERROR: TMP_CSV cannot be removed for cleanup: $TMP_CSV" 1>&2
exit 46
fi
fi
done
# All Done!!! All Done!!! -- Jessica Noll, Age 2
#
exit 0
-480
View File
@@ -1,480 +0,0 @@
#!/usr/bin/env bash
#
# gen_entry_json.sh - generate .entry.json for an entry
#
# XXX - This is a temporary utility that will be replaced when
# the .entry.json files are built.
#
# Copyright (c) 2023,2024 by Landon Curt Noll. All Rights Reserved.
#
# Permission to use, copy, modify, and distribute this software and
# its documentation for any purpose and without fee is hereby granted,
# provided that the above copyright, this permission notice and text
# this comment, and the disclaimer below appear in all of the following:
#
# supporting documentation
# source copies
# source works derived from this source
# binaries derived from this source or from derived source
#
# LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
# EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# chongo (Landon Curt Noll, http://www.isthe.com/chongo/index.html) /\oo/\
#
# Share and enjoy! :-)
# setup
#
export VERSION="1.1 2024-01-14"
NAME=$(basename "$0"); export NAME
export DOT_ENTRY_JSON_BASENAME=".entry.json"
export ENTRY_JSON_FORMAT_VERSION="1.1 2024-02-11"
export NO_COMMENT="mandatory comment: because comments were removed from the original JSON spec"
export AUTHOR_WINS_CSV="author_wins.csv"
export YEAR_PRIZE_CSV="year_prize.csv"
export MANIFEST_CSV="manifest.csv"
export PANDOC="/opt/homebrew/bin/pandoc"
#
export V_FLAG=0
export DOMAIN="ioccc-src.github.io"
export DOCPATH="/temp-test-ioccc"
export GITHUB_REPO="https://github.com/ioccc-src/temp-test-ioccc/blob/master"
export TOPDIR=".."
# usage
#
export USAGE="usage: $0 [-h] [-v level]
[-d www.domain.org] [-p /path/to/docroot] [-g github_url ] [-t topdir] [-P /path/to/pandoc]
year[/dir] [dir]
-h print help message and exit
-v level set verbosity level (def level: $V_FLAG)
-d www.domain.org change domain (def: $DOMAIN)
-p /path/to/docroot use path under domain to document root (def: $DOCPATH)
-g github_url path to the GitHub repo (def: $GITHUB_REPO)
-t topdir path to top of the local tree (def: $TOPDIR)
-P /path/to/pandoc path to the pandoc tool (def: $PANDOC)
year[/dir] path ton entry directory (or just year if there is a path arg
[dir] optionaln entry directory (1st arg is just year)
Exit codes:
0 all OK
2 -h and help string printed or -V and version string printed
3 command line error
4 cannot find writablen entry directory
5 cannot find readable author_wins.csv
6 cannot find readable year_prize.csv
7 cannot find readable manifest.csv
8 cannot find pandoc executable
9 cannot determine the award for year/dir
10 cannot determine authors of year/dir
>= 20 internal error
$NAME version: $VERSION"
# parse command line
#
while getopts :hv:d:p:g:t:P: flag; do
case "$flag" in
h) echo "$USAGE"
exit 2
;;
v) V_FLAG="$OPTARG"
;;
d) DOMAIN="$OPTARG"
;;
p) DOCPATH="$OPTARG"
;;
g) GITHUB_REPO="$OPTARG"
;;
t) TOPDIR="$OPTARG"
;;
P) PANDOC="$OPTARG"
;;
\?) echo "$0: ERROR: invalid option: -$OPTARG" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
:) echo "$0: ERROR: option -$OPTARG requires an argument" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
*) echo "$0: ERROR: unexpected value from getopts: $flag" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
esac
done
#
# remove the options
#
shift $(( OPTIND - 1 ));
#
# verify arg count and parse args
#
export ENTRY_PATH
export YEAR
export ENTRY
case "$#" in
1) ENTRY_PATH="$1"
YEAR="${ENTRY_PATH%/*}"
ENTRY="${ENTRY_PATH#*/}"
;;
2) ENTRY_PATH="$1/$2"
YEAR="$1"
ENTRY="$2"
;;
*) echo "$0: ERROR: expected 1 or 2 args, found: $#" 1>&2
echo "$USAGE" 1>&2
exit 3
;;
esac
export FULL_ENTRY_PATH="$TOPDIR/$ENTRY_PATH"
export ENTRY_ID="${YEAR}_${ENTRY}"
export URL_PATH="https://$DOMAIN$DOCPATH/$YEAR/$ENTRY"
# setup temporary files
#
export ENTRY_JSON_PATH="$FULL_ENTRY_PATH/$DOT_ENTRY_JSON_BASENAME"
export TMP_DOT_ENTRY_JSON="$FULL_ENTRY_PATH/tmp.$$.$DOT_ENTRY_JSON_BASENAME"
trap 'rm -f $TMP_DOT_ENTRY_JSON' 0 1 2 3 15
# print running info if verbose
#
if [[ $V_FLAG -ge 5 ]]; then
echo "$0: debug[5]: V_FLAG=$V_FLAG" 1>&2
echo "$0: debug[5]: NAME=$NAME" 1>&2
echo "$0: debug[5]: VERSION=$VERSION" 1>&2
echo "$0: debug[5]: ENTRY_JSON_FORMAT_VERSION=$ENTRY_JSON_FORMAT_VERSION" 1>&2
echo "$0: debug[5]: NO_COMMENT=$NO_COMMENT" 1>&2
echo "$0: debug[5]: AUTHOR_WINS_CSV=$AUTHOR_WINS_CSV" 1>&2
echo "$0: debug[5]: YEAR_PRIZE_CSV=$YEAR_PRIZE_CSV" 1>&2
echo "$0: debug[5]: MANIFEST_CSV=$MANIFEST_CSV" 1>&2
echo "$0: debug[5]: DOMAIN=$DOMAIN" 1>&2
echo "$0: debug[5]: DOCPATH=$DOCPATH" 1>&2
echo "$0: debug[5]: GITHUB_REPO=$GITHUB_REPO" 1>&2
echo "$0: debug[5]: TOPDIR=$TOPDIR" 1>&2
echo "$0: debug[5]: PANDOC=$PANDOC" 1>&2
echo "$0: debug[5]: FULL_ENTRY_PATH=$FULL_ENTRY_PATH" 1>&2
echo "$0: debug[5]: ENTRY_ID=$ENTRY_ID" 1>&2
echo "$0: debug[5]: YEAR=$YEAR" 1>&2
echo "$0: debug[5]: ENTRY=$ENTRY" 1>&2
echo "$0: debug[5]: ENTRY_PATH=$ENTRY_PATH" 1>&2
echo "$0: debug[5]: URL_PATH=$URL_PATH" 1>&2
echo "$0: debug[5]: DOT_ENTRY_JSON_BASENAME=$DOT_ENTRY_JSON_BASENAME" 1>&2
echo "$0: debug[5]: ENTRY_JSON_PATH=$ENTRY_JSON_PATH" 1>&2
echo "$0: debug[5]: TMP_DOT_ENTRY_JSON=$TMP_DOT_ENTRY_JSON" 1>&2
fi
# make is easier to process CSV files
#
IFS="$IFS,"
# verify entry directory is writable
#
if [[ ! -e $FULL_ENTRY_PATH ]]; then
echo "$0: ERROR: FULL_ENTRY_PATH does not exist: $FULL_ENTRY_PATH" 1>&2
exit 4
fi
if [[ ! -d $FULL_ENTRY_PATH ]]; then
echo "$0: ERROR: FULL_ENTRY_PATH is not a directory: $FULL_ENTRY_PATH" 1>&2
exit 4
fi
if [[ ! -w $FULL_ENTRY_PATH ]]; then
echo "$0: ERROR: FULL_ENTRY_PATH is not a writable directory: $FULL_ENTRY_PATH" 1>&2
exit 4
fi
# verify author_wins.csv is readable
#
if [[ ! -e $AUTHOR_WINS_CSV ]]; then
echo "$0: ERROR: AUTHOR_WINS_CSV does not exist: $AUTHOR_WINS_CSV" 1>&2
exit 5
fi
if [[ ! -f $AUTHOR_WINS_CSV ]]; then
echo "$0: ERROR: AUTHOR_WINS_CSV is not a file: $AUTHOR_WINS_CSV" 1>&2
exit 5
fi
if [[ ! -r $AUTHOR_WINS_CSV ]]; then
echo "$0: ERROR: AUTHOR_WINS_CSV is not a readable file: $AUTHOR_WINS_CSV" 1>&2
exit 5
fi
# verify year_prize.csv is readable
#
if [[ ! -e $YEAR_PRIZE_CSV ]]; then
echo "$0: ERROR: YEAR_PRIZE_CSV does not exist: $YEAR_PRIZE_CSV" 1>&2
exit 6
fi
if [[ ! -f $YEAR_PRIZE_CSV ]]; then
echo "$0: ERROR: YEAR_PRIZE_CSV is not a file: $YEAR_PRIZE_CSV" 1>&2
exit 6
fi
if [[ ! -r $YEAR_PRIZE_CSV ]]; then
echo "$0: ERROR: YEAR_PRIZE_CSV is not a readable file: $YEAR_PRIZE_CSV" 1>&2
exit 6
fi
# verify manifest.csv is readable
#
if [[ ! -e $MANIFEST_CSV ]]; then
echo "$0: ERROR: MANIFEST_CSV does not exist: $MANIFEST_CSV" 1>&2
exit 7
fi
if [[ ! -f $MANIFEST_CSV ]]; then
echo "$0: ERROR: MANIFEST_CSV is not a file: $MANIFEST_CSV" 1>&2
exit 7
fi
if [[ ! -r $MANIFEST_CSV ]]; then
echo "$0: ERROR: MANIFEST_CSV is not a readable file: $MANIFEST_CSV" 1>&2
exit 7
fi
# verify we have a pandoc executable
#
if [[ ! -x $PANDOC ]]; then
echo "$0: ERROR: pandoc executable not found: $PANDOC" 1>&2
exit 8
fi
# determine award
#
AWARD=$(grep -E "^$ENTRY_ID," "$YEAR_PRIZE_CSV" | sed -e "s/^$ENTRY_ID,//")
export AWARD
if [[ -z $AWARD ]]; then
echo "$0: ERROR: cannot find award for $ENTRY_ID in $YEAR_PRIZE_CSV" 1>&2
exit 9
fi
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: AWARD for $ENTRY_ID: $AWARD" 1>&2
fi
# determine author set
#
AUTHOR_SET=$(grep -E ",$ENTRY_ID," "$AUTHOR_WINS_CSV")
declare -a AUTHOR
while read -r author extra; do
if [[ $V_FLAG -ge 5 ]]; then
echo "$0: debug[5]: $ENTRY_ID extra: $extra"
fi
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: $ENTRY_ID author: $author"
fi
if [[ -z $author ]]; then
echo "$0: ERROR: $ENTRY_ID empty author found in $AUTHOR_WINS_CSV with extra: $extra" 1>&2
exit 10
fi
AUTHOR+=( "$author" )
done <<< "$AUTHOR_SET"
export AUTHOR_COUNT=${#AUTHOR[@]}
if [[ $AUTHOR_COUNT -le 0 ]]; then
echo "$0: ERROR: cannot find any authors for $ENTRY_ID" 1>&2
exit 10
fi
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: author count for $ENTRY_ID: $AUTHOR_COUNT"
fi
# collect inventory
#
NUMBER_RANKED_MANIFEST_SET=$(grep -E "^$YEAR,$ENTRY,[^,][^,]*,[0-9]" "$MANIFEST_CSV" | sort -t, -k4n)
declare -a FILE_PATH INVENTORY_ORDER OK_TO_EDIT DISPLAY_AS DISPLAY_VIA_GITHUB ENTRY_TEXT
#
# process inventory with a numerical inventory_order
#
while IFS=, read -r year dir file_path inventory_order OK_to_edit display_as display_via_github entry_text extra; do
# firewall - year dir much match
#
if [[ $YEAR != "$year" ]]; then
echo "$0: ERROR: ^$YEAR,$ENTRY inventory_order: $inventory_order YEAR: $YEAR != $year" 1>&2
exit 30
fi
if [[ $ENTRY != "$dir" ]]; then
echo "$0: ERROR: ^$YEAR,$ENTRY inventory_order: $inventory_order ENTRY: $ENTRY != $dir" 1>&2
exit 31
fi
if [[ $V_FLAG -ge 7 ]]; then
echo "$0: debug[7]: found: year: $year dir: $dir inventory_order: $inventory_order file_path: $file_path" 1>&2
echo "$0: debug[7]: also: display_as: $display_as display_via_github: $display_via_github" 1>&2
echo "$0: debug[7]: and: entry_text: $entry_text extra: $extra" 1>&2
fi
# firewall - nothing except extra should be empty
#
if [[ -z $file_path ]]; then
echo "$0: ERROR: ^$YEAR,$ENTRY inventory_order: $inventory_order empty file_path" 1>&2
exit 32
fi
if [[ -z $inventory_order ]]; then
echo "$0: ERROR: ^$YEAR,$ENTRY inventory_order: $inventory_order empty inventory_order" 1>&2
exit 33
fi
if [[ -z $OK_to_edit ]]; then
echo "$0: ERROR: ^$YEAR,$ENTRY inventory_order: $inventory_order empty OK_to_edit" 1>&2
exit 34
fi
if [[ -z $display_as ]]; then
echo "$0: ERROR: ^$YEAR,$ENTRY inventory_order: $inventory_order empty display_as" 1>&2
exit 37
fi
if [[ -z $display_via_github ]]; then
echo "$0: ERROR: ^$YEAR,$ENTRY inventory_order: $inventory_order empty display_via_github" 1>&2
exit 38
fi
if [[ -z $entry_text ]]; then
echo "$0: ERROR: ^$YEAR,$ENTRY inventory_order: $inventory_order empty entry_text" 1>&2
exit 39
fi
# save inventory information
#
FILE_PATH+=( "$file_path" )
INVENTORY_ORDER+=( "$inventory_order" )
OK_TO_EDIT+=( "$OK_to_edit" )
DISPLAY_AS+=( "$display_as" )
DISPLAY_VIA_GITHUB+=( "$display_via_github" )
ENTRY_TEXT+=( "$entry_text" )
done <<< "$NUMBER_RANKED_MANIFEST_SET"
export FILE_COUNT=${#FILE_PATH[@]}
if [[ $FILE_COUNT -le 0 ]]; then
echo "$0: ERROR: cannot find files in manifest $MANIFEST_CSV for $ENTRY_ID" 1>&2
exit 50
fi
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: manifest file count for $ENTRY_ID: $FILE_COUNT"
fi
# write .entry.json
#
# write leading part of .entry.json
#
cat > "$TMP_DOT_ENTRY_JSON" << EOF
{
"no_comment" : "$NO_COMMENT",
"entry_JSON_format_version" : "$ENTRY_JSON_FORMAT_VERSION",
"award" : "$AWARD",
"year" : $YEAR,
"dir" : "$ENTRY",
"entry_id" : "$ENTRY_ID",
"author_set" : [
EOF
#
# write author_handle part of .entry.json
#
((AUTHOR_COUNT_LESS_1=AUTHOR_COUNT-1))
for i in "${!AUTHOR[@]}"; do
# stupid JSON syntax does not allow a trailing comma
if [[ $i -lt "$AUTHOR_COUNT_LESS_1" ]]; then
cat >> "$TMP_DOT_ENTRY_JSON" << EOF
{ "author_handle" : "${AUTHOR[$i]}" },
EOF
else
cat >> "$TMP_DOT_ENTRY_JSON" << EOF
{ "author_handle" : "${AUTHOR[$i]}" }
EOF
fi
done
#
# write start of manifest of .entry.json
#
cat >> "$TMP_DOT_ENTRY_JSON" << EOF
],
"manifest" : [
EOF
((FILE_COUNT_LESS_1=FILE_COUNT-1))
#
# write each file in the manifest of .entry.json
#
for i in "${!INVENTORY_ORDER[@]}"; do
#
# write start and file_path of a given file in manifest of .entry.json
# write inventory_order of a given file in manifest of .entry.json
# write OK_to_edit of a given file in manifest of .entry.json
# write display_as of a given file in manifest of .entry.json
# write display_via_github of a given file in manifest of .entry.json
# write entry_text of a given file in manifest of .entry.json
#
cat >> "$TMP_DOT_ENTRY_JSON" << EOF
{
"file_path" : "${FILE_PATH[$i]}",
"inventory_order" : ${INVENTORY_ORDER[$i]},
"OK_to_edit" : ${OK_TO_EDIT[$i]},
"display_as" : "${DISPLAY_AS[$i]}",
"display_via_github" : ${DISPLAY_VIA_GITHUB[$i]},
"entry_text" : "${ENTRY_TEXT[$i]}"
EOF
# stupid JSON syntax does not allow a trailing comma
if [[ $i -lt "$FILE_COUNT_LESS_1" ]]; then
cat >> "$TMP_DOT_ENTRY_JSON" << EOF
},
EOF
else
cat >> "$TMP_DOT_ENTRY_JSON" << EOF
}
EOF
fi
done
#
# write trailing part of .entry.json
#
cat >> "$TMP_DOT_ENTRY_JSON" << EOF
]
}
EOF
if [[ $V_FLAG -ge 7 ]]; then
echo "$0: debug[7]: start of TMP_DOT_ENTRY_JSON below: $TMP_DOT_ENTRY_JSON" 1>&2
cat "$TMP_DOT_ENTRY_JSON" 1>&2
echo "$0: debug[7]: end of TMP_DOT_ENTRY_JSON above: $TMP_DOT_ENTRY_JSON" 1>&2
fi
# update .entry.json if needed
#
if ! cmp -s "$TMP_DOT_ENTRY_JSON" "$ENTRY_JSON_PATH"; then
# replace index.html file
#
if [[ $V_FLAG -ge 1 ]]; then
echo "$0: debug[1]: updating $ENTRY_JSON_PATH"
fi
if [[ $V_FLAG -ge 3 ]]; then
mv -f -v "$TMP_DOT_ENTRY_JSON" "$ENTRY_JSON_PATH"
status="$?"
else
mv -f "$TMP_DOT_ENTRY_JSON" "$ENTRY_JSON_PATH"
status="$?"
fi
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: mv -f -v $TMP_DOT_ENTRY_JSON $ENTRY_JSON_PATH failed, error: $status" 1>&2
exit 100
fi
else
# index.html is OK, remove the tmp file
#
rm -f "$TMP_DOT_ENTRY_JSON"
if [[ -e $TMP_DOT_ENTRY_JSON ]]; then
echo "$0: ERROR: TMP_DOT_ENTRY_JSON cannot be removed for cleanup: $TMP_DOT_ENTRY_JSON" 1>&2
exit 101
fi
fi
# All Done!!! All Done!!! -- Jessica Noll, Age 2
#
exit 0
-164
View File
@@ -1,164 +0,0 @@
#!/usr/bin/env bash
#
# gen_path_list.found.sh - generate tmp/path_list.found.txt for entry
# directories under a year
#
# XXX - This is a temporary utility that will be replaced when
# the .entry.json files are built.
#
# Copyright (c) 2023 by Landon Curt Noll. All Rights Reserved.
#
# Permission to use, copy, modify, and distribute this software and
# its documentation for any purpose and without fee is hereby granted,
# provided that the above copyright, this permission notice and text
# this comment, and the disclaimer below appear in all of the following:
#
# supporting documentation
# source copies
# source works derived from this source
# binaries derived from this source or from derived source
#
# LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
# EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# chongo (Landon Curt Noll, http://www.isthe.com/chongo/index.html) /\oo/\
#
# Share and enjoy! :-)
# setup
#
export VERSION="1.1 2024-01-14"
NAME=$(basename "$0"); export NAME
TOPDIR=".."
#
export V_FLAG=0
# usage
#
export USAGE="usage: $0 [-h] [-v level] [-V] [-t topdir]
-h print help message and exit
-v level set verbosity level (def level: $V_FLAG)
-V print version string and exit
-t topdir top directory under which year dirs are found (def: ..)
Exit codes:
0 all OK
2 -h and help string printed or -V and version string printed
3 command line error
>= 10 internal error
$NAME version: $VERSION"
# parse command line
#
while getopts :hv:Vt: flag; do
case "$flag" in
h) echo "$USAGE"
exit 2
;;
v) V_FLAG="$OPTARG"
;;
V) echo "$VERSION"
exit 2
;;
t) TOPDIR="$OPTARG"
;;
\?) echo "$0: ERROR: invalid option: -$OPTARG" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
:) echo "$0: ERROR: option -$OPTARG requires an argument" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
*) echo "$0: ERROR: unexpected value from getopts: $flag" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
esac
done
#
# remove the options
#
shift $(( OPTIND - 1 ));
#
# verify arg count
#
if [[ $# -ne 0 ]]; then
echo "$0: ERROR: expected 0 args, found: $#" 1>&2
echo "$USAGE" 1>&2
exit 3
fi
#
# verify TOPDIR
#
if [[ -z $TOPDIR ]]; then
echo "$0: ERROR: TOPDIR is empty" 1>&2
exit 3
fi
if [[ ! -d $TOPDIR ]]; then
echo "$0: ERROR: TOPDIR: $TOPDIR is not directory" 1>&2
exit 3
fi
if [[ ! -d $TOPDIR/1984 ]]; then
echo "$0: ERROR: TOPDIR: $TOPDIR is missing the 1984 sub-directory" 1>&2
exit 3
fi
if [[ ! -d $TOPDIR/tmp ]]; then
echo "$0: ERROR: TOPDIR: $TOPDIR is missing the tmp sub-directory" 1>&2
exit 3
fi
if [[ ! -f $TOPDIR/Makefile ]]; then
echo "$0: ERROR: TOPDIR: $TOPDIR is missing the top level Makefile" 1>&2
exit 3
fi
# move to TOPDIR
#
cd "$TOPDIR" || echo "$0: ERROR: cd $TOPDIR failed" 1>&2 || exit 10
export PATH_LIST="tmp/path_list.found.txt"
# make clobber
#
make clobber >/dev/null 2>&1
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: make clobber failed, error code: $status" 1>&2
exit 11
fi
# find files under 4 character dirs that aren't .DS_Store or *.dSYM with a depth of at least 2
#
TMPFILE="tmp/tmp.path_list.found.txt.$$"
trap 'rm -f $TMPFILE; exit' 0 1 2 3 15
find -- ???? -mindepth 2 ! -name .DS_Store ! -name '.*.swp' -type f -print | sort -t/ > "$TMPFILE"
if [[ ! -s $TMPFILE ]]; then
echo "$0: ERROR: TMPFILE: $TMPFILE is empty" 1>&2
exit 12
fi
if ! cmp -s "$TMPFILE" "$PATH_LIST"; then
# replace the file list
#
echo "$0: updating $PATH_LIST"
mv -f -v "$TMPFILE" "$PATH_LIST"
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: mv -f -v $TMPFILE $PATH_LIST failed, error: $status" 1>&2
exit 13
fi
fi
# All Done!!! All Done!!! -- Jessica Noll, Age 2
#
exit 0
-4355
View File
File diff suppressed because it is too large. Load diff
Binary file not shown.
-463
View File
@@ -1,463 +0,0 @@
#!/usr/bin/env bash
#
# md-chk-paths.sh - print local file paths referenced in markdown links
#
# For all markdown files, print markdown links that are local.
# We ignore URLs that start with "http:" or "https:".
# We ignore links that are internal to the file (i.e., "#name").
# We strip all "#name" from paths.
#
# Copyright (c) 2024 by Landon Curt Noll. All Rights Reserved.
#
# Permission to use, copy, modify, and distribute this software and
# its documentation for any purpose and without fee is hereby granted,
# provided that the above copyright, this permission notice and text
# this comment, and the disclaimer below appear in all of the following:
#
# supporting documentation
# source copies
# source works derived from this source
# binaries derived from this source or from derived source
#
# LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
# EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# chongo (Landon Curt Noll, http://www.isthe.com/chongo/index.html) /\oo/\
#
# Share and enjoy! :-)
# firewall - run only with a bash that is version 5.1.8 or later
#
# The "/usr/bin/env bash" command must result in using a bash that
# is version 5.1.8 or later.
#
# We could relax this version and insist on version 4.2 or later. Versions
# of bash between 4.2 and 5.1.7 might work. However, to be safe, we will require
# bash version 5.1.8 or later.
#
# WHY 5.1.8 and not 4.2? This safely is done because macOS Homebrew bash we
# often use is "version 5.2.26(1)-release" or later, and the RHEL Linux bash we
# use often use is "version 5.1.8(1)-release" or later. These versions are what
# we initially tested. We recommend you either upgrade bash or install a newer
# version of bash and adjust your $PATH so that "/usr/bin/env bash" finds a bash
# that is version 5.1.8 or later.
#
# NOTE: The macOS shipped, as of 2024 March 15, a version of bash is something like
# bash "version 3.2.57(1)-release". That macOS shipped version of bash
# will NOT work. For users of macOS we recommend you install Homebrew,
# (see https://brew.sh), and then run "brew install bash" which will
# typically install it into /opt/homebrew/bin/bash, and then arrange your $PATH
# so that "/usr/bin/env bash" finds "/opt/homebrew/bin" (or whatever the
# Homebrew bash is).
#
# NOTE: And while MacPorts might work, we noticed a number of subtle differences
# with some of their ported tools to suggest you might be better off
# with installing Homebrew (see https://brew.sh). No disrespect is intended
# to the MacPorts team as they do a commendable job. Nevertheless we ran
# into enough differences with MacPorts environments to suggest you
# might find a better experience with this tool under Homebrew instead.
#
if [[ -z ${BASH_VERSINFO[0]} ||
${BASH_VERSINFO[0]} -lt 5 ||
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -lt 1 ||
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -eq 1 && ${BASH_VERSINFO[2]} -lt 8 ]]; then
echo "$0: ERROR: bash version needs to be >= 5.1.8: $BASH_VERSION" 1>&2
echo "$0: Warning: bash version >= 4.2 might work but 5.1.8 was the minimum we tested" 1>&2
echo "$0: Notice: For macOS users: install Homebrew (see https://brew.sh), then run" \
""brew install bash" and then modify your \$PATH so that \"#!/usr/bin/env bash\"" \
"finds the Homebrew installed (usually /opt/homebrew/bin/bash) version of bash" 1>&2
exit 4
fi
# setup bash file matching
#
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
# This requires a bash with a version 4.2 or later. See the larger comment above about bash versions.
#
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
shopt -u failglob # disable error message if no matches are found
shopt -u dotglob # disable matching files starting with .
shopt -u nocaseglob # disable strict case matching
shopt -u extglob # enable extended globbing patterns
shopt -s globstar # enable ** to match all files and zero or more directories and subdirectories
# set variables referenced in the usage message
#
export VERSION="1.0 2024-04-25"
NAME=$(basename "$0")
export NAME
export V_FLAG=0
GIT_TOOL=$(type -P git)
export GIT_TOOL
if [[ -z "$GIT_TOOL" ]]; then
echo "$0: FATAL: git tool is not installed or not in \$PATH" 1>&2
exit 5
fi
"$GIT_TOOL" rev-parse --is-inside-work-tree >/dev/null 2>&1
status="$?"
if [[ $status -eq 0 ]]; then
TOPDIR=$("$GIT_TOOL" rev-parse --show-toplevel)
fi
export TOPDIR
# usage
#
export USAGE="usage: $0 [-h] [-v level] [-V] [-d topdir]
-h print help message and exit
-v level set verbosity level (def level: 0)
-V print version string and exit
-d topdir set topdir (def: $TOPDIR)
Exit codes:
0 all OK
1 some internal tool exited non-zero
2 -h and help string printed or -V and version string printed
3 command line error
4 bash version is too old
6 problems found with or in the topdir or topdir/YYYY directory
7 problems found with or in the entry topdir/YYYY/dir directory
>= 10 internal error
$NAME version: $VERSION"
# fast_dirname - perform dirname(1) without calling a command
#
# This is very similar with dirname(1) except it is much faster.
#
# usage:
# fast_dirname path_name
#
# path to obtain the directory from
#
function fast_dirname
{
local PATH_NAME; # path_name argument to be modified
# parse args
#
if [[ $# -ne 1 ]]; then
echo "$0: ERROR: in fast_dirname: debug_parameters requires 1 arg, found: $#" 1>&2
exit 10
fi
PATH_NAME="$1"
# firewall - reject empty paths
#
if [[ -z $PATH_NAME ]]; then
echo "$0: ERROR: in fast_dirname: pathname arg is empty" 1>&2
exit 11
fi
# reduce multiple consecutive /'s to just /
#
while :; do
case "$PATH_NAME" in
*//*) PATH_NAME="${PATH_NAME//\/\//\/}" ;;
*) break ;;
esac
done
# trim any trailing /
#
PATH_NAME=${PATH_NAME%%/}
# case: if we only had /'s return /
#
if [[ -z "$PATH_NAME" ]]; then
echo '/'
return;
fi
# case: PATH_NAME is an absolute path starting with /
#
case "$PATH_NAME" in
/*) echo "${PATH_NAME%/*}"; return ;;
*/*) echo "${PATH_NAME%/*}"; return ;;
*) echo '.'; return ;;
esac
}
# parse command line
#
while getopts :hv:Vd:nN flag; do
case "$flag" in
h) echo "$USAGE" 1>&2
exit 2
;;
v) V_FLAG="$OPTARG"
;;
V) echo "$VERSION"
exit 2
;;
d) TOPDIR="$OPTARG"
;;
\?) echo "$0: ERROR: invalid option: -$OPTARG" 1>&2
echo 1>&2
print_usage 1>&2
exit 3
;;
:) echo "$0: ERROR: option -$OPTARG requires an argument" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
*) echo "$0: ERROR: unexpected value from getopts: $flag" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
esac
done
# remove the options
#
shift $(( OPTIND - 1 ));
#
if [[ $V_FLAG -ge 5 ]]; then
echo "$0: debug[5]: file argument count: $#" 1>&2
fi
#
# verify arg count and parse args
#
export TOOL
case "$#" in
0) ;;
*) echo "$0: ERROR: expected 0 args, found: $#" 1>&2
echo "$USAGE" 1>&2
exit 3
;;
esac
# print running info if verbose
#
# If -v 3 or higher, print exported variables in order that they were exported.
#
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: VERSION=$VERSION" 1>&2
echo "$0: debug[3]: NAME=$NAME" 1>&2
echo "$0: debug[3]: V_FLAG=$V_FLAG" 1>&2
echo "$0: debug[3]: GIT_TOOL=$GIT_TOOL" 1>&2
echo "$0: debug[3]: TOPDIR=$TOPDIR" 1>&2
fi
# cd to topdir
#
if [[ ! -e $TOPDIR ]]; then
echo "$0: ERROR: cannot cd to non-existent path: $TOPDIR" 1>&2
exit 6
fi
if [[ ! -d $TOPDIR ]]; then
echo "$0: ERROR: cannot cd to a non-directory: $TOPDIR" 1>&2
exit 6
fi
export CD_FAILED
if [[ $V_FLAG -ge 5 ]]; then
echo "$0: debug[5]: about to: cd $TOPDIR" 1>&2
fi
cd "$TOPDIR" || CD_FAILED="true"
if [[ -n $CD_FAILED ]]; then
echo "$0: ERROR: cd $TOPDIR failed" 1>&2
exit 6
fi
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: now in directory: $(/bin/pwd)" 1>&2
fi
# collect markdown links
#
# Here be extended regular expression magic dragons! :-)
#
# We will try to explain, as best as we can, these complex regular expressions.
#
# After grep of markdown files (files in sorted dictionary order) for markdown line lines, we sed:
#
# # remove any "[some string]" that is not immediately followed by "("
#
# -e 's/\[[^]]*\]([^(])/\1/' \
#
# # remove any trialing "[followed by text without a closing bracket"
#
# -e 's/\[[^]]*$//' \
#
# Then processing the second file (after the filename field) we sed:
#
# # remove any leading "..non-[-stuff..["
#
# -e 's/^[^[]()+\[/[/' \
#
# # replace "beginning text stuff](" with "[text stuff]("
# # because the previous line might have ended with "[beginning"
#
# -e 's/^([^][]*\]\()/[\1/g' \
#
# # remove any "[..non-]-stuff..][..more-non-]-stuff..]"
#
# -e 's/(\[[^][]*\])+([^(])/\2/g' \
#
# # remove any non-link before the first "[some string](path)"
#
# -e 's/^[^][]+(\[[^]]*\]\([^(]*\))/\1/' \
#
# # remove any final "[..non-]-stuff..$"
#
# -e 's/\[[^]]*$//' \
#
# # remove any final "(..non-)-stuff..)..non-[-stuff.."
#
# -e 's/(\([^)]*\))[^[]*$/\1/' \
#
# # remove any trailing non-[-text after the final "[some string](path)"
#
# -e 's/(\[[^]]*\]\([^(]*\))[^[]+$/\1/' \
#
# # replace ")..non-open-bracket-stuff.[" with ") ["
#
# -e 's/\)[^[]*\[/) [/g' \
#
# # replace "[some string](apath) [other string](bpath)" with two lines:
# #
# # "[some string](apath)"
# # "[other string](bpath)"
#
# -e 's/(\[[^]]*\]\([^(]*\))/\1\n/g' \
#
# # remove blank and empty lines
#
# -e '/^\s*$/d' \
#
# Then pipe the lines into another sed:
#
# # replace multiple space with a single space
#
# -e 's/ +/ /g' \
#
# # remove the leading "[pseudo title]("
#
# -e 's/\[[^]]*\]\(//' \
#
# # remove trailing ")":
#
# -e 's/\)$//' \
#
# # remove and trailing #name
#
# -e 's/#.*$//' \
#
# # remove any leading whitespace
#
# -e 's/^ //' \
#
# # remove blank and empty lines
#
# -e '/^\s*$/d' \
#
# # delete all http: and https: URLs
#
# -e '/^https?:/d' \
#
# # delete all mailto: URLs
#
# -e '/^mailto:/d' \
#
#
# -e 's;%%DOCROOT_SLASH%%/*;/;' \
#
# # add current directory in front of absolute paths
#
# -e "s;^/;$PWD;" \
#
# # add current directory followed by / in front of relative paths
#
# -e "s;^([^/]);$PWD/\1;" \
#
# # convert "%%REPO_URL%%/" into TOPDIR
#
# -e "s;%%REPO_URL%%/*;$TOPDIR/;" \
#
# # convert "%%DOCROOT_SLASH%%" into TOPDIR
#
# -e "s;%%DOCROOT_SLASH%%/*;$TOPDIR/;" \
#
# # relative paths have the directory of the markdown file added to them
#
# -e "s;^([^/]);$TOPDIR/$MD_DIR/\1;" \
#
# # delete all lines containing "%%TOKEN%%" as this is a just a test/example token
#
# -e '/%%TOKEN%%/d' \
#
# At this point in the pipe, we have absolute /-based paths to markdown linked local files.
# We test if those file exist, and if not report a problem in the form:
#
# # Missing file linked in: markdown_file_name.md
# # Markdown line: ..the markdown line containing the line..
# /missing/filename
#
find . -name '*.md' ! -name markdown.md ! -path './tmp/*' -print |
LANG=C sort -d |
xargs grep '\]([^)][^)]*)' /dev/null |
sed -E \
-e 's;^\.\/;;' \
-e 's/^([^:]+):\s*/\1 /' \
|
while read -r MD_PATH MD_LINE; do
# note directory containing the markdown file
#
MD_DIR=$(fast_dirname "$MD_PATH")
export MD_DIR
# extract markdown parts from the given markdown file
#
echo "$MD_LINE" |
sed -E \
-e 's/^[^[]()+\[/[/' \
-e 's/^([^][]*\]\()/[\1/g' \
-e 's/(\[[^][]*\])+([^(])/\2/g' \
-e 's/^[^][]+(\[[^]]*\]\([^(]*\))/\1/' \
-e 's/\[[^]]*$//' \
-e 's/(\([^)]*\))[^[]*$/\1/' \
-e 's/(\[[^]]*\]\([^(]*\))[^[]+$/\1/' \
-e 's/\)[^[]*\[/) [/g' \
-e 's/(\[[^]]*\]\([^(]*\))/\1\n/g' \
-e '/^\s*$/d' \
|
sed -E \
-e 's/ +/ /g' \
-e 's/\[[^]]*\]\(//' \
-e 's/\)$//' \
-e 's/#.*$//' \
-e 's/^ //' \
-e '/^\s*$/d' \
-e '/^https?:/d' \
-e '/^mailto:/d' \
-e "s;%%REPO_URL%%/*;$TOPDIR/;" \
-e "s;%%DOCROOT_SLASH%%/*;$TOPDIR/;" \
-e "s;^([^/]);$TOPDIR/$MD_DIR/\1;" \
-e '/%%TOKEN%%/d' \
|
while read -r ABS_LOCAL_FILE_PATH; do
if [[ ! -e $ABS_LOCAL_FILE_PATH ]]; then
echo "# Missing file linked in: $MD_PATH" 1>&2
echo "# Markdown line: $MD_LINE" 1>&2
echo "$ABS_LOCAL_FILE_PATH" 1>&2
fi
done
done
# All Done!!! All Done!!! -- Jessica Noll, Age 2
#
exit 0
-365
View File
@@ -1,365 +0,0 @@
#!/usr/bin/env bash
#
# bin/md-link-paths.sh - print local file paths referenced in markdown links
#
# For all markdown files, print markdown links that are local.
# We ignore URLs that start with "http:" or "https:".
# We ignore links that are internal to the file (i.e., "#name").
# We strip all "#name" from paths.
#
# Copyright (c) 2024 by Landon Curt Noll. All Rights Reserved.
#
# Permission to use, copy, modify, and distribute this software and
# its documentation for any purpose and without fee is hereby granted,
# provided that the above copyright, this permission notice and text
# this comment, and the disclaimer below appear in all of the following:
#
# supporting documentation
# source copies
# source works derived from this source
# binaries derived from this source or from derived source
#
# LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
# EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# chongo (Landon Curt Noll, http://www.isthe.com/chongo/index.html) /\oo/\
#
# Share and enjoy! :-)
# firewall - run only with a bash that is version 5.1.8 or later
#
# The "/usr/bin/env bash" command must result in using a bash that
# is version 5.1.8 or later.
#
# We could relax this version and insist on version 4.2 or later. Versions
# of bash between 4.2 and 5.1.7 might work. However, to be safe, we will require
# bash version 5.1.8 or later.
#
# WHY 5.1.8 and not 4.2? This safely is done because macOS Homebrew bash we
# often use is "version 5.2.26(1)-release" or later, and the RHEL Linux bash we
# use often use is "version 5.1.8(1)-release" or later. These versions are what
# we initially tested. We recommend you either upgrade bash or install a newer
# version of bash and adjust your $PATH so that "/usr/bin/env bash" finds a bash
# that is version 5.1.8 or later.
#
# NOTE: The macOS shipped, as of 2024 March 15, a version of bash is something like
# bash "version 3.2.57(1)-release". That macOS shipped version of bash
# will NOT work. For users of macOS we recommend you install Homebrew,
# (see https://brew.sh), and then run "brew install bash" which will
# typically install it into /opt/homebrew/bin/bash, and then arrange your $PATH
# so that "/usr/bin/env bash" finds "/opt/homebrew/bin" (or whatever the
# Homebrew bash is).
#
# NOTE: And while MacPorts might work, we noticed a number of subtle differences
# with some of their ported tools to suggest you might be better off
# with installing Homebrew (see https://brew.sh). No disrespect is intended
# to the MacPorts team as they do a commendable job. Nevertheless we ran
# into enough differences with MacPorts environments to suggest you
# might find a better experience with this tool under Homebrew instead.
#
if [[ -z ${BASH_VERSINFO[0]} ||
${BASH_VERSINFO[0]} -lt 5 ||
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -lt 1 ||
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -eq 1 && ${BASH_VERSINFO[2]} -lt 8 ]]; then
echo "$0: ERROR: bash version needs to be >= 5.1.8: $BASH_VERSION" 1>&2
echo "$0: Warning: bash version >= 4.2 might work but 5.1.8 was the minimum we tested" 1>&2
echo "$0: Notice: For macOS users: install Homebrew (see https://brew.sh), then run" \
""brew install bash" and then modify your \$PATH so that \"#!/usr/bin/env bash\"" \
"finds the Homebrew installed (usually /opt/homebrew/bin/bash) version of bash" 1>&2
exit 4
fi
# setup bash file matching
#
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
# This requires a bash with a version 4.2 or later. See the larger comment above about bash versions.
#
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
shopt -u failglob # disable error message if no matches are found
shopt -u dotglob # disable matching files starting with .
shopt -u nocaseglob # disable strict case matching
shopt -u extglob # enable extended globbing patterns
shopt -s globstar # enable ** to match all files and zero or more directories and subdirectories
# set variables referenced in the usage message
#
export VERSION="1.0 2024-04-25"
NAME=$(basename "$0")
export NAME
export V_FLAG=0
GIT_TOOL=$(type -P git)
export GIT_TOOL
if [[ -z "$GIT_TOOL" ]]; then
echo "$0: FATAL: git tool is not installed or not in \$PATH" 1>&2
exit 5
fi
"$GIT_TOOL" rev-parse --is-inside-work-tree >/dev/null 2>&1
status="$?"
if [[ $status -eq 0 ]]; then
TOPDIR=$("$GIT_TOOL" rev-parse --show-toplevel)
fi
export TOPDIR
# usage
#
export USAGE="usage: $0 [-h] [-v level] [-V] [-d topdir]
-h print help message and exit
-v level set verbosity level (def level: 0)
-V print version string and exit
-d topdir set topdir (def: $TOPDIR)
Exit codes:
0 all OK
1 some internal tool exited non-zero
2 -h and help string printed or -V and version string printed
3 command line error
4 bash version is too old
>= 10 internal error
$NAME version: $VERSION"
# parse command line
#
while getopts :hv:Vd:nN flag; do
case "$flag" in
h) echo "$USAGE" 1>&2
exit 2
;;
v) V_FLAG="$OPTARG"
;;
V) echo "$VERSION"
exit 2
;;
d) TOPDIR="$OPTARG"
;;
\?) echo "$0: ERROR: invalid option: -$OPTARG" 1>&2
echo 1>&2
print_usage 1>&2
exit 3
;;
:) echo "$0: ERROR: option -$OPTARG requires an argument" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
*) echo "$0: ERROR: unexpected value from getopts: $flag" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
esac
done
# remove the options
#
shift $(( OPTIND - 1 ));
#
if [[ $V_FLAG -ge 5 ]]; then
echo "$0: debug[5]: file argument count: $#" 1>&2
fi
#
# verify arg count and parse args
#
export TOOL
case "$#" in
0) ;;
*) echo "$0: ERROR: expected 0 args, found: $#" 1>&2
echo "$USAGE" 1>&2
exit 3
;;
esac
# print running info if verbose
#
# If -v 3 or higher, print exported variables in order that they were exported.
#
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: VERSION=$VERSION" 1>&2
echo "$0: debug[3]: NAME=$NAME" 1>&2
echo "$0: debug[3]: V_FLAG=$V_FLAG" 1>&2
echo "$0: debug[3]: GIT_TOOL=$GIT_TOOL" 1>&2
echo "$0: debug[3]: TOPDIR=$TOPDIR" 1>&2
fi
# cd to topdir
#
if [[ ! -e $TOPDIR ]]; then
echo "$0: ERROR: cannot cd to non-existent path: $TOPDIR" 1>&2
exit 6
fi
if [[ ! -d $TOPDIR ]]; then
echo "$0: ERROR: cannot cd to a non-directory: $TOPDIR" 1>&2
exit 6
fi
export CD_FAILED
if [[ $V_FLAG -ge 5 ]]; then
echo "$0: debug[5]: about to: cd $TOPDIR" 1>&2
fi
cd "$TOPDIR" || CD_FAILED="true"
if [[ -n $CD_FAILED ]]; then
echo "$0: ERROR: cd $TOPDIR failed" 1>&2
exit 6
fi
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: now in directory: $(/bin/pwd)" 1>&2
fi
# collect markdown links
#
# Here be extended regular expression magic dragons! :-)
#
# We will try to explain, as best as we can, these complex regular expressions.
#
# After grep of markdown files (files in sorted dictionary order) for markdown line lines, we sed:
#
# # remove any "[some string]" that is not immediately followed by "("
#
# -e 's/\[[^]]*\]([^(])/\1/' \
#
# # remove any trialing "[followed by text without a closing bracket"
#
# -e 's/\[[^]]*$//' \
#
# Then processing the second file (after the filename field) we sed:
#
# # remove any leading "..non-[-stuff..["
#
# -e 's/^[^[]()+\[/[/' \
#
# # replace "beginning text stuff](" with "[text stuff]("
# # because the previous line might have ended with "[beginning"
#
# -e 's/^([^][]*\]\()/[\1/g' \
#
# # remove any "[..non-]-stuff..][..more-non-]-stuff..]"
#
# -e 's/(\[[^][]*\])+([^(])/\2/g' \
#
# # remove any non-link before the first "[some string](path)"
#
# -e 's/^[^][]+(\[[^]]*\]\([^(]*\))/\1/' \
#
# # remove any final "[..non-]-stuff..$"
#
# -e 's/\[[^]]*$//' \
#
# # remove any final "(..non-)-stuff..)..non-[-stuff.."
#
# -e 's/(\([^)]*\))[^[]*$/\1/' \
#
# # remove any trailing non-[-text after the final "[some string](path)"
#
# -e 's/(\[[^]]*\]\([^(]*\))[^[]+$/\1/' \
#
# # replace ")..non-open-bracket-stuff.[" with ") ["
#
# -e 's/\)[^[]*\[/) [/g' \
#
# # replace "[some string](apath) [other string](bpath)" with two lines:
# #
# # "[some string](apath)"
# # "[other string](bpath)"
#
# -e 's/(\[[^]]*\]\([^(]*\))/\1\n/g' \
#
# # remove blank and empty lines
#
# -e '/^\s*$/d' \
#
# Then pipe the lines into another sed:
#
# # replace multiple space with a single space
#
# -e 's/ +/ /g' \
#
# # remove the leading "[pseudo title]("
#
# -e 's/\[[^]]*\]\(//' \
#
# # remove trailing ")":
#
# -e 's/\)$//' \
#
# # remove and trailing #name
#
# -e 's/#.*$//' \
#
# # remove "%%REPO_URL%%/"
#
# -e 's/%%REPO_URL%%\///' \
#
# # remove "%%DOCROOT_SLASH%%"
#
# -e 's/%%DOCROOT_SLASH%%//' \
#
# # delete all lines containing "%%TOKEN%%" as this is a just a test/example token
#
# -e '/%%TOKEN%%/d' \
#
# # remove any leading whitespace
#
# -e 's/^ //' \
#
# # remove blank and empty lines
#
# -e '/^\s*$/d'
#
# We then remove all links that start with:
#
# http:
# https:
#
# and output just paths
#
# We do not process markdown.md because it contains examples
# of poor markdown use.
#
find . -name '*.md' ! -name markdown.md ! -path './tmp/*' -print |
LANG=C sort -d |
xargs grep '\]([^)][^)]*)' /dev/null |
sed -E \
-e 's;^\.\/;;' \
-e 's/^([^:]+):\s*/\1 /' \
|
while read -r MD_PATH MD_LINE; do
echo "$MD_LINE" |
sed -E \
-e 's/^[^[]()+\[/[/' \
-e 's/^([^][]*\]\()/[\1/g' \
-e 's/(\[[^][]*\])+([^(])/\2/g' \
-e 's/^[^][]+(\[[^]]*\]\([^(]*\))/\1/' \
-e 's/\[[^]]*$//' \
-e 's/(\([^)]*\))[^[]*$/\1/' \
-e 's/(\[[^]]*\]\([^(]*\))[^[]+$/\1/' \
-e 's/\)[^[]*\[/) [/g' \
-e 's/(\[[^]]*\]\([^(]*\))/\1\n/g' \
-e '/^\s*$/d' \
|
sed -E \
-e 's/ +/ /g' \
-e 's/\[[^]]*\]\(//' \
-e 's/\)$//' \
-e 's/#.*$//' \
-e 's/%%REPO_URL%%\///' \
-e 's/%%DOCROOT_SLASH%%//' \
-e '/%%TOKEN%%/d' \
-e 's/^ //' \
-e '/^\s*$/d'
done |
grep -v -E '^http:|^https:|^mailto:'
# All Done!!! All Done!!! -- Jessica Noll, Age 2
#
exit 0
-331
View File
@@ -1,331 +0,0 @@
#!/usr/bin/env bash
#
# md-links.sh - print all markdown links
#
# Copyright (c) 2024 by Landon Curt Noll. All Rights Reserved.
#
# Permission to use, copy, modify, and distribute this software and
# its documentation for any purpose and without fee is hereby granted,
# provided that the above copyright, this permission notice and text
# this comment, and the disclaimer below appear in all of the following:
#
# supporting documentation
# source copies
# source works derived from this source
# binaries derived from this source or from derived source
#
# LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
# EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# chongo (Landon Curt Noll, http://www.isthe.com/chongo/index.html) /\oo/\
#
# Share and enjoy! :-)
# firewall - run only with a bash that is version 5.1.8 or later
#
# The "/usr/bin/env bash" command must result in using a bash that
# is version 5.1.8 or later.
#
# We could relax this version and insist on version 4.2 or later. Versions
# of bash between 4.2 and 5.1.7 might work. However, to be safe, we will require
# bash version 5.1.8 or later.
#
# WHY 5.1.8 and not 4.2? This safely is done because macOS Homebrew bash we
# often use is "version 5.2.26(1)-release" or later, and the RHEL Linux bash we
# use often use is "version 5.1.8(1)-release" or later. These versions are what
# we initially tested. We recommend you either upgrade bash or install a newer
# version of bash and adjust your $PATH so that "/usr/bin/env bash" finds a bash
# that is version 5.1.8 or later.
#
# NOTE: The macOS shipped, as of 2024 March 15, a version of bash is something like
# bash "version 3.2.57(1)-release". That macOS shipped version of bash
# will NOT work. For users of macOS we recommend you install Homebrew,
# (see https://brew.sh), and then run "brew install bash" which will
# typically install it into /opt/homebrew/bin/bash, and then arrange your $PATH
# so that "/usr/bin/env bash" finds "/opt/homebrew/bin" (or whatever the
# Homebrew bash is).
#
# NOTE: And while MacPorts might work, we noticed a number of subtle differences
# with some of their ported tools to suggest you might be better off
# with installing Homebrew (see https://brew.sh). No disrespect is intended
# to the MacPorts team as they do a commendable job. Nevertheless we ran
# into enough differences with MacPorts environments to suggest you
# might find a better experience with this tool under Homebrew instead.
#
if [[ -z ${BASH_VERSINFO[0]} ||
${BASH_VERSINFO[0]} -lt 5 ||
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -lt 1 ||
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -eq 1 && ${BASH_VERSINFO[2]} -lt 8 ]]; then
echo "$0: ERROR: bash version needs to be >= 5.1.8: $BASH_VERSION" 1>&2
echo "$0: Warning: bash version >= 4.2 might work but 5.1.8 was the minimum we tested" 1>&2
echo "$0: Notice: For macOS users: install Homebrew (see https://brew.sh), then run" \
""brew install bash" and then modify your \$PATH so that \"#!/usr/bin/env bash\"" \
"finds the Homebrew installed (usually /opt/homebrew/bin/bash) version of bash" 1>&2
exit 4
fi
# setup bash file matching
#
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
# This requires a bash with a version 4.2 or later. See the larger comment above about bash versions.
#
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
shopt -u failglob # disable error message if no matches are found
shopt -u dotglob # disable matching files starting with .
shopt -u nocaseglob # disable strict case matching
shopt -u extglob # enable extended globbing patterns
shopt -s globstar # enable ** to match all files and zero or more directories and subdirectories
# set variables referenced in the usage message
#
export VERSION="1.0 2024-04-25"
NAME=$(basename "$0")
export NAME
export V_FLAG=0
GIT_TOOL=$(type -P git)
export GIT_TOOL
if [[ -z "$GIT_TOOL" ]]; then
echo "$0: FATAL: git tool is not installed or not in \$PATH" 1>&2
exit 5
fi
"$GIT_TOOL" rev-parse --is-inside-work-tree >/dev/null 2>&1
status="$?"
if [[ $status -eq 0 ]]; then
TOPDIR=$("$GIT_TOOL" rev-parse --show-toplevel)
fi
export TOPDIR
# usage
#
export USAGE="usage: $0 [-h] [-v level] [-V] [-d topdir]
-h print help message and exit
-v level set verbosity level (def level: 0)
-V print version string and exit
-d topdir set topdir (def: $TOPDIR)
Exit codes:
0 all OK
1 some internal tool exited non-zero
2 -h and help string printed or -V and version string printed
3 command line error
4 bash version is too old
>= 10 internal error
$NAME version: $VERSION"
# parse command line
#
while getopts :hv:Vd:nN flag; do
case "$flag" in
h) echo "$USAGE" 1>&2
exit 2
;;
v) V_FLAG="$OPTARG"
;;
V) echo "$VERSION"
exit 2
;;
d) TOPDIR="$OPTARG"
;;
\?) echo "$0: ERROR: invalid option: -$OPTARG" 1>&2
echo 1>&2
print_usage 1>&2
exit 3
;;
:) echo "$0: ERROR: option -$OPTARG requires an argument" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
*) echo "$0: ERROR: unexpected value from getopts: $flag" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
esac
done
# remove the options
#
shift $(( OPTIND - 1 ));
#
if [[ $V_FLAG -ge 5 ]]; then
echo "$0: debug[5]: file argument count: $#" 1>&2
fi
#
# verify arg count and parse args
#
export TOOL
case "$#" in
0) ;;
*) echo "$0: ERROR: expected 0 args, found: $#" 1>&2
echo "$USAGE" 1>&2
exit 3
;;
esac
# print running info if verbose
#
# If -v 3 or higher, print exported variables in order that they were exported.
#
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: VERSION=$VERSION" 1>&2
echo "$0: debug[3]: NAME=$NAME" 1>&2
echo "$0: debug[3]: V_FLAG=$V_FLAG" 1>&2
echo "$0: debug[3]: GIT_TOOL=$GIT_TOOL" 1>&2
echo "$0: debug[3]: TOPDIR=$TOPDIR" 1>&2
fi
# cd to topdir
#
if [[ ! -e $TOPDIR ]]; then
echo "$0: ERROR: cannot cd to non-existent path: $TOPDIR" 1>&2
exit 6
fi
if [[ ! -d $TOPDIR ]]; then
echo "$0: ERROR: cannot cd to a non-directory: $TOPDIR" 1>&2
exit 6
fi
export CD_FAILED
if [[ $V_FLAG -ge 5 ]]; then
echo "$0: debug[5]: about to: cd $TOPDIR" 1>&2
fi
cd "$TOPDIR" || CD_FAILED="true"
if [[ -n $CD_FAILED ]]; then
echo "$0: ERROR: cd $TOPDIR failed" 1>&2
exit 6
fi
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: now in directory: $(/bin/pwd)" 1>&2
fi
# collect markdown links
#
# Here be extended regular expression magic dragons! :-)
#
# We will try to explain, as best as we can, these complex regular expressions.
#
# After grep of markdown files (files in sorted dictionary order) for markdown line lines, we sed:
#
# # remove any "[some string]" that is not immediately followed by "("
#
# -e 's/\[[^]]*\]([^(])/\1/' \
#
# # remove any trialing "[followed by text without a closing bracket"
#
# -e 's/\[[^]]*$//' \
#
# Then processing the second file (after the filename field) we sed:
#
# # remove any leading "..non-[-stuff..["
#
# -e 's/^[^[]()+\[/[/' \
#
# # replace "beginning text stuff](" with "[text stuff]("
# # because the previous line might have ended with "[beginning"
#
# -e 's/^([^][]*\]\()/[\1/g' \
#
# # remove any "[..non-]-stuff..][..more-non-]-stuff..]"
#
# -e 's/(\[[^][]*\])+([^(])/\2/g' \
#
# # remove any non-link before the first "[some string](path)"
#
# -e 's/^[^][]+(\[[^]]*\]\([^(]*\))/\1/' \
#
# # remove any final "[..non-]-stuff..$"
#
# -e 's/\[[^]]*$//' \
#
# # remove any final "(..non-)-stuff..)..non-[-stuff.."
#
# -e 's/(\([^)]*\))[^[]*$/\1/' \
#
# # remove any trailing non-[-text after the final "[some string](path)"
#
# -e 's/(\[[^]]*\]\([^(]*\))[^[]+$/\1/' \
#
# # replace ")..non-open-bracket-stuff.[" with ") ["
#
# -e 's/\)[^[]*\[/) [/g' \
#
# # replace "[some string](apath) [other string](bpath)" with two lines:
# #
# # "[some string](apath)"
# # "[other string](bpath)"
#
# -e 's/(\[[^]]*\]\([^(]*\))/\1\n/g' \
#
# # remove blank and empty lines
#
# -e '/^\s*$/d' \
#
# Then pipe the lines into another sed:
#
# # replace multiple space with a single space
#
# -e 's/ +/ /g' \
#
# # remove blank and empty lines
#
# -e '/^\s*$/d' \
#
# # prepend the markdown path (without the leading "./") followed by space to each line
#
# -e "s;^;$MD_PATH ;" \
#
# # replace multiple space with a single space
#
# -e 's/ +/ /g'
#
# Output are lines of the form:
#
# markdown_path.md [pseudo title](path)
#
# We do not process markdown.md because it contains examples
# of poor markdown use.
#
find . -name '*.md' ! -name markdown.md ! -path './tmp/*' -print |
LANG=C sort -d |
xargs grep '\]([^)][^)]*)' /dev/null |
sed -E \
-e 's;^\.\/;;' \
-e 's/^([^:]+):\s*/\1 /' \
|
while read -r MD_PATH MD_LINE; do
echo "$MD_LINE" |
sed -E \
-e 's/^[^[]()+\[/[/' \
-e 's/^([^][]*\]\()/[\1/g' \
-e 's/(\[[^][]*\])+([^(])/\2/g' \
-e 's/^[^][]+(\[[^]]*\]\([^(]*\))/\1/' \
-e 's/\[[^]]*$//' \
-e 's/(\([^)]*\))[^[]*$/\1/' \
-e 's/(\[[^]]*\]\([^(]*\))[^[]+$/\1/' \
-e 's/\)[^[]*\[/) [/g' \
-e 's/(\[[^]]*\]\([^(]*\))/\1\n/g' \
-e '/^\s*$/d' \
|
sed -E \
-e 's/ +/ /g' \
-e '/^\s*$/d' \
-e "s;^;${MD_PATH} ;" \
-e 's/ +/ /g'
done
# All Done!!! All Done!!! -- Jessica Noll, Age 2
#
exit 0
-343
View File
@@ -1,343 +0,0 @@
#!/usr/bin/env bash
#
# md-local-links.sh - print all markdown links to a local file
#
# For all markdown files, print markdown links that are local.
# We ignore URLs that start with "http:" or "https:".
# We ignore links that are internal to the file (i.e., "#name").
#
# Copyright (c) 2024 by Landon Curt Noll. All Rights Reserved.
#
# Permission to use, copy, modify, and distribute this software and
# its documentation for any purpose and without fee is hereby granted,
# provided that the above copyright, this permission notice and text
# this comment, and the disclaimer below appear in all of the following:
#
# supporting documentation
# source copies
# source works derived from this source
# binaries derived from this source or from derived source
#
# LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
# EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# chongo (Landon Curt Noll, http://www.isthe.com/chongo/index.html) /\oo/\
#
# Share and enjoy! :-)
# firewall - run only with a bash that is version 5.1.8 or later
#
# The "/usr/bin/env bash" command must result in using a bash that
# is version 5.1.8 or later.
#
# We could relax this version and insist on version 4.2 or later. Versions
# of bash between 4.2 and 5.1.7 might work. However, to be safe, we will require
# bash version 5.1.8 or later.
#
# WHY 5.1.8 and not 4.2? This safely is done because macOS Homebrew bash we
# often use is "version 5.2.26(1)-release" or later, and the RHEL Linux bash we
# use often use is "version 5.1.8(1)-release" or later. These versions are what
# we initially tested. We recommend you either upgrade bash or install a newer
# version of bash and adjust your $PATH so that "/usr/bin/env bash" finds a bash
# that is version 5.1.8 or later.
#
# NOTE: The macOS shipped, as of 2024 March 15, a version of bash is something like
# bash "version 3.2.57(1)-release". That macOS shipped version of bash
# will NOT work. For users of macOS we recommend you install Homebrew,
# (see https://brew.sh), and then run "brew install bash" which will
# typically install it into /opt/homebrew/bin/bash, and then arrange your $PATH
# so that "/usr/bin/env bash" finds "/opt/homebrew/bin" (or whatever the
# Homebrew bash is).
#
# NOTE: And while MacPorts might work, we noticed a number of subtle differences
# with some of their ported tools to suggest you might be better off
# with installing Homebrew (see https://brew.sh). No disrespect is intended
# to the MacPorts team as they do a commendable job. Nevertheless we ran
# into enough differences with MacPorts environments to suggest you
# might find a better experience with this tool under Homebrew instead.
#
if [[ -z ${BASH_VERSINFO[0]} ||
${BASH_VERSINFO[0]} -lt 5 ||
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -lt 1 ||
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -eq 1 && ${BASH_VERSINFO[2]} -lt 8 ]]; then
echo "$0: ERROR: bash version needs to be >= 5.1.8: $BASH_VERSION" 1>&2
echo "$0: Warning: bash version >= 4.2 might work but 5.1.8 was the minimum we tested" 1>&2
echo "$0: Notice: For macOS users: install Homebrew (see https://brew.sh), then run" \
""brew install bash" and then modify your \$PATH so that \"#!/usr/bin/env bash\"" \
"finds the Homebrew installed (usually /opt/homebrew/bin/bash) version of bash" 1>&2
exit 4
fi
# setup bash file matching
#
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
# This requires a bash with a version 4.2 or later. See the larger comment above about bash versions.
#
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
shopt -u failglob # disable error message if no matches are found
shopt -u dotglob # disable matching files starting with .
shopt -u nocaseglob # disable strict case matching
shopt -u extglob # enable extended globbing patterns
shopt -s globstar # enable ** to match all files and zero or more directories and subdirectories
# set variables referenced in the usage message
#
export VERSION="1.0 2024-04-25"
NAME=$(basename "$0")
export NAME
export V_FLAG=0
GIT_TOOL=$(type -P git)
export GIT_TOOL
if [[ -z "$GIT_TOOL" ]]; then
echo "$0: FATAL: git tool is not installed or not in \$PATH" 1>&2
exit 5
fi
"$GIT_TOOL" rev-parse --is-inside-work-tree >/dev/null 2>&1
status="$?"
if [[ $status -eq 0 ]]; then
TOPDIR=$("$GIT_TOOL" rev-parse --show-toplevel)
fi
export TOPDIR
# usage
#
export USAGE="usage: $0 [-h] [-v level] [-V] [-d topdir]
-h print help message and exit
-v level set verbosity level (def level: 0)
-V print version string and exit
-d topdir set topdir (def: $TOPDIR)
Exit codes:
0 all OK
1 some internal tool exited non-zero
2 -h and help string printed or -V and version string printed
3 command line error
4 bash version is too old
>= 10 internal error
$NAME version: $VERSION"
# parse command line
#
while getopts :hv:Vd:nN flag; do
case "$flag" in
h) echo "$USAGE" 1>&2
exit 2
;;
v) V_FLAG="$OPTARG"
;;
V) echo "$VERSION"
exit 2
;;
d) TOPDIR="$OPTARG"
;;
\?) echo "$0: ERROR: invalid option: -$OPTARG" 1>&2
echo 1>&2
print_usage 1>&2
exit 3
;;
:) echo "$0: ERROR: option -$OPTARG requires an argument" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
*) echo "$0: ERROR: unexpected value from getopts: $flag" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
esac
done
# remove the options
#
shift $(( OPTIND - 1 ));
#
if [[ $V_FLAG -ge 5 ]]; then
echo "$0: debug[5]: file argument count: $#" 1>&2
fi
#
# verify arg count and parse args
#
export TOOL
case "$#" in
0) ;;
*) echo "$0: ERROR: expected 0 args, found: $#" 1>&2
echo "$USAGE" 1>&2
exit 3
;;
esac
# print running info if verbose
#
# If -v 3 or higher, print exported variables in order that they were exported.
#
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: VERSION=$VERSION" 1>&2
echo "$0: debug[3]: NAME=$NAME" 1>&2
echo "$0: debug[3]: V_FLAG=$V_FLAG" 1>&2
echo "$0: debug[3]: GIT_TOOL=$GIT_TOOL" 1>&2
echo "$0: debug[3]: TOPDIR=$TOPDIR" 1>&2
fi
# cd to topdir
#
if [[ ! -e $TOPDIR ]]; then
echo "$0: ERROR: cannot cd to non-existent path: $TOPDIR" 1>&2
exit 6
fi
if [[ ! -d $TOPDIR ]]; then
echo "$0: ERROR: cannot cd to a non-directory: $TOPDIR" 1>&2
exit 6
fi
export CD_FAILED
if [[ $V_FLAG -ge 5 ]]; then
echo "$0: debug[5]: about to: cd $TOPDIR" 1>&2
fi
cd "$TOPDIR" || CD_FAILED="true"
if [[ -n $CD_FAILED ]]; then
echo "$0: ERROR: cd $TOPDIR failed" 1>&2
exit 6
fi
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: now in directory: $(/bin/pwd)" 1>&2
fi
# collect markdown links
#
# Here be extended regular expression magic dragons! :-)
#
# We will try to explain, as best as we can, these complex regular expressions.
#
# After grep of markdown files (files in sorted dictionary order) for markdown line lines, we sed:
#
# # remove any "[some string]" that is not immediately followed by "("
#
# -e 's/\[[^]]*\]([^(])/\1/' \
#
# # remove any trialing "[followed by text without a closing bracket"
#
# -e 's/\[[^]]*$//' \
#
# Then processing the second file (after the filename field) we sed:
#
# # remove any leading "..non-[-stuff..["
#
# -e 's/^[^[]()+\[/[/' \
#
# # replace "beginning text stuff](" with "[text stuff]("
# # because the previous line might have ended with "[beginning"
#
# -e 's/^([^][]*\]\()/[\1/g' \
#
# # remove any "[..non-]-stuff..][..more-non-]-stuff..]"
#
# -e 's/(\[[^][]*\])+([^(])/\2/g' \
#
# # remove any non-link before the first "[some string](path)"
#
# -e 's/^[^][]+(\[[^]]*\]\([^(]*\))/\1/' \
#
# # remove any final "[..non-]-stuff..$"
#
# -e 's/\[[^]]*$//' \
#
# # remove any final "(..non-)-stuff..)..non-[-stuff.."
#
# -e 's/(\([^)]*\))[^[]*$/\1/' \
#
# # remove any trailing non-[-text after the final "[some string](path)"
#
# -e 's/(\[[^]]*\]\([^(]*\))[^[]+$/\1/' \
#
# # replace ")..non-open-bracket-stuff.[" with ") ["
#
# -e 's/\)[^[]*\[/) [/g' \
#
# # replace "[some string](apath) [other string](bpath)" with two lines:
# #
# # "[some string](apath)"
# # "[other string](bpath)"
#
# -e 's/(\[[^]]*\]\([^(]*\))/\1\n/g' \
#
# # remove blank and empty lines
#
# -e '/^\s*$/d' \
#
# Then pipe the lines into another sed:
#
# # replace multiple space with a single space
#
# -e 's/ +/ /g' \
#
# # remove blank and empty lines
#
# -e '/^\s*$/d' \
#
# # prepend the markdown path (without the leading "./") followed by space to each line
#
# -e "s;^;$MD_PATH ;" \
#
# # replace multiple space with a single space
#
# -e 's/ +/ /g'
#
# We then remove all links that start with:
#
# http:
# https:
# mailto:
# #
#
# Output are lines of the form:
#
# markdown_path.md [pseudo title](path)
#
# We do not process markdown.md because it contains examples
# of poor markdown use.
#
find . -name '*.md' ! -name markdown.md ! -path './tmp/*' -print |
LANG=C sort -d |
xargs grep '\]([^)][^)]*)' /dev/null |
sed -E \
-e 's;^\.\/;;' \
-e 's/^([^:]+):\s*/\1 /' \
|
while read -r MD_PATH MD_LINE; do
echo "$MD_LINE" |
sed -E \
-e 's/^[^[]()+\[/[/' \
-e 's/^([^][]*\]\()/[\1/g' \
-e 's/(\[[^][]*\])+([^(])/\2/g' \
-e 's/^[^][]+(\[[^]]*\]\([^(]*\))/\1/' \
-e 's/\[[^]]*$//' \
-e 's/(\([^)]*\))[^[]*$/\1/' \
-e 's/(\[[^]]*\]\([^(]*\))[^[]+$/\1/' \
-e 's/\)[^[]*\[/) [/g' \
-e 's/(\[[^]]*\]\([^(]*\))/\1\n/g' \
-e '/^\s*$/d' \
|
sed -E \
-e 's/ +/ /g' \
-e '/^\s*$/d' \
-e "s;^;${MD_PATH} ;" \
-e 's/ +/ /g'
done |
grep -E -v '^\S+ \[[^]]*\]\(http:|^\S+ \[[^]]*\]\(https:|^\S+ \[[^]]*\]\(mailto:|^\S+ \[[^]]*\]\(#'
# All Done!!! All Done!!! -- Jessica Noll, Age 2
#
exit 0
-331
View File
@@ -1,331 +0,0 @@
#!/usr/bin/env bash
#
# md--token-links.sh - print all markdown links that start with a **%%TOKEN%%**
#
# Copyright (c) 2024 by Landon Curt Noll. All Rights Reserved.
#
# Permission to use, copy, modify, and distribute this software and
# its documentation for any purpose and without fee is hereby granted,
# provided that the above copyright, this permission notice and text
# this comment, and the disclaimer below appear in all of the following:
#
# supporting documentation
# source copies
# source works derived from this source
# binaries derived from this source or from derived source
#
# LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
# EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# chongo (Landon Curt Noll, http://www.isthe.com/chongo/index.html) /\oo/\
#
# Share and enjoy! :-)
# firewall - run only with a bash that is version 5.1.8 or later
#
# The "/usr/bin/env bash" command must result in using a bash that
# is version 5.1.8 or later.
#
# We could relax this version and insist on version 4.2 or later. Versions
# of bash between 4.2 and 5.1.7 might work. However, to be safe, we will require
# bash version 5.1.8 or later.
#
# WHY 5.1.8 and not 4.2? This safely is done because macOS Homebrew bash we
# often use is "version 5.2.26(1)-release" or later, and the RHEL Linux bash we
# use often use is "version 5.1.8(1)-release" or later. These versions are what
# we initially tested. We recommend you either upgrade bash or install a newer
# version of bash and adjust your $PATH so that "/usr/bin/env bash" finds a bash
# that is version 5.1.8 or later.
#
# NOTE: The macOS shipped, as of 2024 March 15, a version of bash is something like
# bash "version 3.2.57(1)-release". That macOS shipped version of bash
# will NOT work. For users of macOS we recommend you install Homebrew,
# (see https://brew.sh), and then run "brew install bash" which will
# typically install it into /opt/homebrew/bin/bash, and then arrange your $PATH
# so that "/usr/bin/env bash" finds "/opt/homebrew/bin" (or whatever the
# Homebrew bash is).
#
# NOTE: And while MacPorts might work, we noticed a number of subtle differences
# with some of their ported tools to suggest you might be better off
# with installing Homebrew (see https://brew.sh). No disrespect is intended
# to the MacPorts team as they do a commendable job. Nevertheless we ran
# into enough differences with MacPorts environments to suggest you
# might find a better experience with this tool under Homebrew instead.
#
if [[ -z ${BASH_VERSINFO[0]} ||
${BASH_VERSINFO[0]} -lt 5 ||
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -lt 1 ||
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -eq 1 && ${BASH_VERSINFO[2]} -lt 8 ]]; then
echo "$0: ERROR: bash version needs to be >= 5.1.8: $BASH_VERSION" 1>&2
echo "$0: Warning: bash version >= 4.2 might work but 5.1.8 was the minimum we tested" 1>&2
echo "$0: Notice: For macOS users: install Homebrew (see https://brew.sh), then run" \
""brew install bash" and then modify your \$PATH so that \"#!/usr/bin/env bash\"" \
"finds the Homebrew installed (usually /opt/homebrew/bin/bash) version of bash" 1>&2
exit 4
fi
# setup bash file matching
#
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
# This requires a bash with a version 4.2 or later. See the larger comment above about bash versions.
#
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
shopt -u failglob # disable error message if no matches are found
shopt -u dotglob # disable matching files starting with .
shopt -u nocaseglob # disable strict case matching
shopt -u extglob # enable extended globbing patterns
shopt -s globstar # enable ** to match all files and zero or more directories and subdirectories
# set variables referenced in the usage message
#
export VERSION="1.0 2024-04-25"
NAME=$(basename "$0")
export NAME
export V_FLAG=0
GIT_TOOL=$(type -P git)
export GIT_TOOL
if [[ -z "$GIT_TOOL" ]]; then
echo "$0: FATAL: git tool is not installed or not in \$PATH" 1>&2
exit 5
fi
"$GIT_TOOL" rev-parse --is-inside-work-tree >/dev/null 2>&1
status="$?"
if [[ $status -eq 0 ]]; then
TOPDIR=$("$GIT_TOOL" rev-parse --show-toplevel)
fi
export TOPDIR
# usage
#
export USAGE="usage: $0 [-h] [-v level] [-V] [-d topdir]
-h print help message and exit
-v level set verbosity level (def level: 0)
-V print version string and exit
-d topdir set topdir (def: $TOPDIR)
Exit codes:
0 all OK
1 some internal tool exited non-zero
2 -h and help string printed or -V and version string printed
3 command line error
4 bash version is too old
>= 10 internal error
$NAME version: $VERSION"
# parse command line
#
while getopts :hv:Vd:nN flag; do
case "$flag" in
h) echo "$USAGE" 1>&2
exit 2
;;
v) V_FLAG="$OPTARG"
;;
V) echo "$VERSION"
exit 2
;;
d) TOPDIR="$OPTARG"
;;
\?) echo "$0: ERROR: invalid option: -$OPTARG" 1>&2
echo 1>&2
print_usage 1>&2
exit 3
;;
:) echo "$0: ERROR: option -$OPTARG requires an argument" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
*) echo "$0: ERROR: unexpected value from getopts: $flag" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
esac
done
# remove the options
#
shift $(( OPTIND - 1 ));
#
if [[ $V_FLAG -ge 5 ]]; then
echo "$0: debug[5]: file argument count: $#" 1>&2
fi
#
# verify arg count and parse args
#
export TOOL
case "$#" in
0) ;;
*) echo "$0: ERROR: expected 0 args, found: $#" 1>&2
echo "$USAGE" 1>&2
exit 3
;;
esac
# print running info if verbose
#
# If -v 3 or higher, print exported variables in order that they were exported.
#
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: VERSION=$VERSION" 1>&2
echo "$0: debug[3]: NAME=$NAME" 1>&2
echo "$0: debug[3]: V_FLAG=$V_FLAG" 1>&2
echo "$0: debug[3]: GIT_TOOL=$GIT_TOOL" 1>&2
echo "$0: debug[3]: TOPDIR=$TOPDIR" 1>&2
fi
# cd to topdir
#
if [[ ! -e $TOPDIR ]]; then
echo "$0: ERROR: cannot cd to non-existent path: $TOPDIR" 1>&2
exit 6
fi
if [[ ! -d $TOPDIR ]]; then
echo "$0: ERROR: cannot cd to a non-directory: $TOPDIR" 1>&2
exit 6
fi
export CD_FAILED
if [[ $V_FLAG -ge 5 ]]; then
echo "$0: debug[5]: about to: cd $TOPDIR" 1>&2
fi
cd "$TOPDIR" || CD_FAILED="true"
if [[ -n $CD_FAILED ]]; then
echo "$0: ERROR: cd $TOPDIR failed" 1>&2
exit 6
fi
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: now in directory: $(/bin/pwd)" 1>&2
fi
# collect markdown links with a path that starts with a %%TOKEN%%
#
# Here be extended regular expression magic dragons! :-)
#
# We will try to explain, as best as we can, these complex regular expressions.
#
# After grep of markdown files (files in sorted dictionary order) for (%%TOKEN%%) lines, we sed:
#
# # remove any "[some string]" that is not immediately followed by "("
#
# -e 's/\[[^]]*\]([^(])/\1/' \
#
# # remove any trialing "[followed by text without a closing bracket"
#
# -e 's/\[[^]]*$//' \
#
# Then processing the second file (after the filename field) we sed:
#
# # remove any leading "..non-[-stuff..["
#
# -e 's/^[^[]()+\[/[/' \
#
# # replace "beginning text stuff](" with "[text stuff]("
# # because the previous line might have ended with "[beginning"
#
# -e 's/^([^][]*\]\()/[\1/g' \
#
# # remove any "[..non-]-stuff..][..more-non-]-stuff..]"
#
# -e 's/(\[[^][]*\])+([^(])/\2/g' \
#
# # remove any non-link before the first "[some string](path)"
#
# -e 's/^[^][]+(\[[^]]*\]\([^(]*\))/\1/' \
#
# # remove any final "[..non-]-stuff..$"
#
# -e 's/\[[^]]*$//' \
#
# # remove any final "(..non-)-stuff..)..non-[-stuff.."
#
# -e 's/(\([^)]*\))[^[]*$/\1/' \
#
# # remove any trailing non-[-text after the final "[some string](%%TOKEN%%path)"
#
# -e 's/(\[[^]]*\]\([^(]*\))[^[]+$/\1/' \
#
# # replace ")..non-open-bracket-stuff.[" with ") ["
#
# -e 's/\)[^[]*\[/) [/g' \
#
# # replace "[some string](apath) [other string](bpath)" with two lines:
# #
# # "[some string](apath)"
# # "[other string](bpath)"
#
# -e 's/(\[[^]]*\]\([^(]*\))/\1\n/g' \
#
# # remove blank and empty lines
#
# -e '/^\s*$/d' \
#
# Then pipe the lines into another sed:
#
# # replace multiple space with a single space
#
# -e 's/ +/ /g' \
#
# # remove blank and empty lines
#
# -e '/^\s*$/d' \
#
# # prepend the markdown path (without the leading "./") followed by space to each line
#
# -e "s;^;$MD_PATH ;" \
#
# # replace multiple space with a single space
#
# -e 's/ +/ /g'
#
# Output are lines of the form:
#
# markdown_path.md [pseudo title](%%TOKEN%%path)
#
# We do not process markdown.md because it contains examples
# of poor markdown use.
#
find . -name '*.md' ! -name markdown.md ! -path './tmp/*' -print |
LANG=C sort -d |
xargs grep '\](%%[A-Za-z][0-9A-Za-z_]*%%[^)]*)' /dev/null |
sed -E \
-e 's;^\.\/;;' \
-e 's/^([^:]+):\s*/\1 /' \
|
while read -r MD_PATH MD_LINE; do
echo "$MD_LINE" |
sed -E \
-e 's/^[^[]()+\[/[/' \
-e 's/^([^][]*\]\()/[\1/g' \
-e 's/(\[[^][]*\])+([^(])/\2/g' \
-e 's/^[^][]+(\[[^]]*\]\([^(]*\))/\1/' \
-e 's/\[[^]]*$//' \
-e 's/(\([^)]*\))[^[]*$/\1/' \
-e 's/(\[[^]]*\]\([^(]*\))[^[]+$/\1/' \
-e 's/\)[^[]*\[/) [/g' \
-e 's/(\[[^]]*\]\([^(]*\))/\1\n/g' \
-e '/^\s*$/d' \
|
sed -E \
-e 's/ +/ /g' \
-e '/^\s*$/d' \
-e "s;^;${MD_PATH} ;" \
-e 's/ +/ /g'
done
# All Done!!! All Done!!! -- Jessica Noll, Age 2
#
exit 0
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
-218
View File
@@ -1,218 +0,0 @@
#!/usr/bin/env bash
#
# run_all.sh - run a command for all entries
#
# XXX - This is a temporary utility that will be replaced when
# the .entry.json files are built
#
# Copyright (c) 2023 by Landon Curt Noll. All Rights Reserved.
#
# Permission to use, copy, modify, and distribute this software and
# its documentation for any purpose and without fee is hereby granted,
# provided that the above copyright, this permission notice and text
# this comment, and the disclaimer below appear in all of the following:
#
# supporting documentation
# source copies
# source works derived from this source
# binaries derived from this source or from derived source
#
# LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
# EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# chongo (Landon Curt Noll, http://www.isthe.com/chongo/index.html) /\oo/\
#
# Share and enjoy! :-)
# setup
#
export VERSION="1.0.1 2023-11-06"
NAME=$(basename "$0"); export NAME
EXIT_CODE=0
#
export V_FLAG=0
export CAP_D_FLAG=0
export DOMAIN="ioccc-src.github.io"
export DOCPATH="/temp-test-ioccc"
export GITHUB_REPO="https://github.com/ioccc-src/temp-test-ioccc/blob/master"
export TOPDIR=".."
export ENTRY_DIR_TXT="entry_dir.txt"
# usage
#
export USAGE="usage: $0 [-h] [-v level] [-D level]
[-d www.domain.org] [-p /path/to/docroot] [-g github_url ] [-t topdir] [-w entry_dir.txt]
tool
-h print help message and exit
-v level set verbosity level (def level: $V_FLAG)
-D level set verbosity level (via -v level) in tool: (def level: $CAP_D_FLAG)
-d www.domain.org change domain (def: $DOMAIN)
-p /path/to/docroot use path under domain to document root (def: $DOCPATH)
-g github_url path to the GitHub repo (def: $GITHUB_REPO)
-t topdir path to top of the local GitHub repo tree (def: $TOPDIR)
-w entry_dir.txt
tool the tool to run over all entries
Exit codes:
0 all OK
2 -h and help string printed or -V and version string printed
3 command line error
4 cannot find writable entry directory
5 tool is not an executable file
6 missing entry directory as found in entry_dir.txt
7 tool exited non-zero
>= 10 internal error
$NAME version: $VERSION"
# parse command line
#
while getopts :hv:D:d:p:g:t:w: flag; do
case "$flag" in
h) echo "$USAGE"
exit 2
;;
v) V_FLAG="$OPTARG"
;;
D) CAP_D_FLAG="$OPTARG"
;;
d) DOMAIN="$OPTARG"
;;
p) DOCPATH="$OPTARG"
;;
g) GITHUB_REPO="$OPTARG"
;;
t) TOPDIR="$OPTARG"
;;
w) ENTRY_DIR_TXT="$OPTARG"
;;
\?) echo "$0: ERROR: invalid option: -$OPTARG" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
:) echo "$0: ERROR: option -$OPTARG requires an argument" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
*) echo "$0: ERROR: unexpected value from getopts: $flag" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
esac
done
#
# remove the options
#
shift $(( OPTIND - 1 ));
#
# verify arg count and parse args
#
export TOOL
case "$#" in
1) TOOL="$1"
;;
*) echo "$0: ERROR: expected 1 arg, found: $#" 1>&2
echo "$USAGE" 1>&2
exit 3
;;
esac
# print running info if verbose
#
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: V_FLAG=$V_FLAG" 1>&2
echo "$0: debug[3]: CAP_D_FLAG=$CAP_D_FLAG" 1>&2
echo "$0: debug[3]: DOMAIN=$DOMAIN" 1>&2
echo "$0: debug[3]: DOCPATH=$DOCPATH" 1>&2
echo "$0: debug[3]: GITHUB_REPO=$GITHUB_REPO" 1>&2
echo "$0: debug[3]: TOPDIR=$TOPDIR" 1>&2
echo "$0: debug[3]: TOOL=$TOOL" 1>&2
echo "$0: debug[3]: ENTRY_DIR_TXT=$ENTRY_DIR_TXT" 1>&2
fi
# make it easier to process CSV files
#
IFS="$IFS,"
# verify entry_dir.txt is readable
#
if [[ ! -e $ENTRY_DIR_TXT ]]; then
echo "$0: ERROR: ENTRY_DIR_TXT does not exist: $ENTRY_DIR_TXT" 1>&2
exit 4
fi
if [[ ! -f $ENTRY_DIR_TXT ]]; then
echo "$0: ERROR: ENTRY_DIR_TXT is not a regular file: $ENTRY_DIR_TXT" 1>&2
exit 4
fi
if [[ ! -r $ENTRY_DIR_TXT ]]; then
echo "$0: ERROR: ENTRY_DIR_TXT is not a readable file: $ENTRY_DIR_TXT" 1>&2
exit 4
fi
# verify tool is executable
#
if [[ ! -e $TOOL ]]; then
echo "$0: ERROR: TOOL does not exist: $TOOL" 1>&2
exit 5
fi
if [[ ! -f $TOOL ]]; then
echo "$0: ERROR: TOOL is not a regular file: $TOOL" 1>&2
exit 5
fi
if [[ ! -x $TOOL ]]; then
echo "$0: ERROR: TOOL is not an executable file: $TOOL" 1>&2
exit 5
fi
# verify that the entry directories exist
#
for d in $(< "$ENTRY_DIR_TXT"); do
dir="$TOPDIR/$d"
if [[ ! -e $dir ]]; then
echo "$0: ERROR: entry directory does not exist: $dir" 1>&2
exit 6
fi
if [[ ! -d $dir ]]; then
echo "$0: ERROR: not a directory: $dir" 1>&2
exit 6
fi
if [[ ! -x $dir ]]; then
echo "$0: ERROR: not a writable directory: $dir" 1>&2
exit 6
fi
done
# process tool for each entry
#
for dir in $(< "$ENTRY_DIR_TXT"); do
if [[ $V_FLAG -ge 1 ]]; then
echo "$0: debug[1]: $TOOL -d $DOMAIN -p $DOCPATH -g $GITHUB_REPO -t $TOPDIR -v $CAP_D_FLAG -- $dir" 1>&2
fi
$TOOL -d "$DOMAIN" -p "$DOCPATH" -g "$GITHUB_REPO" -t "$TOPDIR" -v "$CAP_D_FLAG" -- "$dir"
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: Warning: $TOOL -d $DOMAIN -p $DOCPATH -g $GITHUB_REPO -t $TOPDIR -v $CAP_D_FLAG -- $dir exit code: $status" 1>&2
EXIT_CODE="7" # exit 7
elif [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: success" 1>&2
fi
done
# All Done!!! All Done!!! -- Jessica Noll, Age 2
#
if [[ $V_FLAG -ge 1 ]]; then
echo "$0: debug[0]: about to exit $EXIT_CODE" 1>&2
fi
exit "$EXIT_CODE"
-131
View File
@@ -1,131 +0,0 @@
#!/usr/bin/env make
#
# src - all source for bin tools
#
# Copyright (c) 2023 by Landon Curt Noll. All Rights Reserved.
#
# Permission to use, copy, modify, and distribute this software and
# its documentation for any purpose and without fee is hereby granted,
# provided that the above copyright, this permission notice and text
# this comment, and the disclaimer below appear in all of the following:
#
# supporting documentation
# source copies
# source works derived from this source
# binaries derived from this source or from derived source
#
# LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
# EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# chongo (Landon Curt Noll, http://www.isthe.com/chongo/index.html) /\oo/\
#
# Share and enjoy! :-)
#############
# utilities #
#############
CC= cc
CHMOD= chmod
CP= cp
INSTALL= install
RM= rm
SHELL= bash
#CFLAGS= -O3 -g3 --pedantic -Wall -Werror
CFLAGS= -O3 -g3 --pedantic -Wall
######################
# target information #
######################
TARGETS= ioccc_status
######################################
# all - default rule - must be first #
######################################
all: ${TARGETS}
@for dir in ${TARGETS}; do \
if [[ ! -d $$dir ]]; then \
echo "$0: FATAL: not a sub-directory: $$dir" 1>&2; \
exit 1; \
fi; \
if [[ ! -f $$dir/Makefile ]]; then \
echo "$0: FATAL: not a file: $$dir/Makefile" 1>&2; \
exit 2; \
fi; \
echo "make -C \"$$dir\" $@"; \
make -C "$$dir" $@; \
done
#################################################
# .PHONY list of rules that do not create files #
#################################################
.PHONY: all configure clean clobber install
###################################
# standard Makefile utility rules #
###################################
configure:
@for dir in ${TARGETS}; do \
if [[ ! -d $$dir ]]; then \
echo "$0: FATAL: not a sub-directory: $$dir" 1>&2; \
exit 1; \
fi; \
if [[ ! -f $$dir/Makefile ]]; then \
echo "$0: FATAL: not a file: $$dir/Makefile" 1>&2; \
exit 2; \
fi; \
echo "make -C \"$$dir\" $@"; \
make -C "$$dir" $@; \
done
clean:
@for dir in ${TARGETS}; do \
if [[ ! -d $$dir ]]; then \
echo "$0: FATAL: not a sub-directory: $$dir" 1>&2; \
exit 1; \
fi; \
if [[ ! -f $$dir/Makefile ]]; then \
echo "$0: FATAL: not a file: $$dir/Makefile" 1>&2; \
exit 2; \
fi; \
echo "make -C \"$$dir\" $@"; \
make -C "$$dir" $@; \
done
clobber: clean
@for dir in ${TARGETS}; do \
if [[ ! -d $$dir ]]; then \
echo "$0: FATAL: not a sub-directory: $$dir" 1>&2; \
exit 1; \
fi; \
if [[ ! -f $$dir/Makefile ]]; then \
echo "$0: FATAL: not a file: $$dir/Makefile" 1>&2; \
exit 2; \
fi; \
echo "make -C \"$$dir\" $@"; \
make -C "$$dir" $@; \
done
install: all
@for dir in ${TARGETS}; do \
if [[ ! -d $$dir ]]; then \
echo "$0: FATAL: not a sub-directory: $$dir" 1>&2; \
exit 1; \
fi; \
if [[ ! -f $$dir/Makefile ]]; then \
echo "$0: FATAL: not a file: $$dir/Makefile" 1>&2; \
exit 2; \
fi; \
echo "make -C \"$$dir\" $@"; \
make -C "$$dir" $@; \
done
-396
View File
@@ -1,396 +0,0 @@
#!/usr/bin/env bash
#
# update-manifest.sh - temporary interactive script to update the IOCCC manifest
# step by step post manifest.csv export.
#
# Written by Cody Boone Ferguson in 2024 to greatly simplify fixing and
# improving the manifest of winning IOCCC entries. This script WILL GO AWAY when
# both the manifest and html issues are completed.
#
export UPDATE_MANIFEST_VERSION="0.0.1-1 2024-28-01" # format: major.minor.patch-release YYYY-DD-MM
NAME="$(basename "$0")"; export NAME
export V_FLAG=0
export A_FLAG=
# default -v 3 for other tools
export CAP_D_FLAG=3
export TOPDIR=".."
GIT="$(type -P git)"
export GIT
# usage
#
export USAGE="usage: $0 [-h] [-v level] [-D] [-g git] [-a]
-h print help message and exit
-v level set verbosity level (def level: $V_FLAG)
-D level set verbosity level (via -v level) in tool: (def level: $CAP_D_FLAG)
-t topdir path to top of the local GitHub repo tree (def: $TOPDIR)
-a automatically run git add an git commit commands (when prompted)
Exit codes:
0 all OK
2 -h and help string printed or -V and version string printed
3 command line error
4 user told us there is a problem
5 a tool exited non-zero
$NAME version: $UPDATE_MANIFEST_VERSION"
# parse command line
#
while getopts :hv:D:t:g:a flag; do
case "$flag" in
h) echo "$USAGE"
exit 2
;;
v) V_FLAG="$OPTARG"
;;
D) CAP_D_FLAG="$OPTARG"
;;
t) TOPDIR="$OPTARG"
;;
g) GIT="$OPTARG"
;;
a) A_FLAG="-a"
;;
\?) echo "$0: ERROR: invalid option: -$OPTARG" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
:) echo "$0: ERROR: option -$OPTARG requires an argument" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
*) echo "$0: ERROR: unexpected value from getopts: $flag" 1>&2
echo 1>&2
echo "$USAGE" 1>&2
exit 3
;;
esac
done
# print running info if verbose
#
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: V_FLAG=$V_FLAG" 1>&2
echo "$0: debug[3]: TOPDIR=$TOPDIR" 1>&2
fi
# first determine if git is executable
if [[ -z "$GIT" || ! -f "$GIT" || ! -x "$GIT" ]]; then
echo "$0: ERROR: git not a regular executable file: $GIT" 1>&2
exit 3
fi
# check that topdir is a directory and a git repo
#
# first verify $TOPDIR is not empty and that it's a directory
if [[ -z "$TOPDIR" ]]; then
echo "$0: ERROR: topdir is empty: $TOPDIR" 1>&2
exit 3
fi
if [[ ! -d "$TOPDIR" ]]; then
echo "$0: ERROR: topdir not a directory: $TOPDIR" 1>&2
exit 3
fi
# now cd to directory
#
if ! cd "$TOPDIR"; then
echo "$0: could not cd to topdir: $TOPDIR" 1>&2
exit 3
fi
# I have found problems using git rev-parse to verify that we're in a git repo
# and we need the user to see git status anyway so use git status instead.
if ! "$GIT" status 1>&2; then
echo "$USAGE" 1>&2
echo 1>&2
echo "ERROR: ${PWD} is not a git repository" 1>&2
exit 3
fi
echo 1>&2
echo "NOTE: manifest.numbers and manifest.csv may be modified here BUT NOTHING ELSE" 1>&2
echo "MAY BE UNLESS IT IS RELATED TO THE MANIFEST UPDATE ITSELF (e.g. rerunning to fix" 1>&2
echo "a problem or if the need for the manifest to be updated is because of the other" 1>&2
echo "changes)." 1>&2
read -r -p "Do you have a clean state from git status (Y/N)? "
if [[ "$REPLY" != "Y" && "$REPLY" != "y" ]]; then
echo 1>&2
echo "exiting 4 due to user telling us that manifest.numbers and/or" 1>&2
echo "manifest.csv NOT UPDATED." 1>&2
exit 4
fi
# ask user if they're on the correct branch
#
echo "Showing branches: " 1>&2
"$GIT" branch 1>&2
read -r -p "Are you on the right branch (Y/N)? "
if [[ "$REPLY" != "Y" && "$REPLY" != "y" ]]; then
echo "exiting 4 due to user telling us they're on the WRONG BRANCH." 1>&2
exit 4
fi
# now cd to the tmp directory
#
if ! cd tmp; then
echo "$0: could not cd to tmp subdirectory of topdir: $TOPDIR"
exit 3
fi
# now check that manifest.csv is a regular readable file
#
if [[ ! -f manifest.csv || ! -r manifest.csv ]]; then
echo "manifest.csv does not exist or not a regular readable file" 1>&2
exit 3
fi
# now ask user if they sorted the manifest.numbers AND exported it to the CSV
# file
echo "We will now try and update the manifest files. Are you sure that you updated" 1>&2
read -r -p "AND sorted the manifest.numbers spreadsheet AND exported to manifest.csv (Y/N)? "
if [[ "$REPLY" != "y" && "$REPLY" != "Y" ]]; then
echo "exiting 4 due to user not updating manifest files before running this tool" 1>&2
exit 4
fi
# run ./fix_csv.sh first
#
echo "$(basename "$0"): now will run: ./fix_csv.sh -v $CAP_D_FLAG" 1>&2
if ! ./fix_csv.sh -v "$CAP_D_FLAG" ; then
echo "fix_csv.sh failed, try updating manifest.csv and try again." 1>&2
exit 5
fi
# run ./gen_path_list.found.sh
#
echo "$(basename "$0"): now will run: ./gen_path_list.found.sh -v $CAP_D_FLAG" 1>&2
if ! ./gen_path_list.found.sh -v "$CAP_D_FLAG" ; then
echo "gen_path_list.found.sh failed, try updating manifest.csv and try again." 1>&2
exit 5
fi
# now run git diff path_list.found.txt
#
read -r -n 1 -p "Press any key to run: $GIT diff path_list.found.txt: "
echo 1>&2
"$GIT" diff path_list.found.txt
read -r -p "Does everything look okay (Y/N)? "
if [[ "$REPLY" != "y" && "$REPLY" != "Y" ]]; then
echo "exiting 4 due to user telling us that git diff path_list.found.txt DOES" 1>&2
echo "NOT LOOK OKAY." 1>&2
exit 4
fi
# run ./check_path_list.sh
#
echo "$(basename "$0"): now will run: ./check_path_list.sh -v $CAP_D_FLAG" 1>&2
if ! ./check_path_list.sh -v "$CAP_D_FLAG"; then
echo "check_path_list.sh failed, try updating manifest.csv and try again." 1>&2
exit 5
fi
echo "$0: now will run: $GIT archive HEAD manifest.numbers | tar -tvf - manifest.numbers" 1>&2
"$GIT" archive HEAD manifest.numbers | tar -tvf - manifest.numbers
read -r -p "Does everything look okay (Y/N)? "
if [[ "$REPLY" != "Y" && "$REPLY" != "y" ]]; then
echo "$0: exiting 4 due to user telling us there's a problem." 1>&2
exit 4
fi
if [[ -n "$A_FLAG" ]]; then
echo "Do you wish to automatically run the commands:" 1>&2
echo " $GIT add -u" 1>&2
echo " $GIT status" 1>&2
echo " $GIT commit -m'update manifest as per recent file changes'" 1>&2
read -r -p "Enter your choice (Y/N): "
if [[ "$REPLY" != "Y" && "$REPLY" != "y" ]]; then
echo "Now you should run the following commands in another terminal," 1>&2
echo "making sure you're on the appropriate branch:"
echo 1>&2
echo " git add -u" 1>&2
echo " git status" 1>&2
echo " git commit -m'update manifest as per recent file changes'" 1>&2
echo 1>&2
read -r -n 1 -p "Press any key when this is done: "
echo 1>&2
else
"$GIT" add -u
"$GIT" status
"$GIT" commit -m'update manifest as per recent file changes'
fi
else
# user did not use -a, don't prompt: make them run commands in another
# terminal first.
echo "Now you should run the following commands in another terminal," 1>&2
echo "making sure you're on the appropriate branch:"
echo 1>&2
echo " git add -u" 1>&2
echo " git status" 1>&2
echo " git commit -m'update manifest as per recent file changes'" 1>&2
echo 1>&2
read -r -n 1 -p "Press any key when this is done: "
echo 1>&2
fi
echo 1>&2
echo "$(basename "$0"): now will run ./run_all.sh -v $CAP_D_FLAG ./gen_entry_json.sh" 1>&2
echo "NOTE: this step will take a while." 1>&2
if ! ./run_all.sh -v "$CAP_D_FLAG" ./gen_entry_json.sh; then
echo "problem with ./run_all.sh, fix manifest and try again." 1>&2
exit 5
fi
read -r -n 1 -p "Press any key to run: $GIT diff: "
echo 1>&2
"$GIT" diff
read -r -p "Does everything look okay (Y/N)? "
if [[ "$REPLY" != "Y" && "$REPLY" != "y" ]]; then
echo "$0: exiting 4 due to user telling us there's a problem." 1>&2
exit 4
fi
if [[ -n "$A_FLAG" ]]; then
echo "Do you wish to automatically run the commands:" 1>&2
echo " $GIT add -u" 1>&2
echo " $GIT status" 1>&2
echo " $GIT commit -m'update .entry.json files per recent manifest changes'" 1>&2
read -r -p "Enter your choice (Y/N): "
if [[ "$REPLY" != "Y" && "$REPLY" != "y" ]]; then
echo "Now you should run the following commands in another terminal," 1>&2
echo "making sure you're on the appropriate branch:"
echo 1>&2
echo " $GIT add -u" 1>&2
echo " $GIT status" 1>&2
echo " $GIT commit -m'update .entry.json files per recent manifest changes'" 1>&2
echo 1>&2
read -r -n 1 -p "Press any key when this is done: "
echo 1>&2
else
"$GIT" add -u
"$GIT" status
"$GIT" commit -m'update .entry.json files per recent manifest changes'
fi
else
echo "Now you should run the following commands in another terminal," 1>&2
echo "making sure you're on the appropriate branch:"
echo 1>&2
echo " $GIT add -u" 1>&2
echo " $GIT status" 1>&2
echo " $GIT commit -m'update .entry.json files per recent manifest changes'" 1>&2
echo 1>&2
read -r -n 1 -p "Press any key when this is done: "
echo 1>&2
fi
# now cd to top level directory
cd ..
read -r -n 1 -p "Press any key to continue: "
echo 1>&2
echo "$(basename "$0"): will now update index.html files." 1>&2
echo "NOTE: quick-readme2index.sh will not create all index.html" 1>&2
echo "files: it checks the timestamp of README.md and the respective" 1>&2
echo "index.html files. Thus if you have not modified all the necessary" 1>&2
echo "README.md files then you should not use the quick option!" 1>&2
read -r -p "Do you wish to use quick-readme2index.sh (Y/N)? "
if [[ "$REPLY" != "Y" && "$REPLY" != "y" ]]; then
echo "$(basename "$0"): now will run: bin/all-run.sh -v $CAP_D_FLAG bin/readme2index.sh -v $CAP_D_FLAG" 1>&2
if ! bin/all-run.sh -v "$CAP_D_FLAG" bin/readme2index.sh -v "$CAP_D_FLAG"; then
echo "problem running bin/all-run bin/readme2index.sh, fix and try again." 1>&2
exit 5
fi
else
echo "$(basename "$0"): now will run: bin/all-run.sh -v $CAP_D_FLAG bin/quick-readme2index.sh -v $CAP_D_FLAG"
echo "NOTE: this will take a while." 1>&2
if ! bin/all-run.sh -v "$CAP_D_FLAG" bin/quick-readme2index.sh -v "$CAP_D_FLAG"; then
echo "problem running bin/all-run bin bin/quick-readme2index.sh, fix and try again." 1>&2
exit 5
fi
fi
echo "$(basename "$0"): now will run: bin/gen-other-html.sh -v $CAP_D_FLAG"
echo "NOTE: this can take a while." 1>&2
if ! bin/gen-other-html.sh -v "$CAP_D_FLAG"; then
echo "problem running bin/gen-other-html.sh, fix and try again." 1>&2
exit 5
fi
read -r -n 1 -p "Press any key to run: $GIT diff: "
echo 1>&2
"$GIT" diff
read -r -p "Does everything look okay (Y/N)? "
if [[ "$REPLY" != "Y" && "$REPLY" != "y" ]]; then
echo "$0: exiting 4 due to user telling us git diff DOES NOT LOOK OKAY." 1>&2
exit 4
fi
echo "$(basename "$0"): now will run: make find_missing_links"
echo "NOTE: this can take a little while." 1>&2
if ! make find_missing_links; then
echo "problem running make find_missing_links, fix and try again." 1>&2
echo "NOTE: since everything else was updated, you can just fix the links" 1>&2
echo "and then run the appropriate make rules to fix just the affected html" 1>&2
echo "files rather than run this script all over again. If you're in doubt," 1>&2
echo "you can run:" 1>&2
echo
echo " make www" 1>&2
echo
echo "to be absolutely sure that every html file is updated but this is likely" 1>&2
echo "not needed unless a lot of files had broken links." 1>&2
exit 5
fi
if [[ -n "$A_FLAG" ]]; then
echo "Do you wish to automatically run the commands:" 1>&2
echo " git add -u" 1>&2
echo " git status" 1>&2
echo " git commit -m'update index.html and .entry.json per recent manifest changes'" 1>&2
read -r -p "Enter your choice (Y/N): "
if [[ "$REPLY" != "Y" && "$REPLY" != "y" ]]; then
echo "Now you should run the following commands in another terminal," 1>&2
echo "making sure you're on the appropriate branch:"
echo 1>&2
echo " git add -u" 1>&2
echo " git status" 1>&2
echo " git commit -m'update index.html and .entry.json per recent manifest changes'" 1>&2
echo 1>&2
read -r -n 1 -p "Press any key when this is done: "
echo 1>&2
else
"$GIT" add -u
"$GIT" status
"$GIT" commit -m'update index.html and .entry.json per recent manifest changes'
fi
else
echo "Now you should run the following commands in another terminal," 1>&2
echo "making sure you're on the appropriate branch:"
echo 1>&2
echo " git add -u" 1>&2
echo " git status" 1>&2
echo " git commit -m'update index.html and .entry.json per recent manifest changes'" 1>&2
echo 1>&2
read -r -n 1 -p "Press any key when this is done: "
echo 1>&2
fi
echo 1>&2
echo 1>&2
echo "All done. Make sure to push the commits and open a GitHub pull request." 1>&2
exit 0
-322
View File
@@ -1,322 +0,0 @@
# year_handle,award name
1984_anonymous,Dishonorable Mention
1984_decot,Second Place
1984_laman,Third Place
1984_mullender,Grand Prize
1985_applin,Best one liner
1985_august,Most obscure program
1985_lycklama,Strangest appearing program
1985_shapiro,Grand Prize - Most well rounded in confusion
1985_sicherman,Worst abuse of the C preprocessor
1986_applin,Most adaptable program
1986_august,Best complex task done in a complex way
1986_bright,Most useful obfuscation
1986_hague,Worst abuse of the C preprocessor
1986_holloway,Best simple task performed in a complex way
1986_marshall,Best layout
1986_pawka,Most illegible code
1986_stein,Best one liner
1986_wall,Grand Prize - Most well rounded in confusion
1987_biggar,Best abuse of the rules
1987_heckbert,Best obfuscator of programs
1987_hines,Worst style
1987_korn,Best one liner
1987_lievaart,Grand Prize
1987_wall,Most useful obfuscation
1987_westley,Best layout
1988_applin,Best of Show
1988_dale,Best abuse of system calls
1988_isaak,Best visuals
1988_litmaath,Best small program
1988_phillipps,Least likely to compile successfully
1988_reddy,Most useful obfuscated C program
1988_robison,Best abuse of C constructs
1988_spinellis,Best abuse of the rules
1988_westley,Best layout
1989_fubar,Best self-modifying program
1989_jar.1,Strangest abuse of the rules
1989_jar.2,Best of Show
1989_ovdluhe,Most humorous output
1989_paul,Most complex algorithm
1989_robison,Best minimal use of C
1989_roemer,Best layout
1989_tromp,Best game
1989_vanb,Best one liner
1989_westley,Most algorithms in one program
1990_baruch,Best small program
1990_cmills,Best game
1990_dds,Best language tool
1990_dg,Best abuse of the C preprocessor
1990_jaw,Best entropy-reducer
1990_pjr,Most unusual data structure
1990_scjones,ANSI Committee's worst abuse of C
1990_stig,Strangest abuse of the rules
1990_tbr,Best utility
1990_theorem,Best of Show
1990_westley,Best layout
1991_ant,Best utility
1991_brnstnd,Best of Show
1991_buzzard,Best output
1991_cdupont,Most useful label
1991_davidguy,Best X11 graphics
1991_dds,Most well rounded
1991_fine,Best one liner
1991_rince,Best game
1991_westley,Grand Prize
1992_adrian,Most educational
1992_albert,Most useful program
1992_ant,Best utility
1992_buzzard.1,Most obfuscated algorithm
1992_buzzard.2,Best language tool
1992_gson,Most humorous output
1992_imc,Best output
1992_kivinen,Best X program
1992_lush,Worst abuse of the C preprocessor
1992_marangon,Best game
1992_nathan,Worst abuse of the rules
1992_vern,Best of Show
1992_westley,Best small program
1993_ant,Best utility
1993_cmills,Bill Gates Award
1993_dgibson,Best abuse of the C preprocessor
1993_ejb,Best obfuscated algorithm
1993_jonth,Most obfuscated X program
1993_leo,Best game
1993_lmfjyh,Most versatile source
1993_plummer,Best one liner
1993_rince,Most well rounded
1993_schnitzi,Obfuscated Intelligence Award
1993_vanb,Most irregular expression
1994_dodsond1,Best game
1994_dodsond2,Most obfuscated packaging
1994_horton,Best utility
1994_imc,Most obfuscated algorithm
1994_ldb,Best one liner
1994_schnitzi,Best layout
1994_shapiro,Most well rounded obfuscation
1994_smr,Worst abuse of the rules
1994_tvr,Best X11 program
1994_weisberg,Best short program
1994_westley,Worst abuse of the C preprocessor
1995_cdua,Best output
1995_dodsond1,Most humorous
1995_dodsond2,Best game
1995_esde,Interesting algorithm
1995_garry,Best utility
1995_heathbar,Best layout
1995_leo,Best use of obfuscation
1995_makarios,Best short program
1995_savastio,Most obfuscated syntax
1995_schnitzi,Best one liner
1995_spinellis,Abusing the rules
1995_vanschnitz,Worst abuse of the C preprocessor and most likely to amaze
1996_august,Best of Show
1996_dalbec,Best numerical obfuscation
1996_eldby,Best output
1996_gandalf,Best layout
1996_huffman,Best obfuscated character set utility
1996_jonth,Best X11 entry
1996_rcm,Best RFC obfuscation
1996_schweikh1,Worst abuse of the C preprocessor
1996_schweikh2,Best algorithm
1996_schweikh3,Best utility
1996_westley,Best one liner
1998_banks,Best of Show
1998_bas1,Best encapsulation
1998_bas2,Best small program
1998_chaos,Best object orientation
1998_df,Best data hiding
1998_dlowe,Best utility
1998_dloweneil,Most fun
1998_dorssel,Obsolescent feature
1998_fanf,Most obfuscated translator
1998_schnitzi,Best flow control
1998_schweikh1,CPP abuse
1998_schweikh2,Most erratic behavior
1998_schweikh3,Most space efficient
1998_tomtorfs,Best self-documenting
2000_anderson,Best use of flags
2000_bellard,Most specific output
2000_bmeyer,Best utility
2000_briddlebane,Best abuse of user
2000_dhyang,Best layout
2000_dlowe,Worst abuse of the rules
2000_jarijyrki,Best of Show
2000_natori,Best small program
2000_primenum,Best abuse of CPP
2000_rince,Astronomically obfuscated
2000_robison,Best game
2000_schneiderwent,Most timely output
2000_thadgavin,Most portable output
2000_tomx,Most complete program
2001_anonymous,Dishonorable mention
2001_bellard,Best abuse of the rules
2001_cheong,Best short program
2001_coupard,Most obfuscated sound
2001_ctk,Worst driver
2001_dgbeards,Best AI
2001_herrmann1,Best abuse of the C preprocessor
2001_herrmann2,Most eye-crossing
2001_jason,Best of Show
2001_kev,Best curses game
2001_ollinger,Best of Show
2001_rosten,Best abuse of the user
2001_schweikh,Best one liner
2001_westley,Best position-independent code
2001_williams,Best graphic game
2004_anonymous,Best use of 'Precious' Lines
2004_arachnid,Best use of vision
2004_burley,Best calculated risk
2004_gavare,Best use of light and spheres
2004_gavin,Best of Show
2004_hibachi,Best abuse of the guidelines
2004_hoyle,Most functional output
2004_jdalbec,Best abuse of the periodic table
2004_kopczynski,Best one liner
2004_newbern,Best font engine
2004_omoikane,Best utility
2004_schnitzi,Best non-use of curses
2004_sds,Best abuse of indentation
2004_vik1,Best X11 game
2004_vik2,Best abuse of CPP
2005_aidan,Most ingenious puzzle solution
2005_anon,Best 3D puzzle
2005_boutines,Most superfluous output
2005_chia,Most ambiguous language
2005_giljade,Best 2D puzzle
2005_jetro,Most sonorous output
2005_klausler,Abuse of the rules
2005_mikeash,Best use of parenthesis
2005_mynx,Best use of the WWW
2005_persano,Best of Show
2005_sykes,Best emulator
2005_timwi,Most discourteous interpreter
2005_toledo,Best game
2005_vik,Most circuitous walk
2005_vince,Most beauteous visuals
2006_birken,EDAMAME Award
2006_borsanyi,Most useful
2006_grothe,Most obfuscated audio
2006_hamre,Most irrational
2006_meyer,Best game
2006_monge,Best compiled graphics
2006_night,Best abuse of computation
2006_sloane,Homer's favorite
2006_stewart,Best computed graphics
2006_sykes1,Best assembler
2006_sykes2,Best one liner
2006_toledo1,Best small program
2006_toledo2,Best of Show
2006_toledo3,Most portable chess set
2011_akari,Best of Show - Most Shrinkable
2011_blakely,Most devolving
2011_borsanyi,Best data utility
2011_dlowe,Most self deprecating
2011_eastman,Best ball
2011_fredriksson,Most useful
2011_goren,Most artistic
2011_hamaji,Best solved puzzle
2011_hou,Best self documenting program
2011_konno,Best one liner
2011_richards,Most surprisingly portable
2011_toledo,Best non-chess game
2011_vik,Most sound
2011_zucker,Most shiny
2012_blakely,Most GIFted expressions
2012_deckmyn,Most notable and best tool
2012_dlowe,Best way to lose a life
2012_endoh1,Most complex ASCII fluid - Honorable mention
2012_endoh2,PiE in the sky award
2012_grothe,Most conspiratorial
2012_hamano,Silver Award - Most elementary use of C
2012_hou,Most useful obfuscation
2012_kang,Best short program
2012_konno,Best one liner
2012_omoikane,Most surreptitious
2012_tromp,Most functional
2012_vik,Bronze Award - Best use of cocoa
2012_zeitak,Gold Award - Balanced use of obfuscation
2013_birken,Best painting tool
2013_cable1,Most partisan one liner
2013_cable2,Best of Show
2013_cable3,Largest small system emulator
2013_dlowe,Best sparkling utility
2013_endoh1,Most lazy SKIer
2013_endoh2,Most recyclable
2013_endoh3,Most tweetable one liner
2013_endoh4,Most solid
2013_hou,Best use of one infinite loop
2013_mills,Most timely rendered
2013_misaka,Most catty
2013_morgan1,Smallest large system simulator
2013_morgan2,Most playfully versatile
2013_robison,Most poetic use of strings
2014_birken,Best use of port 1701
2014_deak,Most underscored argument
2014_endoh1,Most square (YODA Award)
2014_endoh2,Best use of bioinformatics
2014_maffiodo1,Homage to a classic game
2014_maffiodo2,Most tweetable entry
2014_morgan,Most likely to succeed
2014_sinon,Best choice of optimization
2014_skeggs,Most dynamic
2014_vik,Best handling of beeps
2014_wiedijk,Most functional
2015_burton,Most useful
2015_dogon,Most crafty
2015_duble,Best handwriting
2015_endoh1,Most diffused reaction
2015_endoh2,Most overlooked obfuscation
2015_endoh3,Back to the Future Award
2015_endoh4,Best one liner
2015_hou,Most well rounded hash
2015_howe,Most different
2015_mills1,For the Birds! Award
2015_mills2,Most compact
2015_muth,Most complete use of CPP
2015_schweikhardt,Best documented
2015_yang,Most pointed reaction
2018_algmyr,Most cacophonic
2018_anderson,Most able to divine code gaps
2018_bellard,Most inflationary
2018_burton1,Best one liner
2018_burton2,Best abuse of the rules
2018_ciura,Most likely to be awarded
2018_endoh1,Best tool to reveal holes
2018_endoh2,Best use of python
2018_ferguson,Best use of weasel words
2018_giles,Most unstable
2018_hou,Most likely to top the charts
2018_mills,Best of Show
2018_poikola,Most stellar
2018_vokes,Most connected
2018_yang,Most shifty
2019_adamovsky,Most functional interpreter
2019_burton,Best one liner
2019_ciura,Most alphabetic
2019_diels-grabsch1,Best small program
2019_diels-grabsch2,Most self-aware
2019_dogon,Best use of space and time
2019_duble,Best collaborative graphics
2019_endoh,Most in need of debugging
2019_giles,Most in need of wide space
2019_karns,Most in need of whitespace
2019_lynn,Most functional compiler
2019_mills,Most in need to be tweeted
2019_poikola,Most calendrical
2019_yang,Most in need of transparency
2020_burton,Best one liner
2020_carlini,Best of Show - abuse of libc
2020_endoh1,Most explosive
2020_endoh2,Best perspective
2020_endoh3,Most head-turning
2020_ferguson1,Don't tread on me award
2020_ferguson2,Most enigmatic
2020_giles,Most phony
2020_kurdyukov1,Best utility
2020_kurdyukov2,Least detailed
2020_kurdyukov3,Bset slaml prragom
2020_kurdyukov4,Best abuse of lámatyávë
2020_otterness,Most percussive
2020_tsoj,Most misleading indentation
2020_yang,Best abuse of CPP
1 # year_handle award name
2 1984_anonymous Dishonorable Mention
3 1984_decot Second Place
4 1984_laman Third Place
5 1984_mullender Grand Prize
6 1985_applin Best one liner
7 1985_august Most obscure program
8 1985_lycklama Strangest appearing program
9 1985_shapiro Grand Prize - Most well rounded in confusion
10 1985_sicherman Worst abuse of the C preprocessor
11 1986_applin Most adaptable program
12 1986_august Best complex task done in a complex way
13 1986_bright Most useful obfuscation
14 1986_hague Worst abuse of the C preprocessor
15 1986_holloway Best simple task performed in a complex way
16 1986_marshall Best layout
17 1986_pawka Most illegible code
18 1986_stein Best one liner
19 1986_wall Grand Prize - Most well rounded in confusion
20 1987_biggar Best abuse of the rules
21 1987_heckbert Best obfuscator of programs
22 1987_hines Worst style
23 1987_korn Best one liner
24 1987_lievaart Grand Prize
25 1987_wall Most useful obfuscation
26 1987_westley Best layout
27 1988_applin Best of Show
28 1988_dale Best abuse of system calls
29 1988_isaak Best visuals
30 1988_litmaath Best small program
31 1988_phillipps Least likely to compile successfully
32 1988_reddy Most useful obfuscated C program
33 1988_robison Best abuse of C constructs
34 1988_spinellis Best abuse of the rules
35 1988_westley Best layout
36 1989_fubar Best self-modifying program
37 1989_jar.1 Strangest abuse of the rules
38 1989_jar.2 Best of Show
39 1989_ovdluhe Most humorous output
40 1989_paul Most complex algorithm
41 1989_robison Best minimal use of C
42 1989_roemer Best layout
43 1989_tromp Best game
44 1989_vanb Best one liner
45 1989_westley Most algorithms in one program
46 1990_baruch Best small program
47 1990_cmills Best game
48 1990_dds Best language tool
49 1990_dg Best abuse of the C preprocessor
50 1990_jaw Best entropy-reducer
51 1990_pjr Most unusual data structure
52 1990_scjones ANSI Committee's worst abuse of C
53 1990_stig Strangest abuse of the rules
54 1990_tbr Best utility
55 1990_theorem Best of Show
56 1990_westley Best layout
57 1991_ant Best utility
58 1991_brnstnd Best of Show
59 1991_buzzard Best output
60 1991_cdupont Most useful label
61 1991_davidguy Best X11 graphics
62 1991_dds Most well rounded
63 1991_fine Best one liner
64 1991_rince Best game
65 1991_westley Grand Prize
66 1992_adrian Most educational
67 1992_albert Most useful program
68 1992_ant Best utility
69 1992_buzzard.1 Most obfuscated algorithm
70 1992_buzzard.2 Best language tool
71 1992_gson Most humorous output
72 1992_imc Best output
73 1992_kivinen Best X program
74 1992_lush Worst abuse of the C preprocessor
75 1992_marangon Best game
76 1992_nathan Worst abuse of the rules
77 1992_vern Best of Show
78 1992_westley Best small program
79 1993_ant Best utility
80 1993_cmills Bill Gates Award
81 1993_dgibson Best abuse of the C preprocessor
82 1993_ejb Best obfuscated algorithm
83 1993_jonth Most obfuscated X program
84 1993_leo Best game
85 1993_lmfjyh Most versatile source
86 1993_plummer Best one liner
87 1993_rince Most well rounded
88 1993_schnitzi Obfuscated Intelligence Award
89 1993_vanb Most irregular expression
90 1994_dodsond1 Best game
91 1994_dodsond2 Most obfuscated packaging
92 1994_horton Best utility
93 1994_imc Most obfuscated algorithm
94 1994_ldb Best one liner
95 1994_schnitzi Best layout
96 1994_shapiro Most well rounded obfuscation
97 1994_smr Worst abuse of the rules
98 1994_tvr Best X11 program
99 1994_weisberg Best short program
100 1994_westley Worst abuse of the C preprocessor
101 1995_cdua Best output
102 1995_dodsond1 Most humorous
103 1995_dodsond2 Best game
104 1995_esde Interesting algorithm
105 1995_garry Best utility
106 1995_heathbar Best layout
107 1995_leo Best use of obfuscation
108 1995_makarios Best short program
109 1995_savastio Most obfuscated syntax
110 1995_schnitzi Best one liner
111 1995_spinellis Abusing the rules
112 1995_vanschnitz Worst abuse of the C preprocessor and most likely to amaze
113 1996_august Best of Show
114 1996_dalbec Best numerical obfuscation
115 1996_eldby Best output
116 1996_gandalf Best layout
117 1996_huffman Best obfuscated character set utility
118 1996_jonth Best X11 entry
119 1996_rcm Best RFC obfuscation
120 1996_schweikh1 Worst abuse of the C preprocessor
121 1996_schweikh2 Best algorithm
122 1996_schweikh3 Best utility
123 1996_westley Best one liner
124 1998_banks Best of Show
125 1998_bas1 Best encapsulation
126 1998_bas2 Best small program
127 1998_chaos Best object orientation
128 1998_df Best data hiding
129 1998_dlowe Best utility
130 1998_dloweneil Most fun
131 1998_dorssel Obsolescent feature
132 1998_fanf Most obfuscated translator
133 1998_schnitzi Best flow control
134 1998_schweikh1 CPP abuse
135 1998_schweikh2 Most erratic behavior
136 1998_schweikh3 Most space efficient
137 1998_tomtorfs Best self-documenting
138 2000_anderson Best use of flags
139 2000_bellard Most specific output
140 2000_bmeyer Best utility
141 2000_briddlebane Best abuse of user
142 2000_dhyang Best layout
143 2000_dlowe Worst abuse of the rules
144 2000_jarijyrki Best of Show
145 2000_natori Best small program
146 2000_primenum Best abuse of CPP
147 2000_rince Astronomically obfuscated
148 2000_robison Best game
149 2000_schneiderwent Most timely output
150 2000_thadgavin Most portable output
151 2000_tomx Most complete program
152 2001_anonymous Dishonorable mention
153 2001_bellard Best abuse of the rules
154 2001_cheong Best short program
155 2001_coupard Most obfuscated sound
156 2001_ctk Worst driver
157 2001_dgbeards Best AI
158 2001_herrmann1 Best abuse of the C preprocessor
159 2001_herrmann2 Most eye-crossing
160 2001_jason Best of Show
161 2001_kev Best curses game
162 2001_ollinger Best of Show
163 2001_rosten Best abuse of the user
164 2001_schweikh Best one liner
165 2001_westley Best position-independent code
166 2001_williams Best graphic game
167 2004_anonymous Best use of 'Precious' Lines
168 2004_arachnid Best use of vision
169 2004_burley Best calculated risk
170 2004_gavare Best use of light and spheres
171 2004_gavin Best of Show
172 2004_hibachi Best abuse of the guidelines
173 2004_hoyle Most functional output
174 2004_jdalbec Best abuse of the periodic table
175 2004_kopczynski Best one liner
176 2004_newbern Best font engine
177 2004_omoikane Best utility
178 2004_schnitzi Best non-use of curses
179 2004_sds Best abuse of indentation
180 2004_vik1 Best X11 game
181 2004_vik2 Best abuse of CPP
182 2005_aidan Most ingenious puzzle solution
183 2005_anon Best 3D puzzle
184 2005_boutines Most superfluous output
185 2005_chia Most ambiguous language
186 2005_giljade Best 2D puzzle
187 2005_jetro Most sonorous output
188 2005_klausler Abuse of the rules
189 2005_mikeash Best use of parenthesis
190 2005_mynx Best use of the WWW
191 2005_persano Best of Show
192 2005_sykes Best emulator
193 2005_timwi Most discourteous interpreter
194 2005_toledo Best game
195 2005_vik Most circuitous walk
196 2005_vince Most beauteous visuals
197 2006_birken EDAMAME Award
198 2006_borsanyi Most useful
199 2006_grothe Most obfuscated audio
200 2006_hamre Most irrational
201 2006_meyer Best game
202 2006_monge Best compiled graphics
203 2006_night Best abuse of computation
204 2006_sloane Homer's favorite
205 2006_stewart Best computed graphics
206 2006_sykes1 Best assembler
207 2006_sykes2 Best one liner
208 2006_toledo1 Best small program
209 2006_toledo2 Best of Show
210 2006_toledo3 Most portable chess set
211 2011_akari Best of Show - Most Shrinkable
212 2011_blakely Most devolving
213 2011_borsanyi Best data utility
214 2011_dlowe Most self deprecating
215 2011_eastman Best ball
216 2011_fredriksson Most useful
217 2011_goren Most artistic
218 2011_hamaji Best solved puzzle
219 2011_hou Best self documenting program
220 2011_konno Best one liner
221 2011_richards Most surprisingly portable
222 2011_toledo Best non-chess game
223 2011_vik Most sound
224 2011_zucker Most shiny
225 2012_blakely Most GIFted expressions
226 2012_deckmyn Most notable and best tool
227 2012_dlowe Best way to lose a life
228 2012_endoh1 Most complex ASCII fluid - Honorable mention
229 2012_endoh2 PiE in the sky award
230 2012_grothe Most conspiratorial
231 2012_hamano Silver Award - Most elementary use of C
232 2012_hou Most useful obfuscation
233 2012_kang Best short program
234 2012_konno Best one liner
235 2012_omoikane Most surreptitious
236 2012_tromp Most functional
237 2012_vik Bronze Award - Best use of cocoa
238 2012_zeitak Gold Award - Balanced use of obfuscation
239 2013_birken Best painting tool
240 2013_cable1 Most partisan one liner
241 2013_cable2 Best of Show
242 2013_cable3 Largest small system emulator
243 2013_dlowe Best sparkling utility
244 2013_endoh1 Most lazy SKIer
245 2013_endoh2 Most recyclable
246 2013_endoh3 Most tweetable one liner
247 2013_endoh4 Most solid
248 2013_hou Best use of one infinite loop
249 2013_mills Most timely rendered
250 2013_misaka Most catty
251 2013_morgan1 Smallest large system simulator
252 2013_morgan2 Most playfully versatile
253 2013_robison Most poetic use of strings
254 2014_birken Best use of port 1701
255 2014_deak Most underscored argument
256 2014_endoh1 Most square (YODA Award)
257 2014_endoh2 Best use of bioinformatics
258 2014_maffiodo1 Homage to a classic game
259 2014_maffiodo2 Most tweetable entry
260 2014_morgan Most likely to succeed
261 2014_sinon Best choice of optimization
262 2014_skeggs Most dynamic
263 2014_vik Best handling of beeps
264 2014_wiedijk Most functional
265 2015_burton Most useful
266 2015_dogon Most crafty
267 2015_duble Best handwriting
268 2015_endoh1 Most diffused reaction
269 2015_endoh2 Most overlooked obfuscation
270 2015_endoh3 Back to the Future Award
271 2015_endoh4 Best one liner
272 2015_hou Most well rounded hash
273 2015_howe Most different
274 2015_mills1 For the Birds! Award
275 2015_mills2 Most compact
276 2015_muth Most complete use of CPP
277 2015_schweikhardt Best documented
278 2015_yang Most pointed reaction
279 2018_algmyr Most cacophonic
280 2018_anderson Most able to divine code gaps
281 2018_bellard Most inflationary
282 2018_burton1 Best one liner
283 2018_burton2 Best abuse of the rules
284 2018_ciura Most likely to be awarded
285 2018_endoh1 Best tool to reveal holes
286 2018_endoh2 Best use of python
287 2018_ferguson Best use of weasel words
288 2018_giles Most unstable
289 2018_hou Most likely to top the charts
290 2018_mills Best of Show
291 2018_poikola Most stellar
292 2018_vokes Most connected
293 2018_yang Most shifty
294 2019_adamovsky Most functional interpreter
295 2019_burton Best one liner
296 2019_ciura Most alphabetic
297 2019_diels-grabsch1 Best small program
298 2019_diels-grabsch2 Most self-aware
299 2019_dogon Best use of space and time
300 2019_duble Best collaborative graphics
301 2019_endoh Most in need of debugging
302 2019_giles Most in need of wide space
303 2019_karns Most in need of whitespace
304 2019_lynn Most functional compiler
305 2019_mills Most in need to be tweeted
306 2019_poikola Most calendrical
307 2019_yang Most in need of transparency
308 2020_burton Best one liner
309 2020_carlini Best of Show - abuse of libc
310 2020_endoh1 Most explosive
311 2020_endoh2 Best perspective
312 2020_endoh3 Most head-turning
313 2020_ferguson1 Don't tread on me award
314 2020_ferguson2 Most enigmatic
315 2020_giles Most phony
316 2020_kurdyukov1 Best utility
317 2020_kurdyukov2 Least detailed
318 2020_kurdyukov3 Bset slaml prragom
319 2020_kurdyukov4 Best abuse of lámatyávë
320 2020_otterness Most percussive
321 2020_tsoj Most misleading indentation
322 2020_yang Best abuse of CPP
Binary file not shown.