forked from ioccc-src/temp-test-ioccc
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
1069 lines (945 loc) · 53 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- START: two lines up starts content from: inc/top.default.html -->
<!-- END: this line ends content from: inc/top.default.html -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<link rel="stylesheet" href="../../ioccc.css">
<link href="https://fonts.googleapis.com/css2?family=Outfit:[email protected]&display=swap" rel="stylesheet">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>2020/ferguson1 - Don't tread on me award</title>
<link rel="icon" type="image/x-icon" href="../../favicon.ico">
<meta name="description" content="2020 IOCCC entry ferguson1 - Don't tread on me award">
<meta name="keywords" content="IOCCC, 2020, IOCCC 2020, IOCCC entry, ferguson1, Don't tread on me award">
</head>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! 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 !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- END: this line ends content from: inc/head.default.html -->
<!-- -->
<!-- This web page was formed via the tool: bin/readme2index.sh -->
<!-- The content of main section of this web page came from: 2020/ferguson1/README.md -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! Do not modify this web page, instead modify the file: 2020/ferguson1/README.md !!! -->
<!-- !!! Do not modify this web page, instead modify the file: 2020/ferguson1/README.md !!! -->
<!-- !!! Do not modify this web page, instead modify the file: 2020/ferguson1/README.md !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- Markdown content was converted into HTML via the tool: bin/md2html.sh -->
<!-- START: this line starts content from: inc/body.default.html -->
<body>
<!-- END: this line ends content from: inc/body.default.html -->
<!-- START: this line starts content from: inc/topbar.default.html -->
<div class="theader">
<nav class="topbar">
<div class="container">
<div class="logo">
<a href="../../index.html" class="logo-link">
IOCCC
</a>
</div>
<div class="topbar-items">
<div class="item">
<span class="item-header">
Entries
</span>
<div class="sub-item">
<div class="outfit-font">
<a href="../../years.html" class="sub-item-link">
Winning entries
</a>
</div>
<div class="outfit-font">
<a href="../../authors.html" class="sub-item-link">
Winning authors
</a>
</div>
<div class="outfit-font">
<a href="../../location.html" class="sub-item-link">
Location of authors
</a>
</div>
<div class="outfit-font">
<a href="../../bugs.html" class="sub-item-link">
Bugs and (mis)features
</a>
</div>
<div class="outfit-font">
<a href="../../faq.html#fix_an_entry" class="sub-item-link">
Fixing entries
</a>
</div>
<div class="outfit-font">
<a href="../../faq.html#fix_author" class="sub-item-link">
Updating author info
</a>
</div>
</div>
</div>
<div class="item">
<span class="item-header">
Status
</span>
<div class="sub-item">
<div class="outfit-font">
<a href="../../news.html" class="sub-item-link">
News
</a>
</div>
<div class="outfit-font">
<a href="../../status.html" class="sub-item-link">
Contest status
</a>
</div>
<div class="outfit-font">
<a href="../../next/index.html" class="sub-item-link">
Rules and guidelines
</a>
</div>
<div class="outfit-font">
<a href="../../markdown.html" class="sub-item-link">
Markdown guidelines
</a>
</div>
<div class="outfit-font">
<a href="../../SECURITY.html" class="sub-item-link">
Security policy
</a>
</div>
</div>
</div>
<div class="item">
<span class="item-header">
FAQ
</span>
<div class="sub-item">
<div class="outfit-font">
<a href="../../faq.html" class="sub-item-link">
Frequently Asked Questions
</a>
</div>
<div class="outfit-font">
<a href="../../faq.html#submit" class="sub-item-link">
How to enter
</a>
</div>
<div class="outfit-font">
<a href="../../faq.html#compiling" class="sub-item-link">
Compiling entries
</a>
</div>
<div class="outfit-font">
<a href="../../faq.html#running_entries" class="sub-item-link">
Running entries
</a>
</div>
<div class="outfit-font">
<a href="../../faq.html#help" class="sub-item-link">
How to help
</a>
</div>
</div>
</div>
<div class="item">
<span class="item-header">
About
</span>
<div class="sub-item">
<div class="outfit-font">
<a href="../../index.html" class="sub-item-link">
Home page
</a>
</div>
<div class="outfit-font">
<a href="../../about.html" class="sub-item-link">
About the IOCCC
</a>
</div>
<div class="outfit-font">
<a href="../../judges.html" class="sub-item-link">
The Judges
</a>
</div>
<div class="outfit-font">
<a href="../../thanks-for-help.html" class="sub-item-link">
Thanks for the help
</a>
</div>
<div class="outfit-font">
<a href="../../contact.html" class="sub-item-link">
Contact us
</a>
</div>
</div>
</div>
</div>
</div>
</nav>
<div class="header-mobile-menu">
<noscript>
<a href="../../nojs-menu.html" class="topbar-js-label">
Please Enable JavaScript
</a>
</noscript>
<button id="header-open-menu-button" class="topbar-mobile-menu">
<img
src="../../png/hamburger-icon-open.png"
alt="hamburger style menu icon - open state"
width=48
height=48>
</button>
<button id="header-close-menu-button" class="hide-content">
<img
src="../../png/hamburger-icon-closed.png"
alt="hamburger style menu icon - closed state"
width=48
height=48>
</button>
<div id="mobile-menu-panel" class="hide-content">
<div class="mobile-menu-container">
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Entries
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="../../years.html">
Winning entries
</a>
<a class="mobile-submenu-item" href="../../authors.html">
Winning authors
</a>
<a class="mobile-submenu-item" href="../../location.html">
Location of authors
</a>
<a class="mobile-submenu-item" href="../../bugs.html">
Bugs and (mis)features
</a>
<a class="mobile-submenu-item" href="../../faq.html#fix_an_entry">
Fixing entries
</a>
<a class="mobile-submenu-item" href="../../faq.html#fix_author">
Updating author info
</a>
<a class="mobile-submenu-item" href="../../thanks-for-help.html">
Thanks for the help
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
Status
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="../../news.html">
News
</a>
<a class="mobile-submenu-item" href="../../status.html">
Contest status
</a>
<a class="mobile-submenu-item" href="../../next/index.html">
Rules and guidelines
</a>
<a class="mobile-submenu-item" href="../../markdown.html">
Markdown guidelines
</a>
<a class="mobile-submenu-item" href="../../SECURITY.html">
Security policy
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
FAQ
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="../../faq.html">
Frequently Asked Questions
</a>
<a class="mobile-submenu-item" href="../../faq.html#submit">
How to enter
</a>
<a class="mobile-submenu-item" href="../../faq.html#compiling">
Compiling entries
</a>
<a class="mobile-submenu-item" href="../../faq.html#running_entries">
Running entries
</a>
<a class="mobile-submenu-item" href="../../faq.html#help">
How to help
</a>
</div>
</div>
<div class="mobile-menu-wrapper">
<div class="mobile-menu-item">
About
</div>
<div class="mobile-submenu-wrapper">
<a class="mobile-submenu-item" href="../../index.html">
Home page
</a>
<a class="mobile-submenu-item" href="../../about.html">
About the IOCCC
</a>
<a class="mobile-submenu-item" href="../../judges.html">
The Judges
</a>
<a class="mobile-submenu-item" href="../../contact.html">
Contact us
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
var headerOpenMenuButton = document.getElementById("header-open-menu-button");
var headerCloseMenuButton = document.getElementById("header-close-menu-button");
var mobileMenuPanel = document.getElementById("mobile-menu-panel");
headerOpenMenuButton.addEventListener("click", () => {
headerOpenMenuButton.classList.remove("topbar-mobile-menu");
headerOpenMenuButton.classList.add("hide-content");
headerCloseMenuButton.classList.remove("hide-content");
headerCloseMenuButton.classList.add("topbar-mobile-menu");
mobileMenuPanel.classList.remove("hide-content");
mobileMenuPanel.classList.add("topbar-mobile-panel");
});
headerCloseMenuButton.addEventListener("click", () => {
headerCloseMenuButton.classList.remove("topbar-mobile-menu");
headerCloseMenuButton.classList.add("hide-content");
mobileMenuPanel.classList.add("hide-content");
mobileMenuPanel.classList.remove("topbar-mobile-panel");
headerOpenMenuButton.classList.add("topbar-mobile-menu");
headerOpenMenuButton.classList.remove("hide-content");
});
</script>
<!-- END: this line ends content from: inc/topbar.default.html -->
<!-- START: this line starts content from: inc/header.default.html -->
<div class="header">
<a href="../../2011/zucker/index.html">
<img src="../../png/ioccc.png"
alt="IOCCC image by Matt Zucker"
width=300
height=110>
</a>
<h1>The International Obfuscated C Code Contest</h1>
<h2>2020/ferguson1 - Don't tread on me award</h2>
<h3>Snake game</h3>
</div>
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/navbar.mid.html -->
<div class="navbar">
<a class="Left" href="../endoh3/index.html">← 2020/endoh3</a>
<a class="Left" href="../index.html">↑ 2020 ↑</a>
<a class="Left" href="../ferguson2/index.html">2020/ferguson2 →</a>
<a class="Right" href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/prog.c">C code</a>
<a class="Right" href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/Makefile">Makefile</a>
<a class="Right" href="#inventory">Inventory</a>
<a class="Right" href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fioccc-src.github.io%2Ftemp-test-ioccc%2F2020%2Fferguson1%2Findex.html">✓</a>
</div>
<!-- END: this line ends content from: inc/navbar.mid.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<div class="content" id="content">
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 20 by: bin/output-index-author.sh via bin/md2html.sh -->
<!-- START: this line starts content generated by: bin/output-index-author.sh -->
<h2 id="author">Author:</h2>
<ul>
<li>Name: <a href="../../authors.html#Cody_Boone_Ferguson">Cody Boone Ferguson</a><br>
Location: <a href="../../location.html#US">US</a> - <em>United States of America</em> (<em>United States</em>)</li>
</ul>
<!-- END: next line ends content generated by: bin/output-index-author.sh -->
<!-- END: this line ends content for HTML phase 20 by: bin/output-index-author.sh via bin/md2html.sh -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<!-- BEFORE: 1st line of markdown file: 2020/ferguson1/README.md -->
<h2 id="to-build">To build:</h2>
<pre><code> make</code></pre>
<h3 id="bugs-and-misfeatures">Bugs and (Mis)features:</h3>
<p>The current status of this entry is:</p>
<blockquote>
<p><strong>STATUS: INABIAF - please DO NOT fix</strong></p>
</blockquote>
<p>For more detailed information see <a href="../../bugs.html#2020_ferguson1">2020/ferguson1 in bugs.html</a>.</p>
<h2 id="to-use">To use:</h2>
<pre><code> WAIT=N WALLS=[01] EVADE=N SIZE=N MAXSIZE=N GROW=N SHEDS=N SHED=N CANNIBAL=[01] ./prog
# start pressing some arrow keys</code></pre>
<p>where <code>N</code> is a number and <code>[01]</code> is either <code>1</code> or <code>0</code> (or more correctly zero
and non-zero).</p>
<h3 id="variables">Variables:</h3>
<ul>
<li><p><strong>WAIT</strong><br>
positive or negative integer that changes how long to wait for
a key press prior to moving again. < 0 blocks which allows
for complete control over movement at your own pace. Default
231; you can move faster by holding down or rapidly pressing an
arrow key.</p></li>
<li><p><strong>WALLS</strong><br>
whether the walls are passable or impassable. Default passable,
1; 0 makes walls impassable where you die if you hit a wall.</p></li>
<li><p><strong>EVADE</strong><br>
how many movements the Snake moves before the bug (well
insect; see notes below about why bugs) will move to
another location in the field. Default 300; 0 disables.</p></li>
<li><p><strong>SIZE</strong><br>
initial size of the Snake. Note that it grows by one per
move so at the default 5 it will not initially be 5
characters long! < 0 is likely an immediate win.</p></li>
<li><p><strong>MAXSIZE</strong><br>
the maximum size the Snake can become before the game is
won. < 0 is the maximum size based on terminal dimensions;
any other size will be capped based on the terminal
dimensions to prevent problems. Note that when <strong>SIZE+GROW >=
MAXSIZE</strong> you win <em>before</em> you grow to the full size!</p></li>
<li><p><strong>GROW</strong><br>
size to grow every time you eat a bug. Default 5; negative
values are allowed. ‘Negativity’ creates for fun gameplay modes with
enough creativity. See <a href="gameplay.html">gameplay.html</a>
as well as <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/play.sh">play.sh</a> for some examples.</p></li>
<li><p><strong>SHED</strong><br>
every <strong>SHED</strong> movements you will grow (> 0), shrink (< 0) or
stay the same length (0) by the <strong>SHEDS</strong> (below) value. Again
with creativity you can create some fun gameplay modes. NOTE:
the concept of shedding in this game is a misnomer; see notes
below.</p></li>
<li><p><strong>SHEDS</strong><br>
every <strong>SHED</strong> movements will impact what this value means: grow
(> 0), shrink (< 0) or not at all (0). Exception: if the snake
eats a bug the counter isn’t incremented. Again with creativity
you can create some fun gameplay modes here. For instance you
can grow upon eating a bug but shrink every <strong>SHED</strong> movements
and then it’s a battle of whether you win by <strong>SIZE < 0</strong> or
<strong>SIZE >= MAXSIZE</strong>. See <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/play.sh">play.sh</a> for examples.
NOTE: the concept of shedding in this game is a misnomer; see
notes below.</p></li>
<li><p><strong>CANNIBAL</strong><br>
whether you can go through the Snake or not. Default is 0
(cannot - die if you try).</p></li>
</ul>
<h2 id="try">Try:</h2>
<pre><code> make test
WAIT=75 WALLS=1 CANNIBAL=1 ./prog
./prog
SIZE=-1 ./prog
CANNIBAL=1 WALLS=1 WAIT=50 EVADE=200 ./prog
WAIT=75 GROW=-1 SIZE=5 CANNIBAL=1 ./prog
CANNIBAL=1 WALLS=1 WAIT=0 EVADE=1 MAXSIZE=10 ./prog
./play
# allows you to configure colours and has various pre-configured gameplay modes
./snake-colours
# allows for configuring colours</code></pre>
<h2 id="judges-remarks">Judges’ remarks:</h2>
<p>As the <a href="https://en.wikipedia.org/wiki/Gadsden_flag">Gadsden flag</a> warns, beware of the snake!
This game has a number of configurable pitfalls including walls and snakes.</p>
<p>There is a good deal of useful documentation that is provided with this entry:</p>
<ul>
<li><a href="gameplay.html">gameplay.html</a></li>
</ul>
<p>Documented game <em>features</em> and gameplay modes!</p>
<ul>
<li><a href="terminals.html">terminals.html</a></li>
</ul>
<p>Information about terminal capabilities, dimensions (setting and how to restore sanity if it causes any problems) as well as colours (limitations etc.).</p>
<ul>
<li><a href="troubleshooting.html">troubleshooting.html</a></li>
</ul>
<p>Workarounds for various game <em>features</em></p>
<ul>
<li><a href="bugs.html">bugs.html</a></li>
</ul>
<p>Bugs and things that might seem like bugs but are not.</p>
<ul>
<li><a href="chocolate-cake.html">chocolate-cake.html</a></li>
</ul>
<p>Because most of us could use some <em>Double-layered Chocolate Fudge Cake</em>!</p>
<ul>
<li><a href="obfuscation.html">obfuscation.html</a></li>
</ul>
<p>Read <strong><em>ONLY</em></strong> if you really must give up trying to de-obfuscate!</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<h3 id="feature-rich-curses-implementation-of-the-snake-game-with-many-gameplay-modes-and-options">Feature-rich curses implementation of the Snake game (with many gameplay modes and options)</h3>
<p>Snake has two cheat modes (passable walls and self [cannibalism]), a drawing (or
practising) mode, <em>can play by itself (<strong>and win!</strong>)</em>, is coloured (included
<a href="snake-colours.sh">snake-colours.sh</a> and <a href="play.sh">play.sh</a> scripts compile in player-selected colours)
and there are many other play modes (many more can be devised with the
imagination and the environmental variables; see <a href="gameplay.html">gameplay.html</a>
for many examples and <a href="play.sh">play.sh</a> for preconfigured
modes) and options. You can pause and there’s even a built-in test unit for
some features! The variables mentioned in the to run section at the top of this
file modify the behaviour of Snake.</p>
<p>Here are some other features of the game:</p>
<ul>
<li><p>A drawing/practising mode (<strong>WAIT</strong> < 0 makes <code>timeout()</code> block).</p></li>
<li><p>Computer plays the game (<strong>WAIT=0</strong>).<br></p>
<ul>
<li><strong>EPILEPSY/STIMULATION OVERLOAD WARNING</strong> included in the relevant
section (this goes for a low <strong>EVADE</strong> value too).</li>
</ul></li>
<li><p>Grow-Shrink mode (Positive and Negative Winning) mode (see
<a href="gameplay.html">gameplay.html</a> for more details).</p></li>
<li><p>The dimensions of the game (this is actually a terminal thing but I document
how to do this and its potential pitfalls) (<strong>LINES</strong> , <strong>COLUMNS</strong>).</p></li>
</ul>
<p>There are no complicated command line invocations; it’s just a matter of passing
into the game descriptively named variables and I include a script that sets up
many different gameplay modes (see <a href="gameplay.html">gameplay.html</a>
and <a href="play.sh">play.sh</a>).</p>
<p>The <a href="gameplay.html">gameplay.html</a> file has all the information on
what the game looks like, how to play, the different types of modes (that I have
thought of so far) including all those in the above list. Along with the
<a href="play.sh">play.sh</a> and <a href="snake-colours.sh">snake-colours.sh</a> scripts it’s probably the most important
file for players.</p>
<p>The gameplay file is long but it includes game printouts as well as explaining
the many different gameplay modes. The <a href="play.sh">play.sh</a> script automates most (if
not all) of the gameplay modes described in the gameplay file (it also
allows you to change colours like <a href="snake-colours.sh">snake-colours.sh</a>) as well as the judges’
suggestions (that I don’t document so as to not deobfuscate them). You can pass in
environmental variables to both scripts though obviously some will conflict with
different options in play.sh.</p>
<p>Probably just as important is <a href="chocolate-cake.html">chocolate-cake.html</a>
with an old but wonderful recipe (because the judges love chocolate and
who can blame them? - also it goes with one of the IAQs I include later).</p>
<p>The <a href="troubleshooting.html">troubleshooting.html</a> file has some
advice on potential problems (and things that might appear to be problems at
first glance but are not) that I have thought of or encountered.</p>
<p>The <a href="terminals.html">terminals.html</a> has a variety of information
specific to terminals from input/directions, dimensions, sanity and colours: a
sort of troubleshooting guide for terminals with some additional information.</p>
<p>The <a href="obfuscation.html">obfuscation.html</a> has a variety of information
including some of the obfuscation techniques and a bit of how it works.</p>
<p>The <a href="bugs.html">bugs.html</a> has a list of known bugs and things that
look like bugs but aren’t as well as documenting a built-in test unit for some
features.</p>
<p>Because all IOCCC entries should have a man page I have included one (even
though much of it is what’s also above). To render try:</p>
<pre><code> man ./snake.1</code></pre>
<p>The <a href="COMPILING.html">COMPILING.html</a> file has a few portability
notes and the <a href="HACKING.html">HACKING.html</a> file has some
information on how one might modify things, things that could be implemented
(and how to/how not to go about some of the things) as well as some other
information on the entry (some of which is deliberately not true - a variation
of misleading comments). These files are probably insignificant.</p>
<p>I have more information about this entry at <a href="https://ioccc.xexyl.net/2020/snake">https://ioccc.xexyl.net/2020/snake</a>.</p>
<p>As noted for the files I recommend looking at the html files with a browser
unless on GitHub in which case I recommend the markdown files; this particularly
goes for the gameplay, bugs, terminals, troubleshooting ones along with the most
important one, chocolate cake. Most important for the cake as the formatting is
very important.</p>
<div id="toc">
<ul>
<li><a href="#bugs">‘Bugs’</a></li>
<li><a href="#naqs">NAQs/IAQs - Never/Infrequently Asked Questions</a>
<ul>
<li><a href="#inspirations">Do I have any inspirations for this entry?</a></li>
<li><a href="#features">Are there any features I thought of that I wanted to implement but did not get to for some reason or another?</a></li>
<li><a href="#easier">Are there ways that one can make this game easier?</a></li>
<li><a href="#harder">Are there ways to make it harder?</a></li>
<li><a href="#moult">How do snakes grow in real life?</a></li>
<li><a href="#other">Any other interesting things about snakes?</a></li>
<li><a href="#opposite">Why can you go the opposite direction and so immediately die when not cannibalising?</a></li>
<li><a href="#chocolatecake">Do you have any <strong>DELICIOUS CHOCOLATE CAKE</strong> recipes?</a></li>
<li><a href="#alt">What are the files prog.alt.c, prog.2.c, prog-j.c and prog.alt.c ?</a></li>
</ul></li>
<li><a href="#winning">Winning thoughts, dedications and thanks</a></li>
</ul>
</div>
<h3 id="bugs">‘Bugs’</h3>
<ul>
<li><p>‘The screen keeps showing bugs!’ Well yes, that’s rather the point! Help out
by eating them. Keep eating them until you win! Then you will have the
satisfaction of getting rid of the non-bug bugs (okay, insects, but that
ruins a great pun and joke)! :)</p></li>
<li><p>The Snake in the game doesn’t fly (yes there are <a href="https://www.bbc.co.uk/news/science-environment-25943693">flying snakes</a>). For
other snake madness see the reports of ‘<a href="http://www.macroevolution.net/snake-human-hybrids.html">human snakes</a>’.</p></li>
<li><p>Technically walls, snakeskin and the snake itself would not be an obstacle
in real life. The shed snakeskin is not an obstacle but walls can be and
so can the snake itself. Also snakes grow by moulting (technical term for
shedding) so when the snake leaves its snakeskin behind it really ought to
grow but instead it shrinks; this means negative shedding ought to have the
snake grow and positive shedding have the snake - what? It’s a misnomer: it
took fewer bytes and the negative shedding is a positive consequence of
unsigned arithmetic.</p></li>
</ul>
<p>On a more serious note look at <a href="bugs.html">bugs.html</a>.</p>
<div id="naqs">
<h3 id="naqsiaqs-neverinfrequently-asked-questions">NAQs/IAQs (Never/Infrequently Asked Questions)</h3>
</div>
<div id="inspirations">
<h4 id="do-i-have-any-inspirations-for-this-entry">Do I have any inspirations for this entry?</h4>
</div>
<p>There are two in particular. First is a long time mate of mine wrote a bash
implementation of Snake several years ago (uncoloured, no cheat modes, hardcoded
dimensions etc. - in fact everything was hardcoded).</p>
<p>Back then I had thought of making a curses implementation of it but I never got
round to it. When the judges announced that the 2020 IOCCC contest would be open
from late December 2019 through 15 March 2020 I started thinking again on what
might be a good entry. By chance I thought of the Snake game and so wrote it
finishing the implementation of everything on 8 November 2019. Did I say
everything? That’s an unintentional lie; I thought it was everything but I
implemented many new things after that. In fact I have numerous times thought I
was done only to have added yet another feature - or two or three or more!</p>
<p>Second is the old Atari game <a href="https://en.wikipedia.org/wiki/Surround_(video_game)">Surround</a> (according to Wikipedia it might even
be the origin of Snake itself). There were a few modes as I recall.
The object of the game was to surround your opponent so that they would run into
you, the wall or themselves. The opponent was either the computer or another
player.</p>
<p>In one mode you could go through walls (that’s where I got the idea to do
likewise). There was also a drawing mode where you could just move round making
different designs though that this is in my entry is a happy coincidence
(because <code>timeout()</code> will block when it gets a negative value). It’s true that
in my Snake it’s not quite the same but it’s close enough. Perhaps it can be
made more like <a href="https://en.wikipedia.org/wiki/Surround_(video_game)">Surround</a> if it grows every movement but then depending on the max
size of the snake the game might be over fairly quickly (I don’t remember how
it was done in <a href="https://en.wikipedia.org/wiki/Surround_(video_game)">Surround</a>).</p>
<p>In <a href="https://en.wikipedia.org/wiki/Surround_(video_game)">Surround</a> each move you made you would grow in size by one. This is what
inspired the shedding mode. Anyway I always loved the game and it’s similar to
Snake in several ways.</p>
<div id="features">
<h4 id="are-there-any-features-i-thought-of-that-i-wanted-to-implement-but-did-not-get-to-for-some-reason-or-another">Are there any features I thought of that I wanted to implement but did not get to for some reason or another?</h4>
</div>
<p>Yes. I thought it would be fun if there were other obstacles for the snake (in
my mind I was thinking of barriers like the walls but in the field).</p>
<p>I also thought it would be fun to have more than one bug at some point after say
the snake gets to be some size. One of the reasons I didn’t do this is because I
was trying to save iocccsize bytes. I never got round to this though and I feel
that the features I have implemented are far more interesting and fun.</p>
<p>Another idea is having portals or teleportation but there are a number of
problems with those that would have to be worked out too.</p>
<p>I would have loved for it to be practical to support diagonal movement but as I
describe elsewhere it’s not. That’s perhaps what I regret most. It would be
possible to choose letters instead of arrow keys but even if that fit in the
size restrictions how would I show the head? I looked at the extended ncurses
character set and I didn’t see any diagonal arrows. I suppose I could have it
not show the arrows but then that brings an old problem back.</p>
<p>Nevertheless I am quite happy with the features in the game and I hope everyone
who plays it enjoys it as much as I enjoyed writing/playing it.</p>
<div id="easier">
<h4 id="are-there-ways-that-one-can-make-this-game-easier">Are there ways that one can make this game easier?</h4>
</div>
<p>I can think of at the least the following:</p>
<ul>
<li>Bigger screen will allow for freer movement (at least for more time?).</li>
<li>Increasing the movement (key press) wait to give you more time to choose
(though this slows gameplay down).</li>
<li>Decrease the size of the snake (and growth size) though over time the size
will become more and more problematic. But see the next item.</li>
<li>If you set a high growth size you don’t have to worry as much about running
into a wall or the snake itself for as long: because the check if you win is
done when the snake size is increased: if you’re 15 away from the max and
each bug you eat you grow by 11 then it won’t take as many bugs to win as it
would if the grow size was 3. This applies to shedding size too.</li>
<li>If you want to show off keep walls passable and enable cannibalism. It
won’t be a challenge then but at least you could show your final score?</li>
<li>Decrease the max size needed and if you want it even easier increase the
terminal size.</li>
<li>And the one that applies to learning new things and getting more things done
also applies here: remove all sources of distraction; turn the phone off,
lock yourself in a soundproof room (refusing to get up for anyone or
anything) and delete all your social media accounts for starters. Okay you
don’t really have to do the latter one but it can’t be denied that they can
be very distracting! As can phone (calls and otherwise). And visitors
calling. And being on this planet.</li>
<li>If you don’t want a challenge at all you could just set the start size to be
the max size or very close to it. In fact if you have the shedding size to be
even one on every move even if you normally can’t win with the same size
screen you might find it happens much more easily! You could of course play
with these parameters in different ways together - there are certainly
different combinations than I have given.</li>
<li>Of course you could also enable one or both cheat modes. You might be
considered a filthy cheat but both modes are quite fun (one being enabled by
default; does that mean it’s not actually a cheat mode?).</li>
</ul>
<div id="harder">
<h4 id="are-there-ways-to-make-it-harder">Are there ways to make it harder?</h4>
</div>
<ul>
<li>Decrease the size of the game.</li>
<li>Decrease the size of the snake growth (and initial snake size).</li>
<li>Make the snake go faster (decrease the time the game waits for input).</li>
<li>Hold down the direction keys to move faster; this is something I do often
though I have always had extremely fast reflexes and amazing eye hand
coordination (at least after glasses and the three eye surgeries?).
Admittedly I don’t find this makes it any harder but it does make you have
to react faster.</li>
<li>Be reckless (i.e. increase the chance of a wreck, a most amusing
contradictory idea if you ignore etymology).</li>
<li>Look away for a moment every so often or have a conversation with your best
mate, partner or family member whilst playing.</li>
<li>Make walls impassable and disable cannibalism.</li>
<li>Make the bug move more frequently (this can be a real problem when you can’t
go through the walls!).</li>
<li>Get used to going through walls and then try with it disabled.</li>
<li>Set the max size to the maximum (<em><code>MAXSIZE=-1</code></em> should do it).</li>
</ul>
<p>And if you’re a show-off you can try:</p>
<ul>
<li>Closing your eyes (maybe better to practise with one eye open first or even
in practice that is drawing mode?).</li>
<li>Have someone tickle you.</li>
<li>Watch a comedy show or have a laugh with a mate or partner or family member.</li>
<li>Have your partner tease you.</li>
<li>Speak on the phone with someone (paying attention to both). Come to think of
it I have actually done this though not to show off but rather it’s just
something I’m capable of…</li>
<li>Watch a film at the same time.</li>
<li>Sneeze and/or cough.</li>
<li>Have breakfast, second breakfast, elevenses, lunch, afternoon tea, dinner or
some other meal that you think of.</li>
<li>Get pissed out of your mind to make it difficult to think (please do not
drive!).</li>
<li>Do more than one or all of the above at the same time (the longer the snake
becomes the more often you should do these things).</li>
<li>Eat a <a href="cake.jpg">great chocolate cake</a>. Actually you should do that whether you’re
trying to show off or not. Sleep, bath, eat chocolate cake, play Snake, eat
chocolate cake, play Snake, sleep, … For a great recipe see below.</li>
</ul>
<p>But if that’s not enough I don’t know what to tell you other than suggest that
you make use of your talents for financial gain or at least a world record.
Either way I tip my proverbial snakeskin hat to you (animal cruelty but a pun is
a pun and every pun deserves to be shed).</p>
<div id="moult">
<h4 id="how-do-snakes-grow-in-real-life">How do snakes grow in real life?</h4>
</div>
<p>They grow through a process called moulting - shedding their skin (other
creatures also moult). This takes place over some days and unlike humans snakes
never stop growing (though growth slows down as they mature). I chose the
variables <strong>SHED</strong> and <strong>SHEDS</strong> for simplicity and because the words are
shorter. I don’t like the words because it’s rather a misnomer but what I had
chosen before was longer - STRETCH and STRETCHES.</p>
<div id="other">
<h4 id="any-other-interesting-things-about-snakes">Any other interesting things about snakes?</h4>
</div>
<p>For the fascinating science behind snake slithering see <a href="https://www.bbc.co.uk/news/science-environment-35563941">Snake walk: The physics
of slithering</a>. For the bizarre thought of snake human hybrids see <a href="http://www.macroevolution.net/snake-human-hybrids.html">human
snakes</a>. The latter is hard to comprehend and there are some sad tails (tales)
in there too because I believe that people actually believe in this (how/why I
do not know) and they really do tell the truth as they see it (even if
impossible).</p>
<div id="opposite">
<h4 id="why-can-you-go-the-opposite-direction-and-so-immediately-die-when-not-cannibalising">Why can you go the opposite direction and so immediately die when not cannibalising?</h4>
</div>
<p>When Ilya Kurdyukov was playing with this he questioned why this is possible
when other implementations don’t have it this way. There are a few reasons.</p>
<p>First is that the friend’s implementation had it that way and it had been a long
time since I had played it (if I ever did? I don’t know now: I played so many
games over the years and the game most alike it that I played is <a href="https://en.wikipedia.org/wiki/Surround_(video_game)">Surround</a>, as
below).</p>
<p>It also is the way it is in <a href="https://en.wikipedia.org/wiki/Surround_(video_game)">Surround</a>.</p>
<p>It makes cannibalism mode very interesting.</p>
<p>And I happen to like it the way I have it. In the end a snake isn’t an obstacle
for itself but in the game it is and I went all the way instead of only halfway.</p>
<p>It also would take more bytes and that’s a problem with IOCCC rule 2b.</p>
<p>But if you have a problem with it you can always enable cannibalism and keep
walls passable and not worry about dying.</p>
<div id="chocolatecake">
<h4 id="do-you-have-any-delicious-chocolate-cake-recipes">Do you have any <strong>DELICIOUS CHOCOLATE CAKE</strong> recipes?</h4>
</div>
<p>Why yes I do! So good in fact that even my late stepmum who didn’t even like
chocolate (except white chocolate) loved this cake. It’s a double-layered
chocolate fudge cake. See the file <a href="chocolate-cake.html">chocolate-cake.html</a>
for the recipe. Note that it’s a complicated
but it’s well worth it!</p>
<p>I included it in both of my entries this year because if any of them won more people
can have this recipe; also it might help remind the judges that they really
should have their cook bake it so they can all - including the cook should they
also like chocolate - enjoy the cake whilst judging (and otherwise - it’s a big
cake and very rich). Sadly they didn’t get to enjoy it during their judging due
to the pandemic but maybe next time (or they can do on their own).</p>
<p><strong>Do make <em>SURE</em> that you pay attention to <em>ALL</em> notes!</strong></p>
<h5 id="reiterating-the-notes-about-the-cake-and-the-icing">Reiterating the notes about the cake and the icing</h5>
<p>The following notes are so important that they are worth repeating here.</p>
<ul>
<li>The icing being difficult in warmer rooms is rather significant. If necessary
use the refrigerator or else air conditioner to cool down the place. This might
or might not work well enough.</li>
<li>Do <strong>NOT</strong> use imitation vanilla!</li>
<li>Do <strong>NOT</strong> use butter even if you think it’ll come out better; it will come
out bad! Many people have made this mistake ‘because they know better’. You’ve
been warned.</li>
<li>Pay attention to the rest of the notes as well! They’re crucial.</li>
</ul>
<div id="alt">
<h4 id="what-are-the-files-prog.2.c-prog.3.c-prog.3-j.c-and-prog.alt.c">What are the files prog.2.c, prog.3.c, prog.3-j.c and prog.alt.c ?</h4>
</div>
<p>I submitted three Snake versions; these are the other layouts for those few
(more likely none) who are interested to see them.</p>
<p>The <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/prog.2.c">prog.2.c</a> has more digraphs but I think no other significant differences.</p>
<p>The <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/prog.3.c">prog.3.c</a> is in a more artistic layout (a backwards S), has at least one
additional obfuscation technique (see deobfuscation information) but it also has more digraphs
and as the judges said they feel that digraphs are dated so that’s probably why
they chose the first layout. The <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/prog.3-j.c">prog.3-j.c</a> version is
<a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/prog.3.c">prog.3.c</a> with a shorter <code>J</code> macro.</p>
<p>The prog.alt.c version is the one that allows for customising the bug colour and
it’s used in both <a href="snake-colours.sh">snake-colours.sh</a> and <a href="play.sh">play.sh</a>. It also calls <code>erase()</code>
first, clearing the screen, which the play.sh and snake-colours.sh scripts also
both do.</p>
<h2 id="authors-dedication">Author’s dedication:</h2>
<div id="winning">
<h3 id="winning-thoughts-dedications-and-thanks">Winning thoughts, dedications and thanks</h3>
</div>
<p>Once again I’m honoured to win along with some of the other veterans who I have
a huge amount of respect for; there’s <a href="../../authors.html#Don_Yang">Don Yang</a>, <a href="../../authors.html#Dave_Burton">Dave
Burton</a>, <a href="../../authors.html#Yusuke_Endoh">Yusuke Endoh</a>
and <a href="../../authors.html#Edward_Giles">Edward Giles</a> all of whom are amazing
programmers. I’m especially proud to win besides Dave Burton and Yusuke Endoh
but Don Yang and Edward Giles too.</p>
<p>But there are some others who I don’t remember like <a href="../../authors.html#Ilya_Kurdyukov">Ilya
Kurdyukov</a>
(who’s offered a lot of interesting thoughts on <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/prog.c">Snake</a> and
who plans to have his own version after the entries are published), <a href="../../authors.html#Nathan_Otterness">Nathan
Otterness</a>, <a href="../../authors.html#Nicholas_Carlini">Nicholas
Carlini</a> (your entry is an absolutely brilliant
abuse of <code>printf</code> - and I totally agree with the judges remarks that your entry
is so novel that it’ll be worth special mention in the future Best of IOCCC
list!) and <a href="../../authors.html#_tsoj">tsoj</a> too.</p>
<p>Well done and congratulations to all of you again! Thank you for submitting the
wonderful entries and I’m honoured to have my two entries beside yours!</p>
<p>To Dave Burton I thank you for your wonderful comments as well as pointing out
that even with <a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/prog.alt.c">prog.alt.c</a> it probably would be better to make use
of the alt target instead of naming prog.c prog.alt.c. You’re quite right, I had
thought of it but you brought it up so I could correct it. Much appreciated
mate.</p>
<p>I would like to dedicate this entry to my wonderful mum Dianne Ferguson whom I
love with all my heart and soul <3 Thank you for being the best mother
imaginable! You’ve been there for me in the darkest of my hours without question
without complaint and with all the love, compassion, empathy, sympathy and
devotion anyone could ever ask for. Bless you again and again and again dear
mother.</p>
<p>I also want to dedicate this to Vicky Wilmore who has given me a lot of
love the past few years and who was there for me in some very dark times. Thank
you Vicky sweetheart from the bottom of my heart and soul xxx</p>
<p>I would like to thank my dear friend <a href="https://www.ficture.nl">Martijn
Schoemaker</a> for encouraging me in my programming over
the years and who I owe a great deal to. Thank you for believing in me and my
programming abilities (and other abilities) even when I couldn’t believe in
myself! Very much appreciated especially coming from an amazing programmer who I
have huge admiration for!</p>
<p>Finally I want to thank Leo Broukhis, Simon Cooper and Landon Curt Noll for
continuing to hold the contest after all these years - and for having selected
my entries. It’s a huge honour; thank you! I also happen to <strong>love</strong> your
comments as well as the award titles. And yes indeed ‘most of us could use
<em><a href="chocolate-cake.html">Double-layered Chocolate Fudge Cake</a></em>!’</p>
<p>If you wish to contact me please do so. Please contact via mastodon. You can try
email but I’m more likely to respond to mastodon messages.</p>
<!--
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/
-->
<!-- AFTER: last line of markdown file: 2020/ferguson1/README.md -->
<!-- END: this line ends content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<!-- START: this line starts content for HTML phase 22 by: bin/output-index-inventory.sh via bin/md2html.sh -->
<!-- START: this line starts content generated by: bin/output-index-inventory.sh -->
<div id="inventory">
<h1 id="inventory-for-2020ferguson1">Inventory for 2020/ferguson1</h1>
</div>
<h2 id="primary-files">Primary files</h2>
<ul>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/prog.c">prog.c</a> - entry source code</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/Makefile">Makefile</a> - entry Makefile</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/prog.alt.c">prog.alt.c</a> - alternate source code</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/prog.orig.c">prog.orig.c</a> - original source code</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/snake-colours.sh">snake-colours.sh</a> - script to configure colours of game</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/play.sh">play.sh</a> - like snake-colours.sh with pre-configured gameplay modes</li>
<li><a href="COMPILING.html">COMPILING.html</a> - about compiling</li>
<li><a href="HACKING.html">HACKING.html</a> - how one might add to or modify code</li>
<li><a href="bugs.html">bugs.html</a> - things that look like bugs but are not</li>
<li><a href="cannibalism.log.html">cannibalism.log.html</a> - shows extreme cannibalism mode output</li>
<li><a href="chocolate-cake.html">chocolate-cake.html</a> - Double-layered Chocolate Fudge Cake Recipe</li>
<li><a href="crazy.log.html">crazy.log.html</a> - explains various odd screen dumps</li>
<li><a href="gameplay.html">gameplay.html</a> - many different gameplay modes described</li>
<li><a href="obfuscation.html">obfuscation.html</a> - detailed information about the obfuscation of the code</li>
<li><a href="terminals.html">terminals.html</a> - terminal capabilities and dimensions and colours</li>
<li><a href="troubleshooting.html">troubleshooting.html</a> - troubleshooting Snake</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/prog.2.c">prog.2.c</a> - source code with more digraphs</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/prog.3.c">prog.3.c</a> - source code with a more artistic layout</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/prog.3-j.c">prog.3-j.c</a> - source code with artistic layout and shorter j macro</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/snake.1">snake.1</a> - Snake game man page</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/termcaps.c">termcaps.c</a> - terminal capability test source code</li>
</ul>
<h2 id="secondary-files">Secondary files</h2>
<ul>
<li><a href="2020_ferguson1.tar.bz2">2020_ferguson1.tar.bz2</a> - download entry tarball</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/COMPILING.md">COMPILING.md</a> - markdown source for COMPILING.html</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/HACKING.md">HACKING.md</a> - markdown source for HACKING.html</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/README.md">README.md</a> - markdown source for this web page</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/bugs.md">bugs.md</a> - markdown source for bugs.html</li>
<li><a href="cake.jpg">cake.jpg</a> - image of Double-layered Chocolate Fudge Cake</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/cannibalism.log.md">cannibalism.log.md</a> - markdown source for cannibalism.log.html</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/chocolate-cake.md">chocolate-cake.md</a> - markdown source for chocolate-cake.html</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/crazy.log.md">crazy.log.md</a> - markdown source for crazy.log.html</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/.entry.json">.entry.json</a> - entry summary and manifest in JSON</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/gameplay.md">gameplay.md</a> - markdown source for gameplay.html</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/.gitignore">.gitignore</a> - list of files that should not be committed under git</li>
<li><a href="ioccc-cake.jpg">ioccc-cake.jpg</a> - image of Double-layered Chocolate Fudge Cake with ‘IOCCC’</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/obfuscation.md">obfuscation.md</a> - markdown source for obfuscation.html</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/.path">.path</a> - directory path from top level directory</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/terminals.md">terminals.md</a> - markdown source for terminals.html</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2020/ferguson1/troubleshooting.md">troubleshooting.md</a> - markdown source for troubleshooting.html</li>
<li><a href="index.html">index.html</a> - this web page</li>
</ul>
<hr style="width:10%;text-align:left;margin-left:0">
<h4>
Jump to: <a href="#">top</a>
</h4>
<!-- END: next line ends content generated by: bin/output-index-inventory.sh -->
<!-- END: this line ends content for HTML phase 22 by: bin/output-index-inventory.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->