diff --git a/2013/morgan1/README.md b/2013/morgan1/README.md index 453a56f61..c72e50c0e 100644 --- a/2013/morgan1/README.md +++ b/2013/morgan1/README.md @@ -18,6 +18,10 @@ echo "2013/10/03" | ./morgan1 echo "1985/10/28" | ./morgan1 echo "1996/12/31" | ./morgan1 + +echo "1986/03/31" | ./morgan1 # Comet Halley (look for 'Ha') + +echo "1997/04/01" | ./morgan1 # Comet Hale-Bopp (look for 'Hb') ``` Try pressing the arrow keys when your focus is in the window. @@ -50,35 +54,49 @@ calendar](https://en.wikipedia.org/wiki/Julian_calendar) and [Gregorian calendar](https://en.wikipedia.org/wiki/Gregorian_calendar) (10 days missing between 1582/10/04 and 1582/10/15). -The scale is logarithmic to be able to display the 8 planets without having -Mercury, Venus, Earth and Mars squeezed around the Sun. +The scale is logarithmic to be able to display the [8 +planets](http://news.bbc.co.uk/2/hi/5282440.stm) without having +[Mercury](https://science.nasa.gov/mercury), +[Venus](https://science.nasa.gov/venus/), +[Earth](https://science.nasa.gov/earth/facts) and +[Mars](https://science.nasa.gov/mars) squeezed around the +[Sun](https://science.nasa.gov/sun/). The size is not proportional either. + ### Bonus It also displays the position of 2 famous comets during their last approach: -- The first one around the third IOCCC. -- The second one between the thirteenth and fourteenth IOCCC. +- The [first one](https://science.nasa.gov/solar-system/comets/1p-halley/) +around the [third IOCCC](/years.html#1986). +- The [second +one](https://science.nasa.gov/solar-system/comets/c-1995-o1-hale-bopp/) between +the [thirteenth](/years.html#1996) and [fourteenth](/years.html#1998) IOCCC. + ### Limitations * ASCII character set is assumed. * A C99 compiler is required (for some `math.h` functions). * The position should be correct for years between (-1000; +3000) -* The approximations done in the formula are OK for displaying the - position around the sun but not for other applications like ephemeride or - sky view from Earth (angles may be off by 1 or 2 degrees sometimes). +* The approximations done in the formula are OK for displaying the position +around the [Sun](https://science.nasa.gov/sun/) but not for other applications +like [ephemeride](https://en.wikipedia.org/wiki/Ephemeris) or sky view from +[Earth](https://science.nasa.gov/earth/facts) (angles may be off by 1 or 2 +degrees sometimes). + ### Obfuscation * Reuse of 1 letter variables. -* Only the main function with some `for` loops. +* Only the `main()` function with some `for` loops. * Constants for orbital elements encoded in a string. * Hexadecimal and decimal values used inconsistently. * Comparisons order are not consistent. -* A lot of stuff is done in the different parts of the for loop. +* A lot of stuff is done in the different parts of the `for` loop. + ### Compilation warnings @@ -104,10 +122,10 @@ morgan1.c:56:14: warning: '&&' within '||' [-Wlogical-op-parentheses] This is due to most of the parentheses and braces being removed when unnecessary. -To verify the display, you can look at one of this programs : -* xephem : https://web.archive.org/web/20130310133219/http://www.clearskyinstitute.com/xephem/ -* homeplanet : https://www.fourmilab.ch/homeplanet/ -* https://www.theplanetstoday.com +To verify the display, you can look at one of these programs : +* xephem : +* homeplanet : +* ## Copyright and CC BY-SA 4.0 License: diff --git a/2013/morgan2/README.md b/2013/morgan2/README.md index 1df73a317..53b3d03d2 100644 --- a/2013/morgan2/README.md +++ b/2013/morgan2/README.md @@ -20,13 +20,6 @@ For the graphical version (X11): ``` -### Try: - -```sh -echo "Do or do not. There is no try." -``` - - ## Judges' remarks: The judges enjoyed playing the game almost to completion; if we remember @@ -41,23 +34,28 @@ This program is a domino game. The goal is to place dominoes on the 8x8 grid. Each domino is made of 6 squares of the colour red or green. To place a domino, at least one of its side shall match the other side of another domino. + ### How to play + ### Start of the game At the start of the game, the first domino is placed randomly on the grid. You get another domino to place by selecting one empty position in the stack on the right. You can have up to 8 dominoes pending at any time. + ### Moving in the stack -Use `Up` and `Down` key to move the cursor in the stack. Press `Enter` to either +Use `Up` and `Down` key to move the cursor in the stack. Press `Enter` to +either: * Reveal a new domino if the position was empty. * Select the domino to try to place it if the position was not empty. The currently selected domino is indicated on the top right. + ### Placing a domino Once a domino has been selected, the cursor moves to the grid. Use `Up`, `Down`, @@ -66,39 +64,43 @@ to place the domino. To go back to selection mode, press `Enter` on an occupied position. -The domino can be placed in an empty position if all its neighbour have matching -sides and the domino has at least one neighbour. +The domino can be placed in an empty position if all its neighbours have +matching sides and the domino has at least one neighbour. + ### Scoring First, depending on the number of dominoes pending in the stack, a bonus is -accorded : +accorded: -* 1 domino in the stack : 8 points. -* 2 dominoes in the stack : 4 points. -* 3 or 4 dominoes in the stack : 2 points. -* 5 or more dominoes in the stack : 0 points. +* 1 domino in the stack: 8 points. +* 2 dominoes in the stack: 4 points. +* 3 or 4 dominoes in the stack: 2 points. +* 5 or more dominoes in the stack: 0 points. Then the bonus is multiplied by the number of matching neighbours the placed domino has (1, 2, 3 or 4). This is added to the score. Finally, the total score is divided by the number of dominoes placed (1 - 64). -The 3 numbers on display represent : the total score, the fill count and the +The 3 numbers on display represent: the total score, the fill count and the final score (total score divided by fill count). + ### End of the game -The game is finished when no more dominos can be placed and you either : +The game is finished when no more dominoes can be placed and if one of the +following occurs: -* Completely filled the grid. -* Have 8 pending dominoes in the stack. -* No more domino can be revealed in the stack (more than 56 dominoes placed on - the grid). +* You have completely filled the grid. +* You have 8 pending dominoes in the stack. +* No more dominoes can be revealed in the stack (more than 56 dominoes placed on +the grid). **Note**: There is no real end of game detection implemented in the program, simply press `q` when you have finished... + ### Strategy * Try to minimize the number of dominoes revealed in the stack. The lower the @@ -109,20 +111,23 @@ simply press `q` when you have finished... placement. If the corner of a domino does not match another corner diagonally, the move is valid but will prevent some future moves. + ### Limitations * ASCII character set is assumed. * Requires both ncurses and X11 at compilation and runtime, but selection could be done at compilation with some extra code (mainly empty stubs). + ### Obfuscation -* 1 letter identifier, reused when possible. -* 1 algorithm, 2 different kind of display (ncurses and X11) mixed. +* 1 letter identifiers, reused when possible. +* 1 algorithm, 2 different kinds of display (ncurses and X11) mixed. * No parameters to functions, all variables are global and shared. * Some variables are not initialized if they have a known value at the time of use. + ### Compilation warnings With gcc 4.7.2 on Linux Ubuntu 12.10 :