315 Commits
Author SHA1 Message Date
Cody Boone Ferguson 31793b035c Improve 1996/westley/try scripts 2024-01-19 06:00:43 -08:00
Cody Boone Ferguson 6344fd5584 Update 1996/schweikh3/Makefile for SunOS
Rather than make anyone manually update the Makefile (the command in the
README.md file suggested that one would use Makefile variables) or type
a more complicated command the Makefile now tries to compile the entry
as suggested if compilation fails. Thus one can type 'make all' and if
compilation fails it will try the SunOS way.
2024-01-19 05:53:11 -08:00
Cody Boone Ferguson 9f988aface Fix comment about 1996/schweikh2/try.sh
The script was changed to run a certain command only once but the
README.md file stated the old way of it running several times in a row.
I can't see the use of running it several times when we can just pipe it
through less to see the look. The author's suggested command, meanwhile,
is hard to see what is happening as it doesn't go slow enough and it
floods the screen until one hits ctrl-c/sends intr.
2024-01-19 05:42:31 -08:00
Cody Boone Ferguson e88b19a307 Add 1996/schweikh1/try.sh 2024-01-19 05:38:26 -08:00
Cody Boone Ferguson 1de404c42b Improve 1996/schweikh2/try.sh 2024-01-19 05:30:13 -08:00
Cody Boone Ferguson 9bcfcea20c Add 1996/rcm/try.sh
The 'to use' section was fixed also: it's not just specific gzipped
files but any so it now says 'file.gz' and adds that file.gz is any
gzipped file.

The try.sh script now has the command that used to be in to use and also
what was in the try section. It also copies rcm.c to rcm.cp.c and gzips
that file and then runs the program on that to show the source. All
paged through less(1), of course. Finally it does what the judges have
in their comments (which have been updated to say that the command is in
the try.sh script). The judges' command is naturally a shorter way to do
the one added in the try.sh script but it uses tee(1) to write both to
another file (piped to less(1)) so that it can compare the two.
Obviously the files will be the same but it shows how it works in
multiple ways.
2024-01-19 05:21:00 -08:00
Landon Curt Noll bcc69ae454 update manifest as per recent file changes 2024-01-18 19:07:46 -08:00
Cody Boone Ferguson 4e16e80e4d Improve 1996/huffman/try.sh 2024-01-18 11:52:06 -08:00
Cody Boone Ferguson b60486cb84 Improve 1996/gandalf/try.sh 2024-01-18 11:46:10 -08:00
Cody Boone Ferguson 01d50b7ff4 Add 1996/dalbec/try.sh 2024-01-18 11:28:07 -08:00
Cody Boone Ferguson 5402b8f1da Improve 1996/august/try.sh 2024-01-18 11:22:22 -08:00
Landon Curt Noll c1466f5165 build index.html for all winners
Updated manifest as per recent file changes.

Updated winner `.winner.json` to reflect the manifest changes.

Added [bin/all_run.sh](bin/all_run.sh) tool to run a command over
all winning entries.

These tools had slight improvements in the help usage message:

* bin/gen-author.sh VERSION="1.3.1 2024-01-16"
* bin/gen-inventory.sh VERSION="1.0.1 2024-01-16"
* bin/pandoc_wrapper.sh VERSION="1.3.1 2024-01-16"
* bin/subst.default.sh VERSION="1.1.1 2024-01-16"
* bin/subst.winner-index.sh VERSION="1.1.1 2024-01-16"

The `bin/readme2index.sh` tool was improved so that
if the `index.html` file exists and the tool forms
the exact same content, then the file `index.html`
file is NOT touched.

* bin/readme2index.sh VERSION="1.1 2024-01-16"

We used the following command to generate `index.html` files
for all winning entries:

```sh
bin/all_run.sh -v 3 bin/readme2index.sh
```

NOTE: We have not (yet) built HTML files above the winner directory
level (e.g., no year level nor top level HTML), nor have be built
non-index HTML files for winners.

NOTE: By default we are running `pandoc(1)` with:

```
--fail-if-warnings=true
```

This means that any problems with markdown to HTML
generates an error.  This is done to be sure that
the HTML conversion is clean.

We had to fix the following `README.md` files:

* `2000/rince/README.md`

The reference [^2] was never used.  We made a guess that [^2] applies
to the same spot as [^1].  Perhaps there is a better spot where
[^2] applies?

NOTE: For every reference, there MUST be some place where that
reference is used.

* 2012/vik/README.md

The string "$...$" is assumed to be a TeX encoded string.

NOTE: Every "$..$" needs to be backslashed as in "\$..\$".

* 2018/burton1/README.md

The reference [2] was duplicated.  We changed the
second [2] to [3].

NOTE: Every reference needs to have a unique number.

* 2020/carlini/README.md

The string "$...$" is assumed to be a TeX encoded string.

NOTE: Every "$..$" needs to be backslashed as in "\$..\$".

We also found 2 errors in the `author/author_handle.json` file set:

* author/Anonymous_2001.json

The `author/Anonymous_2001.json` file was missing.

* author/Jari_Arkko.json

The winner ID for `1989_jar.1` had a typo.
2024-01-17 00:32:39 -08:00
Cody Boone Ferguson ba0f1ea721 Fix heading level of 'Try' section
It was agreed to be '## Try:' but there were many files where it was
'### Try:'. This has been corrected.
2024-01-15 04:29:39 -08:00
Landon Curt Noll c6e6201209 release readme2index.sh version 1.0 2024-01-14
The initial release of `bin/readme2index.sh` tool that converts
`READMD.md` and various JSON files such as `.winner.json`
as well as "author/author_handle.json" files.

Applied the `readme2index.sh` tool to generate `2020/ferguson1/index.html`.

We generated the  `2020/ferguson1/index.html` by executing:

```sh
./bin/readme2index.sh -v 3 2020/ferguson1
```

NOTE: This above tool requires **pandoc to be installed**.
See the [pandoc web site](https://pandoc.org) for how
to install.  We used _HomeBrew_ to install it,
but there is also a _macports_ process as well.

NOTE: While the above web page does have formatting issues, it is
a first attempt data driven programmatic web page generation.

Some adjustments can be made by mostly improving `ioccc.css`,
and some perhaps by modifying how `bin/pandoc_wrapper.sh`
invokes pandoc.  But probably most of the improvements can
be made by fixing and improving `ioccc.css`.

TODO: Fix and improve the `2020/ferguson1/index.html`
web page by fixing and improving `ioccc.css`.

Moved scripts and tools needed to generate HTML pages
into a new `/bin` subdirectory.

TODO: Consider getting rid of the [build-ioccc
repo](https://github.com/ioccc-src/build-ioccc) and just use the
`/bin` subdirectory.

NOTE: Some links in the `2020/ferguson1/index.html`
web page do not (yet) exist.

TODO: Once the basic format of the `2020/ferguson1/index.html` web
page is somewhat reasonable, generate `index.html` pages for other
winners.  Generate the year level `index.html' files.
Generate the top level HTML files, including the missing
`location.html` file.

Greatly simplified the `.winner.json` file format,
removing a number of fields that were not strictly needed
for generating an inventory on a `index.html` page.

Updated various versions:

* `bin/gen-author.sh` VERSION="1.3 2024-01-14"
* `bin/gen-inventory.sh` VERSION="1.0 2024-01-14"
* `bin/manifest.winner.json.awk` VERSION="1.0 2024-01-14"
* `bin/pandoc_wrapper.sh` VERSION="1.3 2024-01-14"
* `bin/readme2index.sh` VERSION="1.0 2024-01-14"
* `bin/subst.default.sh` VERSION="1.1 2024-01-14"
* `bin/subst.winner-index.sh` VERSION="1.1 2024-01-14"
* `tmp/gen_path_list.found.sh` VERSION="1.1 2024-01-14"
* `tmp/gen_winner_json.sh` VERSION="1.1 2024-01-14"

The `.winner.json` file format from winner_JSON_format_version
"0.5 2023-11-04" to "1.0 2024-01-14".

All `.winner.json` files have been updated to use the
new `.winner.json` file format.

The manifest (`tmp/manifest.numbers` and `tmp/manifest.csv`) has
updated to use the new `.winner.json` file format.

The following procedure was used to generate the
`tmp/manifest.csv` manifest file:

0. open [manifest.numbers](manifest.numbers) in numbers: modify if/as needed

NOTE: Please try to keep the [manifest.numbers](manifest.numbers) spreadsheet
      in order order.  Use Organize -> Sort -> ((Sort Now)) to sort.

NOTE: Empty fields in the [manifest.numbers](manifest.numbers) spreadsheet
      are not allowed.  By default, a cell that is empty is colored
      as a warning.

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 ./tmp/[fix_csv.sh](fix_csv.sh)

NOTE: You must run the [fix_csv.sh](fix_csv.sh) in the above
      step in order to make the CSV file usable by other tools.

NOTE: If no changes are needed in the above step, the
      original file content will be restored.

5. Execute ./tmp/[gen_path_list.found.sh](gen_path_list.found.sh)

NOTE: The above step silently performs a `make clobber` at the
      top level, and so it takes a bit of time.

NOTE: If no changes are needed in the above step, the
      original file content will be restored.

6. Execute ./tmp/[check_path_list.sh](check_path_list.sh)

NOTE: The above step prints nothing and for an exit 0, then
      all is well.  If there is a problem, such as files
      found that are not part of the manifest, or files
      in the manifest that are not found, then an error
      message will be printed and the tool will exit non-zero.
      If errors are reported, go back to step 0 and
      correct the errors.

7. Execute ./tmp/[run_all.sh](run_all.sh) ./gen_winner_json.sh

NOTE: The above step will take a few seconds to run.  It will rebuild
      all `.winner.json` files for all winners.

NOTE: If no changes are needed in the above step, the
      original file content will be restored.

8. Execute `git status` and inspect changes

NOTE: Check in changes if and as needed.

NOTE: In a number of shell scripts under `bin/*.sh`,
      and in the `bin/manifest.winner.json.awk` script
      you will find comments of the form:

```
```

This is a note that when tools such as `jnamval` (and `jval` and `jfmt`) are
ready, these gross hacks should be replaced with calls to those tools.
Until they are ready, some must be careful with the layout of JSON files.

A number of bugs and typos have been fixed.

NOTE: Fixing typos in the files touched by this comment is welcome.
      This includes scripts, data files, text files, etc.

The _inventory_order_, _display_as_, _display_via_github_.  and
_winners_text_ fields of the [manifest.numbers](manifest.numbers)
spreadsheet were just set to have some initial values.
As they impact the inventory displayed on `index.html` pages,
their content needs to be improved.

NOTE: Improving the above mentioned fields of the
      [manifest.numbers](manifest.numbers) spreadsheet is welcome.
2024-01-14 22:03:28 -08:00
Landon Curt Noll 66a1c2efee Merge pull request #1845 from xexyl/birken2013-alt
Reword alt code suggestion in 2013/birken
2024-01-10 14:04:45 -08:00
Landon Curt Noll 259d8c8503 update manifest, remove inventory.html, update .winner.json
Update the manifest as per recent file changes.

Removed inventory.html from all winners as the inventory will be
added to the winner `index.html` instead,

Updated winner `.winner.json` files as per the above.
2024-01-10 14:03:53 -08:00
Cody Boone Ferguson 14f8c3e6df Fix alt build of 1996/eldby
The Makefile was missing a SLEEP variable which made it harder to
reconfigure the sleep time in the alt code.

Reworded the recommendation of trying alt code first.
2024-01-10 09:39:18 -08:00
Cody Boone Ferguson ae0b11cdaf Add missing final comments to top README.md files
In some cases the comments were there but there was no section heading.
In others the section was not there at all.

These files have NOT been checked in other ways. That will come another
day most likely and very possibly not until early next year.
2023-12-30 07:17:33 -08:00
Landon Curt Noll 5859489b60 update .winner.json based on updated manifest.csv
We used:

```sh
cd tmp
./run_all.sh ./gen_winner_json.sh
```
2023-12-28 19:22:06 -08:00
Cody Boone Ferguson ba764a1833 Fix tmp/format-headers.sh, format headers
The script had "s surrounding the git ls-files command which turned it
to a single file which of course is wrong.

Ran script again fixing many README.md files that had incorrect number
of blank lines for critical headers.

This will have to be done a final but a good number of files have been
corrected.
2023-12-27 08:54:28 -08:00
Landon Curt Noll c9a023ff09 note old Email, header formatting, improve copyright and license
For the top level and year level README.md, where email are found,
a note was added to the effect that email addresses found above are
for historical purposes only, and should not be used today.

Old references to asking for fixes, comments, when content was used,
and next contest links were replaced with a general reference to the FAQ.

Harmonized the Copyright and License and copyright dates.
Now using Creative Commons "CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0
International".

The above Creative Commons will become the standard for the IOCCC.
Replaced old `png/by-sa-3.0-88x31.png` with a new ` png/by-sa.88x31.png` icon.
Updated the top level HTML files to use the license.
2023-12-26 14:43:30 -08:00
Cody Boone Ferguson 801f3fe90c Add missing comment in all Makefiles
The comment for the rule diff_alt_orig was missing. It was added like:

    sgit -e '/diff_alt_orig:/i \
    # diff alt and orig' '*Makefile'
2023-12-26 09:00:03 -08:00
Landon Curt Noll 658669a73a improve .gitignore files, fix index.html links, sync CNAME
fix experimental web site links in experimental index.html

sync CNAME with https://github.com/ioccc-src/winner/blob/master/CNAME

improve .gitignore files

Added to each .gitignore file, comments on how to sort.

Put into winner .gitignore files, ignore *.dSYM files.

Put into winner .gitignore files, ignore indent.c,
indent.o and indent files.  This is done so that the
winner directory can more self contained.

We did not put into winner .gitignore files, however,
excludes of .-files as found in the top level .gitignore file.
As .-files are not allowed by mkiocccentry, the top level
.gitignore file remains sufficient.

Added to year level .gitignore files, excludes of
mkentry or iocccsize files as needed.

Sorted (via sort -d -u) all .gitignore file.
2023-12-08 04:06:44 -08:00
Landon Curt Noll 6206201d8a add make genpath rules, .path files, updated .top and .year
Add .path files to each winner directory: a file containing
the path to the winner directory from the top directory.

Changed YYYY/.year files to contain the paths, from the top
directory, if the winning directories for the given year.

Changed `/.top` to contain the IOCCC years.

Added `make genpath` rule to the top Makefile and the
year Makefiles to generate the above.

Added FAQ 6.8 to `faq.md` to explain the above.

Updated manifest to reflect recent changes to the list of files.
2023-12-08 01:29:43 -08:00
Landon Curt Noll f929afd344 update .winner.json
We used:

```sh
./run_all.sh ./gen_winner_json.sh
```

to update `.winner.json` files due to recent changes
made to `manifest.csv`.
2023-12-05 22:51:27 -08:00
Landon Curt Noll 1e1f962c30 add to make clobber, removal of *.dSYM 2023-12-05 02:22:49 -08:00
Cody Boone Ferguson 6db290e89e Make my fix to 1996/westley more like original 2023-11-25 10:18:23 -08:00
Cody Boone Ferguson 30c59761df Mass fix Makefiles: $(MAKE) -> ${MAKE} 2023-11-19 06:31:28 -08:00
Cody Boone Ferguson bc35c37748 Improve how gcc/clang is detected in Makefiles
Rather than check if $(CC) IS gcc or IS clang check for $(CC) containing
gcc or clang. This is because in some systems or conditions the compiler
might not be called JUST gcc or JUST clang. For instance gcc in MacPorts
is called gcc-mp-13 (for example) but without this change one would have
to symlink gcc to gcc-mp-13 or copy it to gcc.

The FAQ has been updated to address this.
2023-11-18 06:10:02 -08:00
Cody Boone Ferguson 6ad80342ff Another slight fix to 1996/huffman/try.sh 2023-11-15 10:08:10 -08:00
Cody Boone Ferguson 1daa978ce5 Fix typos (from paste) in 1996/huffman/try.sh
It should be more like:

   Well the wolf-man fell dead
   As you can plainly see
   And that's the end the story for you and me
   You still give a listen, you just may
   Hear a big wolf-man or little piggy say
   Little pig, little pig, let me in
   Not by the hair of my chinny, chin, chin
   Little pig, little pig, let me in
   Not by the hair of my chinny, chin, chin
   Well I'm huffin', I'm puffin'
   I'll blow your house in
   Huffin', puffin', blow your house in
   Huffin', puffin', blow your house in
   Huffin', puffin', blow your house in
   Huffin' and a puffin' and
   I'll blow your house in!
   Huffin' and a puffin' and
   I'll blow your house in!
   Huffin' and a puffin' and
   I'll blow your house in!
   Huffin' and a puffin' and
   I'll blow your house in!

   And the moral of the story is, that
   bands with no talent can easily amuse
   Idiots with a stupid puppet show.

... or something like that :-)
2023-11-15 10:04:51 -08:00
Cody Boone Ferguson 2e5782f930 Improve 1996/huffman/try.sh
Get CC, defaulting to cc.

   So, that's to end the story for you and me
   If you still give a listen, you just may
   Hear a big wolf-man or little piggy say
   Little pig, little pig, let me in
   Not by the hair of my chinny, chin, chin
   Little pig, little pig, let me in
   Not by the hair of my chinny, chin, chin
   Well, I'm huffin', I'm puffin', I'll blow your house in
   Huffin', puffin', blow your house in
   Huffin', puffin', blow your house in
   Huffin' and a puffin' and I'll blow your house in!
   And the moral of the story is
   band with no talent can easily amuse
   Idiots with a stupid, puppet show

:-)
2023-11-14 07:45:47 -08:00
Cody Boone Ferguson dbeda86c10 Improve 1996/westley/try.sh and try.alt.sh
Get CC, defaulting to cc.
2023-11-14 04:00:17 -08:00
Cody Boone Ferguson 6968ea1404 Improve 1996/schweikh2/try.sh
Get CC, defaulting to cc.
2023-11-14 03:58:41 -08:00
Cody Boone Ferguson e27906cbad Improve 1996/gandalf/try.sh
Get CC defaulting at cc.

BTW: it's absolutely perilous to 'try' the patience of Gandalf. Go ahead,
'try' it! :-)
2023-11-14 03:50:05 -08:00
Cody Boone Ferguson 48e9ffea8f Improve 1996/august/try.sh
Get CC defaulting to cc.
2023-11-14 03:48:48 -08:00
Cody Boone Ferguson d9a8166984 Format/typo check 1996/schweikh3 2023-11-11 10:40:59 -08:00
Cody Boone Ferguson 94f742eabd Add 1996/schweikh2/try.sh + format/typo checks
The try.sh script runs some of the commands in the try section as well
as a minimal version of something the author recommends one trying for a
pleasing effect. The reason it is minimal is because it is an infinite
loop and it seems like not a good idea to have an infinite loop in a
script that demonstrates a few things of the entry.

Format and typo check the README.md file.
2023-11-11 10:24:19 -08:00
Cody Boone Ferguson f704c2989e Format/typo check 1996/schweikh1 2023-11-11 09:43:21 -08:00
Cody Boone Ferguson c7ae827d81 Format/typo check 1996/rcm/README.md 2023-11-11 09:26:47 -08:00
Cody Boone Ferguson 760e5ddd32 Updates to 1996/huffman - format + bugs + try.sh
The try.sh script runs the commands in the try section. It does not run
the spoiler command in the judges' remarks as that didn't feel like a
good idea.

The README.md has been typo and format checked.

Added to bugs.md to try and change to use fgets(3). In the meantime it
uses 2>/dev/null.
2023-11-11 09:20:28 -08:00
Cody Boone Ferguson 3ca67b08ff Format/typo check 1996/eldby + improve alt code
The alt code that I added a while back had '#include's but to make it
more like the original I added '-include ..' to the CINCLUDE in the
Makefile.

The README.md has been typo/format checked.
2023-11-11 08:30:19 -08:00
Cody Boone Ferguson 04889c6384 Format/typo check 1996/dalbec
Also since it was my proposed fix to the code (for clang) I decided to
change the function name to how I've been doing it: rather than 'cain()'
it is now 'pain()'.
2023-11-11 08:26:59 -08:00
Cody Boone Ferguson a728375f14 Minor update to 1996/gandalf/README.md - for fun 2023-11-11 06:54:07 -08:00
Cody Boone Ferguson d801a7d473 Fix infinite loop hang in 1996/august
In macOS, for example, one of the commands suggested by the author and
by the judges (which was put into try.sh by me a while back) would cause
it to hang. The author's remarks made me try something: a file has to
first have lines starting with '#' (^#) stripped. Thus in the author's
remarks and the try.sh script this command was added:

    sed -i'' '/^#/d' august.oc

and now it runs to completion.

The README.md file has been format and typo fixed and this should
complete 1996/august.
2023-11-11 06:47:33 -08:00
Cody Boone Ferguson c2b720f874 Add try.sh and try.alt.sh to 1996/westley
These scripts simplify running the three other scripts (that the author
provided, renamed to have the extension '.sh') to show the three styles
of clocks with both the fixed (for modern systems) version and the
original version (the alt code).

The README.md file has been format and typo checked.

This should complete 1996/westley.
2023-11-11 04:44:45 -08:00
Cody Boone Ferguson aee071cdf8 Add 1996/gandalf/try.sh and format README.md
The script is rather elaborate in that it runs the programs in the
different ways the judges previously suggested as well as some
additional runs and shows the difference (or if no difference says they
are identical) of the different commands, using temporary files that are
deleted if the script is sent (some) signals, the script is quit (when
prompted to press a key pressing 'q' will quit the script) or if the
script runs to completion.

The README.md file was format/typo checked.

BTW: it is absolutely perilous to try the patience of Gandalf
(https://www.glyphweb.com/arda/g/gandalf.html). Go ahead, try it! :-)

The Makefile has had -Wno-implicit-int added to CSILENCE.
2023-11-11 04:20:00 -08:00
Landon Curt Noll e00d20111d rename .inventory.html -> inventory.html
Due to GitHub not serving nor rendering HTML files whose filename
starts with "." (dot), we renamed `.inventory.html` to `inventory.html`.

Renamed: `tmp/gen_dot_winner.sh` -> `tmp/gen_winner_json.sh`
Fixed URL generation for GitHub links in `inventory.html`.

The manifest was updated accordingly.

The `tmp/README.md` file was updated accordingly.
2023-11-06 02:23:30 -08:00
Landon Curt Noll 4f88c4214b add initial .winner.json and .inventory.html for winners
Fixed an incorrect author win for "1989_jar.2" in `author_wins.numbers`
and `author_wins.csv`.

Changed winner_JSON_format_version to "0.5 2023-11-04".

Added `gen_dot_winner.sh` tool to generate .winner.json and .inventory.html
for a winner.  This tool uses [pandoc](https://pandoc.org) to convert
markdown to HTML.

Used this command to generate `.winner.json` and `.inventory.html` for
all winners:

```sh
./run_all.sh -v 1 -D 1 ./gen_dot_winner.sh
```

Updated `tmp/README.md` to reflect the above.

Retired "fake.gen_inventory.sh" to `tmp/OLD_manifest/fake.gen_inventory.sh`.

Added `-D level` flag to `run_all.sh` to specify the `-v level` for
the tool that is being run.
2023-11-06 00:22:19 -08:00
Cody Boone Ferguson 249e865de2 Mass edit README.md: remove top award/author lines
As requested on GitHub: a tool that will be written, readme2index, will,
as explained:

    '... will take the converted HTML from the README.md markdown and
    inject it into an HTML template. Things such title, award one and
    author information will be injected into the HTML page ahead of the
    HTML that was converted from the README.md markdown. Without going
    into details of HOW at this time, the result will be a coherent HTML
    index.html page with the winner title / award, winning author
    information, and important file links come from other sources and
    NOT from the README.md file.

    The text from the 1st award line, thru the authorship information,
    and up to but not including the "## To build:" line in the README.md
    file will just get in the way. Moreover authors might be tempted to
    try and maintain that top of README.md text instead of working with
    the author/_author_handle_.json and winner .winner.json files.

This was done with my[0] sgit(1) (https://github.com/xexyl/sgit) tool like:

    sgit -o -n -e '/^## To build:/,$p' '[12][0-9][0-9][0-9]/*/README.md'

[0] Is that shameless self-promotion? I don't know but I don't care: it
is generally a very useful tool and has been used in other repos too.
Besides, I've done it many times before and it's a great example that I
will be adding to the README.md file of the tool, one I hadn't thought
of doing.
2023-11-05 03:39:46 -08:00