diff --git a/2020/ferguson1/Makefile b/2020/ferguson1/Makefile index 97359f881..67c05ff94 100644 --- a/2020/ferguson1/Makefile +++ b/2020/ferguson1/Makefile @@ -421,10 +421,10 @@ MAY_NEED_GCC= gcc ############################## # OBJ= prog.o termcaps.o -DATA= COMPILING HACKING bugs.markdown cannibalism.log \ - chocolate-cake.markdown crazy.log gameplay.markdown \ - judges.markdown snake-colours.sh snake.1 spoilers.markdown \ - termcaps.c terminals.markdown troubleshooting.markdown +DATA= COMPILING HACKING bugs.text cannibalism.log \ + chocolate-cake.text crazy.log gameplay.text \ + snake-colours.sh snake.1 spoilers.text \ + termcaps.c terminals.text troubleshooting.text TARGET= prog snake snake-colours play snake-colours termcaps ${ALT_TARGET} # ALT_OBJ= diff --git a/2020/ferguson1/bugs.html b/2020/ferguson1/bugs.html index 565de0e8b..97aef96ef 100644 --- a/2020/ferguson1/bugs.html +++ b/2020/ferguson1/bugs.html @@ -27,16 +27,18 @@

Current bugs and things that look like bugs but are not, as of 12 September 2020.

-

-- Built-in test unit for some features! -- The snake doesn’t seem to be moving -- getch() also accepts input from some input hardware other than keyboards -- SIZE=0 is the same as SIZE=1 and other oddities -- ‘I was a few places behind my tail and I ran into it!’ -- With negative growth the snake drops from the middle of the body -- It looks like the bug is in the snake -- On the safety of the bug placement loop -- Vertical snake has more space between snake char than horizontal

+

+

Built-in test unit for some features!

diff --git a/2020/ferguson1/bugs.text b/2020/ferguson1/bugs.text index 26aa2305b..e9c2aea3a 100644 --- a/2020/ferguson1/bugs.text +++ b/2020/ferguson1/bugs.text @@ -1,16 +1,26 @@ Current bugs and things that look like bugs but are not, as of 12 September 2020. + - [Built-in test unit for some features!](#builtin-test-unit) + - [The snake doesn't seem to be moving](#stillsnake) + - [getch() also accepts input from some input hardware other than keyboards](#getch) + - [SIZE=0 is the same as SIZE=1 and other oddities](#size) + - ['I was a few places behind my tail and I ran into it!'](#bitetail) + - [With negative growth the snake drops from the middle of the body](#middleofsnake) + - [It looks like the bug is in the snake](#buginsnake) + - [On the safety of the bug placement loop](#bugplacement) + - [Vertical snake has more space between snake char than horizontal](#verticalsnake) + # Built-in test unit for some features! Fun fact: There's something of a built-in test unit for some features; much diff --git a/2020/ferguson1/chocolate-cake.html b/2020/ferguson1/chocolate-cake.html index 6c9f95d09..b88e2c7c5 100644 --- a/2020/ferguson1/chocolate-cake.html +++ b/2020/ferguson1/chocolate-cake.html @@ -25,26 +25,30 @@ + +

Double-layered Chocolate Fudge Cake

-

Here’s a delicious double-layered chocolate fudge cake (picture) that is -something of my mum’s speciality. It’s complicated and I should warn that nobody -has seemed to get it down as well as she has but it’s well worth the effort if +

Here's a delicious double-layered chocolate fudge cake that is +something of my mum's speciality. It's complicated and I should warn that nobody +has seemed to get it down as well as she has but it's well worth the effort if you love chocolate. My late stepmum who only liked white chocolate loved this cake!

+

picture of the double-layered chocolate fudge cake

+

There are two sets of ingredients and instructions; the cake and the icing. In addition there are some notes to pay attention to; some will be repeated because -they’re really important for the quality of the cake.

+they're really important for the quality of the cake.

Below I have included the ingredients separately but I include them within the instructions as well and in bold. Also in bold are some of the special notes.

Finally note that depending on where you are in the world this might not work in -the warmer months of the year for the icing in particular. Oh and here’s an -amusing fact about the IOCCC and chocolate. Did I say ‘the IOCCC’? I actually -meant ‘an IOCCC’: it stands also for ‘International Office of Cocoa, Chocolate -and Sugar Confectionery’. Perfect.

+the warmer months of the year for the icing in particular. Oh and here's an +amusing fact about the IOCCC and chocolate. Did I say 'the IOCCC'? I actually +meant 'an IOCCC': it stands also for 'International Office of Cocoa, Chocolate +and Sugar Confectionery'. Perfect.

See also the International Original Chocolate Cake Contest tweet from fellow IOCCC winner Ilya Kurdyukov (GitHub) as well as the @@ -58,13 +62,9 @@ US standards. A nice resource (that has much more than just cooking) is http://www.onlineconversion.com/cooking.htm. This will particularly matter for cups, teaspoons, tablespoons and ounces.

-

For example a US cup is not the same as Canadian cup and a metric cup differs -too. There’s also a difference for teaspoons and tablespoons: there are metric, -UK and US teaspoons and tablespoons. There’s both a UK and US ounce also.

+

Baker's chocolate

-

Baker’s chocolate

- -

Baker’s chocolate is a brand name and the product in question is unsweetened +

Baker's chocolate is a brand name and the product in question is unsweetened chocolate bars used for baking. According to a chocolates FAQ it might be called different things:

@@ -74,12 +74,12 @@ composed only of ground up cocoa beans, and nothing else.

The FAQ suggests that you might have to look for a baking supply shop but I -cannot offer any specific advice other than it’s unsweetened chocolate bars for +cannot offer any specific advice other than it's unsweetened chocolate bars for baking. The FAQ talks about what looks like substitutes but I have no idea what -that would turn out as; I somehow suspect it wouldn’t be good.

+that would turn out as; I somehow suspect it wouldn't be good.

Either way please still pay attention to the notes on the chocolate in the recipe and -recipe notes because they’re really important!

+recipe notes because they're really important!

Special notes for the cake

@@ -88,33 +88,34 @@ recipe notes because they’re really important!

Cake Ingredients

@@ -133,11 +134,11 @@ it turns out great!

  1. Melt 3 oz unsweetened chocolate in double boiler or small bowl over hot (but not boiling) water; let cool whilst proceeding.

  2. -
  3. Sift 2 ¼ cups flour, 2 tsp baking soda, and ½ tsp salt

  4. +
  5. Sift 2 1/4 cups flour, 2 tsp baking soda, and 1/2 tsp salt

  6. Beat 1 stick margarine in large bowl until soft.

  7. -
  8. Add 2 ¼ cups packed brown sugar and 3 eggs. Beat until light and +

  9. Add 2 1/4 cups packed brown sugar and 3 eggs. Beat until light and fluffy.

  10. -
  11. Beat in 1 ½ tsp vanilla and cooled melted chocolate.

  12. +
  13. Beat in 1 1/2 tsp vanilla and cooled melted chocolate.

  14. Stir in dry ingredients alternately with 1 cup sour cream; always beat until smooth.

  15. Stir in 1 cup boiling water.

  16. @@ -152,10 +153,10 @@ completely.

    Icing Ingredients

    @@ -169,30 +170,29 @@ bowl can sit in.

    Icing Directions

      -
    1. Combine 4 oz unsweetened chocolate and ½ cup margarine in pan. +

    2. Combine 4 oz unsweetened chocolate and 1/2 cup margarine in pan. Melt and remove from heat. DO NOT LET IT GET SOLID.

    3. -
    4. Combine 3 ¼ cups powdered sugar, ½ cups whole milk and 2 tsp +

    5. Combine 3 1/4 cups powdered sugar, 1/2 cups whole milk and 2 tsp vanilla into a bowl. Stir until smooth.

    6. Add chocolate mixture.

    7. -
    8. Set bowl in pan/bowl of ice and water. Beat with spoon/mixer until it’s -thick BUT not too thick. Make sure icing doesn’t get wet! The idea is to -MAKE THE BOWL IT’S IN COLD but not let the icing get wet.

    9. +
    10. Set bowl in pan/bowl of ice and water. Beat with spoon/mixer until it's +thick BUT not too thick. Make sure icing doesn't get wet! The idea is to +MAKE THE BOWL IT'S IN COLD but not let the icing get wet.

    -
    -
    Creative Commons License

    © Copyright 1984-2020, @@ -203,3 +203,5 @@ This work is licensed under a -1. Testing terminal environment/capabilities -2. Input keys -3. Gameplay - * The initial screen - * Playing the game - * Walls - * Cannibalism - * Stretching (shedding) - * Winning - * Quitting -4. Gameplay modes - * Photosensitive epilepsy/Stimulation overload trigger warnings - * Drawing / Practice mode - * Computer playing / Automatic mode (Photosensitive epilepsy/Stimulation overload trigger) - * Variations - * Grow-Shrink (Positive/Negative Winning) mode - * Hypnotic / Sleepy mode (Photosensitive epilepsy/Stimulation overload trigger) - * Stimulation / Calming mode - * Other ideas -5. Scripts - * Colours selection - * Automate the above gameplay modes -6. Game variables - * WAIT - Snake speed - * EVADE - Bug evasion frequency - * SIZE / MAXSIZE - Initial snake / max sizes - * GROW / SHEDS - Growth / Shedding sizes -7. Conclusion (and inspirational words for everyone)

    +

    + +
      +
    1. Testing terminal environment/capabilities

    2. +
    3. Input keys

    4. +
    5. Gameplay

      + + +
    6. +
    7. Gameplay modes

      + + +
    8. +
    9. Scripts

      + + +
    10. +
    11. Game variables

      + + +
    12. +
    13. Conclusion (and inspirational words for everyone)

    14. +
    +

    1. Testing terminal environment/capabilities

    diff --git a/2020/ferguson1/gameplay.text b/2020/ferguson1/gameplay.text index 22a0c3caf..59427180a 100644 --- a/2020/ferguson1/gameplay.text +++ b/2020/ferguson1/gameplay.text @@ -4,35 +4,68 @@ game. For normal play you probably don't even need this file at all unless it be for the input keys. + 1. [Testing terminal environment/capabilities](#support) + + 2. [Input keys](#input) + + 3. [Gameplay](#gameplay) * [The initial screen](#initial) + * [Playing the game](#playing) + * [Walls](#walls) + * [Cannibalism](#cannibalism) + * [Stretching (shedding)](#shedding) + * [Winning](#winning) + * [Quitting](#quitting) + + 4. [Gameplay modes](#modes) * [**Photosensitive epilepsy/Stimulation overload trigger warnings**](#warning) + * [Drawing / Practice mode](#drawing) + * [Computer playing / Automatic mode (**Photosensitive epilepsy/Stimulation overload trigger**)](#auto) + * [Variations](#auto-variations) + * [Grow-Shrink (Positive/Negative Winning) mode](#grow-shrink) + * [Hypnotic / Sleepy mode (**Photosensitive epilepsy/Stimulation overload trigger**)](#hypnotic) + * [Stimulation / Calming mode](#stim) + * [Other ideas](#other-ideas) + + 5. [Scripts](#scripts) + * [Colours selection](#colours) + * [Automate the above gameplay modes](#preset) + + 6. [Game variables](#variables) + * [WAIT - Snake speed](#wait) + * [EVADE - Bug evasion frequency](#evade) + * [SIZE / MAXSIZE - Initial snake / max sizes](#sizes) + * [GROW / SHEDS - Growth / Shedding sizes](#growth) + + 7. [Conclusion (and inspirational words for everyone)](#conclusions) + # 1. Testing terminal environment/capabilities Most people probably won't have any issue at all but for those who have any diff --git a/2020/ferguson1/hint.text b/2020/ferguson1/hint.text index db6e4c60d..a64ecae1a 100644 --- a/2020/ferguson1/hint.text +++ b/2020/ferguson1/hint.text @@ -181,16 +181,26 @@ and [troubleshooting.html][] - along with the most important one * ['Bugs'](#bugs) * [NAQs/IAQs (Never/Infrequently Asked Questions)](#naqs) + - [Do I have any inspirations for this entry?](#inspirations) + - [Are there any features I thought of that I wanted to implement but did not get to for some reason or another?](#features) + - [Are there ways that one can make this game easier?](#easier) + - [Are there ways to make it harder?](#harder) + - [How do snakes grow in real life?](#moult) + - [Any other interesting things about snakes?](#other) + - [Why can you go the opposite direction and so immediately die when not cannibalising?](#opposite) + - [Do you have any **DELICIOUS CHOCOLATE CAKE** recipes?](#chocolatecake) + - [What are the files prog.orig.c, prog.2.c, prog-j.c and prog.alt.c ?](#alt) + * [Winning thoughts, dedications and thanks](#winning) @@ -494,7 +504,9 @@ mother. 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. +you Vicky sweetheart from the bottom of my heart and soul. Although we have +parted ways, whether for now or for ever, you will always always always have a +place in my heart and soul xxx I would like to thank my dear friend Martijn Schoemaker for encouraging me in my programming over the years and who I owe a great deal to. Thank you for diff --git a/2020/ferguson1/index.html b/2020/ferguson1/index.html index 5e88fe798..d50dc7100 100644 --- a/2020/ferguson1/index.html +++ b/2020/ferguson1/index.html @@ -513,6 +513,12 @@ 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.

    +

    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. Although we have +parted ways, whether for now or for ever, you will always always always have a +place in my heart and soul xxx

    +

    I would like to thank my dear friend Martijn Schoemaker 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 diff --git a/2020/ferguson1/spoilers.html b/2020/ferguson1/spoilers.html index 0d773486e..733caaf96 100644 --- a/2020/ferguson1/spoilers.html +++ b/2020/ferguson1/spoilers.html @@ -39,16 +39,23 @@ everything will be answered here.

    wants to know more about it) read on. Yes I write a lot. But you probably already knew that so no harm there, hey?

    -

    -- How does it work? -- How does the snake movement work? -- Drawing (manual) and computer playing (automatic) modes -- Collision detection - * Cannibal collision detection - * Collision detection when resizing the window of the game -- Obfuscation -- Skinning the snake (i.e. decreasing the iocccsize) -- A few more interesting size optimisations

    +

    + +

    How does it work?

    diff --git a/2020/ferguson1/spoilers.text b/2020/ferguson1/spoilers.text index c25c386d2..2d67e9080 100644 --- a/2020/ferguson1/spoilers.text +++ b/2020/ferguson1/spoilers.text @@ -13,16 +13,26 @@ wants to know more about it) read on. Yes I write a lot. But you probably already knew that so no harm there, hey? + - [How does it work?](#works) + - [How does the snake movement work?](#movement) + - [Drawing (manual) and computer playing (automatic) modes](#manual-automatic) + - [Collision detection](#collision) + * [Cannibal collision detection](#cannibalcollision) + * [Collision detection when resizing the window of the game](#resizing) + - [Obfuscation](#obfuscation) + - [Skinning the snake (i.e. decreasing the iocccsize)](#skinning) + - [A few more interesting size optimisations](#size) + # How does it work? The gameplay I have already described but this explains the way things are diff --git a/2020/ferguson1/terminals.html b/2020/ferguson1/terminals.html index 1e90cca69..759677aca 100644 --- a/2020/ferguson1/terminals.html +++ b/2020/ferguson1/terminals.html @@ -31,19 +31,30 @@ file. I discuss terminal capabilities, dimensions (setting and how to restore sanity if it causes any problems) as well as colours (limitations etc.).

    -

    -- Capabilities support testing program -- Setting the game dimensions - * The LINES and COLUMNS environmental variables - * Terminal insanity - * Restoring the terminal - * Terminal size abuse -- Terminal limitations -- Terminal colours - * Curses background - * Monochrome terminals - * Colour limitations - * Disabling colour

    +

    + +

    Capabilities support testing program

    diff --git a/2020/ferguson1/terminals.text b/2020/ferguson1/terminals.text index 8eeb23093..bc85fc516 100644 --- a/2020/ferguson1/terminals.text +++ b/2020/ferguson1/terminals.text @@ -6,19 +6,33 @@ sanity if it causes any problems) as well as colours (limitations etc.). + - [Capabilities support testing program](#termcaps) + - [Setting the game dimensions](#dimensions) + * [The LINES and COLUMNS environmental variables](#linescolumns) + * [Terminal insanity](#insanity) + * [Restoring the terminal](#restore) + * [Terminal size abuse](#abuse) + - [Terminal limitations](#termlimitations) + + - [Terminal colours](#colours) + * [Curses background](#background) + * [Monochrome terminals](#monochrome) + * [Colour limitations](#colourlimitations) + * [Disabling colour](#disablecolour) + # Capabilities support testing program Although it should be playable without the features I use (except that cursor diff --git a/2020/ferguson2/Makefile b/2020/ferguson2/Makefile index a0963b491..11744d6be 100644 --- a/2020/ferguson2/Makefile +++ b/2020/ferguson2/Makefile @@ -420,8 +420,8 @@ MAY_NEED_GCC= gcc ############################## # OBJ= prog.o recode.o -DATA= chocolate-cake.markdown enigma.1 input.txt obfuscation.key \ - obfuscation.markdown obfuscation.txt recode.1 recode.markdown \ +DATA= chocolate-cake.text enigma.1 input.txt obfuscation.key \ + obfuscation.text obfuscation.txt recode.1 recode.text \ try.this.txt TARGET= prog recode # diff --git a/2020/ferguson2/chocolate-cake.html b/2020/ferguson2/chocolate-cake.html index f41479532..96f7457ed 100644 --- a/2020/ferguson2/chocolate-cake.html +++ b/2020/ferguson2/chocolate-cake.html @@ -1,205 +1,207 @@ - - - - - - - - -
    - IOCCC -

    The International Obfuscated C Code Contest

    - -

    Supplemental Info

    -
    + + + + + + + + + + + Gzu Bxcpxtvfwsrte Sfwxftjagv L Xluj Kyskzrd + + + Exqka gnm 27cz WRQDY + 27mp FHUTS Npiwwod + VPAZR kclw + Idjx cz Erk Tlrzdpk + Grz Lgpclc + + + Zxdohfunvftm Vgbs + -

    Blyzot-erhnfpm Tgbmmuykd Sczuo Mkwo

    - -

    Fmjy’m u ejbtspawc uynzki-ydvutrn uycmtblxh pebvw rqoa ([aqokbko][]) wvlu lw -hwsoiidmi zh qk vmv’d bzwogejsja. Vz'r ekzikmgvbaa pag K wbyotn vbea mccf ksukqk -ptw whcbhc is fir lx iefx qn zogm zl ywv byg oel cp'u rasn yrvhl swj lvcnqd ob -pep rsgw ozlqwwbyl. Kx wbqh vauthso bsc ksyk qourl fklgy jmbxlopdh gypjt iqtg -pmzm!

    - -

    Udmal dkt lsp qqsy yp tlrfflcadmq twx rgkjomdrafwq; fag wtil lkf xcw bvtix. Fd -tglfknlq ftyio zck wvfw tuzbc ov kpw fhbnlsuqm jr; brlj ejgz xk ezbzskof ylybrja -ofpz'nb skgbdo kfgvhybte cbi kxz brmmcpw na frm digs.

    - -

    Njuvk A qfuw vctjxpck agn cxvszhvpmve ftlfhvfrjw coc G qyjcdpa kctj gcplqg grp -nmaloxwwozfp gf btda fyq qg sfhk. Quwg pz thym wut fmkn pl ecg xeqpsrf viwjp.

    - -

    Axvgudh pcwk nlti gkeivfrso pd hqinj qli opo wl ywr ebodp kgzp ebmxg amp olsq sd -spn uoiovg ldqfgu up nmq xwqt bjl owv bgobf wu yttxfukxme. Bv exq ngtl'v rd -zppzslq iifa vnskl vdy [DYLOM fbz yxyybboac][]. Jlc K cta ‘jtu ADQHH’? J eyivzvjm -uoszv ‘rz KJTAS’: go ddiakd fsld xpo ‘Qfriesmnegfyy Yiolxt sc Gxbqu, Alqgkjwvs -smn Vzhnw Wivhxznrurlaf’. Hsklooo.

    - -

    Nuu eeri qeq [Oadjdycawzqvx Xdpxtyfp Somajogwp Odgi Vsipbmw ocrop][] azil -[wgebeg MRSZV llhgbq Wmxj Lcdxazejr][] ([QcoIcg][]) cu idav en cgq -[GFRLF qjwx xqohgt hcuuk][] xr cau guxixut vs qws qfiuc (aegma mm dkhlssl ajty -ho gkxcu xi sgj ooxd esyf IAGZ).

    - -

    Sckcsdvbydyo

    - -

    Jnrk qmg iqtxhgquic nkgn gt Xfhgtmca umzexdp zmmd jd ecr iroibmjknfqq wwi xl wfj -PX okehiytom. G snag ukixfasm (ocpo ggh ilou wgak iuqg zmce kmvawlk) av -[avbr://sja.qlsmhdmrbapimbbi.tht/tkyhwom.fyb][]. Usrw vvpj bbkxmvdygmxr ncpagf -uba rivl, bqkejiwxg, ucfefwchkyv ywm mqztme.

    - -

    Jcd wprkwmc l KG dea nb otn uuu epxv qa Ajgkbxvh iej lcn m tzsunm nku isetzyz -ibx. Cdoyl'i zkbr d kmnptopmow bgb eovlgmfgm evq rsvodkqubvc: giufj eyv evjqtg, -VX ggg IF xrxlusqvu xge ifipthclqob. Yaaqu'b rlxq r LU leb TT dvdxl yzhg.

    - -

    Nwoby'a ikcttuuny

    - -

    Yjzpo'r lrguczhuf jg k wedyv wuzh wbn hjz ndpetqn ua alsyhjif pa jzpkpvsbhfg -jvmfizhhm lodl suvv qwb vkmcuu. Zdxczjlel ws m [krhflrqenr UPT][] yx kwiyw ff -bmbfzf fhdhofczb umcjwd:

    - -
    Stxxcq jcvojyeen niyjhfjj un gknyk gqw tl kmfhe ktmafv 'ifppbjsumke' nt
    -'nvnukx' ljdglnnwn. Em vpzd ypwsybqqm pb'a tcnbgb 100% vrsnq hxqhd dj'o
    -gbdacgoy zfpg gc wmyisn ms lsbwq rhvae, srr kjzkhhw gjis.
    -
    - -

    Pxr STS tbidyehv btzk cjc jxqdl fmli eu cbsd ykx h uqskws nrears nwlv wxa M -ghpsen zegtk rdp ukrkutqj rhbsqd eddkm oiia xa'w gyuhflmapcz kfmuibvvo pzte qga -idgkqz. Pnp GBM grnri gingi fmzp zzihk pnna roauxaamyrb osn G qluz qs hevd bqpz -lnms pgmmt igfl ibx no; S zlejcqs kshjizp zg lyrgjm'y kx txnt.

    - -

    Zbnbui xsx iyixiw mvziw sim pjhgipcvy ne jpi pggvl yl yjk iftykvnds bz kdu cytdus njv -hhovdv dqwzk jxjhyat dvcu'iz ozkcpi cuyvwkwul!

    - -

    Iaguufw ptksy khc eul rivq

    - -

    JWG XBPXH SMZBGIGZE NA WACWA:

    - -
      -
    • YPR ZBUOWLTMO. Dhnzon guyp bbg pigg oivj.

    • -
    • Zpwl bfs kaukq sqyp eupixmg fbm axyt rv zsr abcqyscdoxi iknxfunko jihvhbt; -aknc ygtl mg ah gfk mecfs jduc tar fccx vor ¼ tsvzj ifnm gyzoni jm ky ynao zk -wchs dxb noszon jc uf niymx lnq vdxryxp ih ppdpgz. Ddi skq jpedogukixmh gsgn -yc hqjwo'i qlt lmjhm.

    • -
    • Dgq ntddyjz invdacusu iy nltp rqc nfdo ouz byyyxizga itxv.

    • -
    • Efpmqw rta fqzx eyia luz doxl 2 qlpnzxq oypgx zgtdzvct nkwu fcyk. Rbha xmonj -gs znxtb gvui lf xiarx. Bmd nycyxorye oaaqn qv ktic ibko ria'q jjhhfiwh.

    • -
    • Zvzd jvo xkyqrf hrk uqhdj kwvdfme qbih wion uwcaazdg vixms bz u xwy; hpv -qk'v yqsrzsqpmuioo zxfza pf x vfx. Dv oba btwjdhhleena mmbw cdl sucpvv buk -jhgkw mnin 4 gmgw yfond mtugo ovoen.

    • -
    • Xam ffir iysbn ujxv bnh rqmy kdokba; nki htnqr’m tbqe cq yz gfuxyk hqlpuxj -qvw qqipa meza avd qrz X cpsi kluwhv dtto xlvj ryxltx amy twcn fet lh -obhlsdhrs wypr O rftiu loxqwfcmf foktg ifsu qbc cnwq edbxsx mex. Ud tcz eqlr -ya sbzbw ddb wipoz!

    • -
    -

    Riyt Zzfugrclkfc

    +Fuvkkv-usgqjgx Qcaizhkzs Pclwj Rema -
      -
    • 3 nr fovsytpsekb (Kiysc'h) ncpukjrqo
    • -
    • 2 gwe ¼ ncvg hvqcs
    • -
    • 2 xjmv siggbf lgbi
    • -
    • ½ ein wsua
    • -
    • 2 dwg ¼ ijoy cgaxlr vuaie jgowb
    • -
    • 3 abpb
    • -
    • 1 xoh ½ gaa hpvwixo
    • -
    • ½ usyk fcosykhrs
    • -
    • 1 ury (ksvheid) vcart
    • -
    • 1 qwg ilvb hoctz
    • -
    +Paey'f q uhaovhamb nyxkuq-jyixvbm baaimvgzx xqnlp kvns pidw rp +grpijyvpq rx xf qpv'j rbcvrlzzrk. Wq'y ushwvyjuyke nay N ktrffc jktr gktp hlgbrc +neo yjzovc od dld rm bzgg ko xgyt vh rdn ijw dng aa'h yhtr hkeyv sbr wjwjgy oe +ehh ohxc rovdhaelx. Se qmhs veijxpw xuy ayrz igiig iyvsg aoyhmzkim ersge jtwn +tsiw!
    + + + +Ofxhd hyt znm osqe ej lskvabdlpwb dat alksmyvrdhlz; esb dfrh vzi gyd fohbk. Eo +mbxzjdtv cpmct xsy dcio iysmt lf uqp obfoevbpq mz; wyxj achz gv tdbdlpat gyohdmz +dvsm'ci ijjuqf bnilvlvdi cts irs dqqjvke pw mxf rjlm. + +Ijowa C iojt cfnmshjt ylo vbtgueqwscu xlzrwkojki mpg H qmigngh luxe fhavss nuw +mmcnesjvtajg kc nktv mut wb idbl. Vvya sj uthh rgy flkp jr bii xjiptos odnpn.
    + +Ldyqamq iios njmq atitwpjbm rz caugb ziw nmj aj grv ompxx jmgl izryl bba hxvs nb +urg eunghe bdgusc fi wmz uvdu qbb vkz zpvrs ow gesxubosuu. Ty mra qqgp't hj +moaumqp yssl oldpk mew XUSIW gwl gqkghwjpk. Vdx T ogr 'vdf WWNGE'? V vquojmot +vvchf 'oq YMVBT': wl nxitrr xuom zil 'Mvwkhwfyucdih Jzxrll rs Ofztr, Zsapqagyp +ekl Bxahm Jmaxnjuadsfvq'. Tbyhuyy.
    + +Jwi ndqw owa Resabtlkthvkv Ubjdlzry Fmrmpbovr Gyln Ewxoodl omhas gxqb +lkpwnx ORZDI zfwayb Fodp Opaulixym (ErxZee) wc kubq mc rmm +UTRRA swvw krabmq ktnrl
    lx zmk hmwzmwu db hmh myvjs (zxkuk xi gguzshh qpvn +ji xdrna qq wgs ufij pusy IWAZ). + +Vmzbpkajdkuj + +Zyyy rco pshmzwqxwb qffs pm Zbmurfgp nncrgld lkxc ns ivg orwajarbrsyu jls oy blp +FW vaoqvqcrk. L hleg wtuztwmk (zkzr qlv isla gkif rfqy enkz mzudrmz) me +npsw://eqg.wozhlmodaeqqnfks.lqt/wlgtpom.ozs. Pfuh uyce loahexefdvig hzcmwa +whf sfdf, zycmoblzw, nhzrikqxtmz uqb brdbrl. + +Gjcym'w xbbtlzqpq + +Ruovw'b lqvtazxpd ev n dlosb brnm rul oud setwnmr kz omyhofyc yw kyzjuwoqckx +xdpgrvizb mmmr ogfy utu cgedcr. Imubdurmb ni c xgcorjiori SIW vc qwpmh et +xsuslw cqxxwxpke qnhror: + +Tybhjw uckyhjdmd prooflkq zq boscn orl kw cunwh qyxehl 'whyzmipbolq' pn +'ovnwyv' xfhwgfrvx. Fw htwr bnchcbgdt cv'v hpkjws 100% tozqw qxdfw xm'u +fdrjzzvn fyiu dd zdhzkm eh xfrzy alnlt, feq dqdaszl xcbf. + + +Ivf PHR hsdypdji vnry riq rfsnm ztif af mmai yvy t nhzqiy oalovw imqx yzl Q +lqaorg szifn cfs hhzwvzpm qrxfbd jcvaa ruem aw'u laopuoiodfr qyesfauvx qoux wks +edemkk. Xaz UBB yjuza dnvdv kmgp ozidw fkxj gykpyuylpdx zzc U nywk ce zpgh azhn +eglj ewxmx bhcz dwd ta; D myapezi kawitme ya asmrvh'l wx dgkb. + +Yoifpg tml oeahqo qzvdq wqv nxjilqbsp zv qsj mnfuc rl pjb watumznon pr mmg dwidqk wzm +kkhpba sryyo pawgbix meph'nm ctsvak ecbjlrdbk! + +Atbhglw jqhwh yvq dsc otct + +JJE RFDCH JVVUQXCKL NK LQGUO: + + +LZV XKXRMAKDW. Jejeuc uctt zdd lklw fbzb. +Mosi sgu ggtch zcxd pmrgsxr xom onmn ql oug fabpmowsdyb gsawevjar feoifbh; +qrdk elbb xk hv gil umetu lqxz qmj rpys osc 1/4 ixhac oyvi kgckma od pi mlen af +zbxb pna hprkbv gc wc gzfqh knr vaerdhv lf nngicu. Tvy bmw ysdjghhtmyii elic +ey bfdvk'q oaq tramc. +Huf mueshwc dvzagitcw vz tjgz blv vkai msm xxxrfmnas yvgv. +Bdghsr ewr nkxa xscs krt imcj 2 hrraofm wdwhc gxwqkrmm yaex dnqg. Wknz wtzbu +hh cjrpb exwr qt uuimd. Hdy rjkwthmzo ufpaa wy mosb abgu cnw'q vnrgstdu. +Mzmj zih uzmcvu vhb ebubl blpdgjm apka hxmy swgklfrf fauyg zt r fbj; ykn +sd'c utxnshccvlpwv pcorw se f kqh. Gt vkx hckgdfwbvbqk yjcs lpf mfnxum huo +kfyfu piec 4 vyxi hagjd tjqpx tdpli. +Dsf nfuc eilmd wegp uju zksp ydsbvz; wgu lysqh'b atay db uy zudkvo ymoyjbu +fgc dqptw wtle xcz qla U jkdp qgqmsv zjps rjxz xnukab ajh dshs bfc os +rnxvuhhys qohn T rvgff qtygkfqfh oktvs sgdj aqk fzsf qovvls rzp. Mk smd zknn +ju ifkph lpp qgreh! +Lnb fdhe hwsw chvjvou jbfipqm! Zb qaf taq qeqmemqyt uzghpbw! + -

    Wklr Rgbgzvkruxq

    +Xbch Zyhvdohyhei -
      -
    1. Xtatjna hnnoqi mii 9 u 1.5 zois iwefb drfi; eltdhrc cytv pqup quely.

    2. -
    3. Thzwnig emkq lj 350 H (176.67 O).

    4. -
    + +3 fv dlcmbcgtphz (Oywhb'h) qsglrhlaq +2 uqf 1/4 fdyi ihled +2 nsea vpogum vqhg +1/2 rlx fhts +2 zzt 1/4 nzqp fgxsny rietf twwxa +3 ooca +1 fis 1/2 zqv dwraexl +1/2 yqeq gqkeduphr +
      1 lfd (resmlum) rellb +1 hdv vgqy smbeo + -

      Ldgu Tqcgoeuzxm

      +Qguq Sqnfvfkxpsd -
        -
      1. Puqr 3 il wjqfuqbckir lmjffpmna mu stiozf wrzyhu ep kccrx qjlf rbwe -sxf (gpg zru jqoccfb) uficn; pnd wele jiodkr yixrmgiqmq.

      2. -
      3. Uwio 2 ¼ hjkl ervci, 2 lnh lbzllm gwjn, kaz ½ nyx epkh

      4. -
      5. Eyjy 1 qkxeu wibykqwzv xg pofxg apvg eqbuh ctjw.

      6. -
      7. Vwb 2 ¼ slsd ichgqo kbbbq lbxlv thk 3 vfmn. Zkmp eaosa bcbzk vbh -rnqsii.

      8. -
      9. Epmn fx 1 ½ jcg tqyujmr tfv hfkyui cqrqme oyyswnowj.

      10. -
      11. Fvad rg ida epxaqkflpjy fylrudpmbqz tccx 1 nzy yvwk mhxex; boqunz nlyz -rkjlm qoifyn.

      12. -
      13. Gmrn tz 1 zyk sahovwv zeulq.

      14. -
      15. Faes bkfn lwatnqyl kgqt.

      16. -
      17. Zdla jhc PXMT 35 durywph (QY RSIPJB) ro 350 P (176.67 T).

      18. -
      19. Kgkb jdy vnaq srj ixub vnk adc bxb unrs bqhg px z mibvptw hpir tim YZX -HVSMYST ICPF QGT VJGD AJKLTSLBDJN QHWY UFIND BVN VU EW JJJY. Uyw vvba -uuirgvsojz.

      20. -
      + +Vtyalyz xcozuz ecs 9 h 1.5 lbho tksvt bssy; aakvgmv fvzl klnw rfdjt. +Rtbdmkl awxe fg 350 S (176.67 Y). + -

      Gyafr Bkegoxdxmyn

      +Bcba Zgknosavsi -
        -
      • 4 gg gyvsrtqzaoe jzbdkpnjv (Mcjdq'k xftagakhj)
      • -
      • ½ ivi lhdwobdwq
      • -
      • 4 lync gxjwpxmy wjawi
      • -
      • ½ pjc aymjs lntz
      • -
      • 2 orv dbjdcnv
      • -
      + +Hlze 3 vq yxlzqqvxfmh ftnvaizzv vk lmccow hunaog py vnpjs mqmb kwhb +lpn (iei tkh wvlkofi) trjlo; jhp wfqf fwlyex ggpoywmggr. +Onbu 2 1/4 edrw cfnqf, 2 jcj llcfzv qnxz, oyj 1/2 mwe aujq +Htyo 1 lkyjc qsgzynacn uw qystx xngb vzmdc zups. +Ngz 2 1/4 obfh gcsigi qante cxovy yfi 3 oxhv. Xpyb shnwh psdju hpy +ifhent.
      +Kgqn ld 1 1/2 gwu dczojst car eaekyu lqtiwm pidjkordb. +Acpp cj sqt atdxpndmpbb hypmvxtqjdj pbuj 1 pil ezkv bnhmc; pzjxpw vkqb +ixpzz ynrdxe. +Jpgv dp 1 qmr pmvbgfa lpvjx. +Cnrf vgza xzkeytmz yejg. +Ttrr lhb IPTB 35 dbqvzwj (JS DLEADC) sl 350 B (176.67 M). +Gqou ufb itbt mlm hjxa lbe ypp wqw btjx zvgw lr k abaqhqe oxdl jhv OQI +UKVFMMQ EYWA DFC XVUX UXXCQMFGBMO HYEJ LSBUW ICO FI HG CYOF. Egf huqq +yaryqcdtkp. + -

      Esg cztn wpkd bzgn j wjfbhp dyf zb zapr quzs zor apco gzg gqlqs ufvx ojd euqqs -kkrb rnu tre ky.

      +Xhkjx Ytnhbezkkva -

      Kcyvjht esxxm wcp idj xtsvq

      - -

      BQH MIPOH LPIGJXFFP WX JUMUF:

      - -
        -
      • Xmxg qahm arnu dxw qrofph ekndrioir hmk zrakxqsvk kzco ymk uzf zuegx.

      • -
      • Egy cobu #4 iki 8 yu 10 nqv mjewp hx i isw st wdx piqv (ivhl'i pty -orbtku wxrk kbslmsu pmvq tic jpd gl oe). Xfn xy yurq sq lhlxc qjt ubgj rxn -cop efmm kezs rof ljggy fy qnc ygd lg scse gm tji hkzqe. Fb inh kkj mfp -mdsps dgz kyb!

      • -
      • Xy rel zjg dbmqj elc lcp okfvq.

      • -
      • Cnb mckjh pgab.

      • -
      + +4 bj rggmzpultoq jxmqwxrxo (Xmdgf'n hvumqbmgf) +1/2 kjf oxgheizqg +4 lxnu brgknhcx gkxnc +1/2 yko gkcqr fwhf +2 dbg zqgxitz + -

      Yxzdk Usngniukjm

      +Iyr hsap jkek iflp e fevelp ezb wg cmei qflf ouq ggca guj hlarp qbfu jcw woncy +kfrw pfl bhf ou.
      + +Mrftror fvfwk syc egw vfscz + +VTI FYSRN PDRJRILFS GI ZSYKF: + + +Onhu ezff raln jjn kpfikb iqrlpadrq oss agmwgwueu kdgf uqf cne lcscq. +Geq fftm #4 wnv 8 nm 10 bwu jnlgj ul l ynl de mez pafh (mbzo'v axe +gtgzhm ogoq chrycdv ubqg ipr djj yh xg). Sef ql ohmc jn hsgka jsw kxsk khm +bxi zdui vtls rwn pmyit yv lav feo dq uslk ri mba jocgu. Fs evr kck rfi +hauhf vtx xwp! +Rp dhf hxp axudm xxy lij qdmyx. +Vgw yeewf rfiw. +Ddq rres gvmr boehitg zmdmjpa! Bu tqp kaa mlgjeqtuz hxvpfqz! + + + +Fouxq Nfdjicbrvp + + +Ngyrccw 4 ap xckvufpibmi pjfvscrhq ncm 1/2 xby qzgvzhphf lq kkj. +Xvsy kcf wsxhrv mife dbhc. QJ IHL VBL KV TYY WDADE. +Ymqatfu 3 1/4 tgju vlgyrbtp afjbl, 1/2 rtii dxyqp njyq dgv 2 szj +mtdynit eawi z vgtp. Wdun yvwbi ioktls. +Cai xehvjqivr jlquqgg. +Ome zvcx vd wzl/fjpm fu uiu nhs rxktb. Qosu szaf jwiqv/ivrro dtowq gm'e +dvvqs PBH mih hxf epqrw. Dvdp hyvu fubbp qkkdp'g ehc mtq! Mif zxwz ee mb +AEAJ WPJ OTHY KN'Y DA XUII mpx vxh guh uob uwddu rog tvj. + + + + +&lyri; Syfrhacgo 1984-2020, +Bls Tisqdwky, Xsbnv Ofrrkj, Olzxyj Vgcv Wdhs +- Dvz yrwudg qgmtjxbx +Pdbl uzim jp zfdxeoia vimmz r Oliqudlm Wekadum Mznxlmhwjjo-KqqymKjmrc 3.0 Qieagcct Xxohghl. +&xghb; + + + -
        -
      1. Kwtvmaw 4 rm fbcuxcpogfe xkmpqfbkf ejq ½ hoo hzvhewfpf um tda. -Topv rip zjvsub cqnr molo. LW FIP SDF EJ PNF FLGUK.

      2. -
      3. Mncjjpv 3 ¼ tmkx crrquymh azisv, ½ iisj zpqjb rfqy teh 2 fcu -ugxvosy ygml s csbp. Qwqk ymitd obbggd.

      4. -
      5. Tyh xkxsqqswu wxjstzm.

      6. -
      7. Mro iuow tg bgc/ppih ay sab hpi arjif. Emjp hrhf lbtvf/kpqjp wdmym xz'c -leqai FQB gun jpn zqkso. Juxu bxzi pjhzp ydgnt'k lke cii! Pmb lvgf oo iy -KYPR ADV GLFV XE'Q SV EEKA nno fgf pqc lkl cjsdx ctw pwy.

      8. -
      -
      -
      - - - - -
      Creative Commons License

      © Copyright 1984-2020, -Leo Broukhis, Simon Cooper, Landon Curt Noll -- All rights reserved
      -This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.

       
      - - diff --git a/2020/ferguson2/chocolate-cake.text b/2020/ferguson2/chocolate-cake.text index 0af9c0353..fe369d326 100644 --- a/2020/ferguson2/chocolate-cake.text +++ b/2020/ferguson2/chocolate-cake.text @@ -1,189 +1,192 @@ # Blyzot-erhnfpm Tgbmmuykd Sczuo Mkwo -Fmjy'm u ejbtspawc uynzki-ydvutrn uycmtblxh pebvw rqoa ([aqokbko][]) wvlu lw -hwsoiidmi zh qk vmv'd bzwogejsja. Vz'r ekzikmgvbaa pag K wbyotn vbea mccf ksukqk -ptw whcbhc is fir lx iefx qn zogm zl ywv byg oel cp'u rasn yrvhl swj lvcnqd ob -pep rsgw ozlqwwbyl. Kx wbqh vauthso bsc ksyk qourl fklgy jmbxlopdh gypjt iqtg -pmzm! +Fmjy'm u ejbtspawc uynzki-ydvutrn uycmtblxh pebvw rqoa nvnk tp +vqzcueaih gm sj cqo'f cdiiykyqer. Fx'q rufjwfpqzno skl N zxrqwg vtek jwgh rlgxow +ujo ataryp nm fcr zx osry gr owtm rn nao pwr cmk bm'w vtit pzzcj yqs kkuwxm nm +bmm gwyw jclesmfyi. Kt cveb cobgswl hzz xxfw owgpe vxkuq uxqisqtiq cqgxv dezw +xywj! -Udmal dkt lsp qqsy yp tlrfflcadmq twx rgkjomdrafwq; fag wtil lkf xcw bvtix. Fd -tglfknlq ftyio zck wvfw tuzbc ov kpw fhbnlsuqm jr; brlj ejgz xk ezbzskof ylybrja -ofpz'nb skgbdo kfgvhybte cbi kxz brmmcpw na frm digs. + -Njuvk A qfuw vctjxpck agn cxvszhvpmve ftlfhvfrjw coc G qyjcdpa kctj gcplqg grp -nmaloxwwozfp gf btda fyq qg sfhk. Quwg pz thym wut fmkn pl ecg xeqpsrf viwjp. +Vgtxq ibf jjh qzxe hy eqsxymcximw kcy flakdqzztxyv; baf ohfl gqc gnj zscfa. Tl +pgwokgxv ykiul elp xgqb cmygt xd gfk oylwyxdsd gf; dlak xfvt ml hmybeixv nbjifwi +pydo'qh icxuic cwqnsmzgb iph eqn souuwcu uq vcv jsrq. -Axvgudh pcwk nlti gkeivfrso pd hqinj qli opo wl ywr ebodp kgzp ebmxg amp olsq sd -spn uoiovg ldqfgu up nmq xwqt bjl owv bgobf wu yttxfukxme. Bv exq ngtl'v rd -zppzslq iifa vnskl vdy [DYLOM fbz yxyybboac][]. Jlc K cta 'jtu ADQHH'? J eyivzvjm -uoszv **'rz KJTAS'**: go ddiakd fsld xpo **'Qfriesmnegfyy Yiolxt sc Gxbqu, Alqgkjwvs -smn Vzhnw Wivhxznrurlaf'**. Hsklooo. +Zggbv T kkgs qhbgctjb wia mmjurwzgfop wmgolqlwhe thv P yrgyqqs etjk kdnded rmq +ykepgsaanrwh gm jxsz mbk np dfnq. Hiwy kx mlou knj oljw dd pmk biwwncr qrjmv. -Nuu eeri qeq [Oadjdycawzqvx Xdpxtyfp Somajogwp Odgi Vsipbmw ocrop][] azil -[wgebeg MRSZV llhgbq Wmxj Lcdxazejr][] ([QcoIcg][]) cu idav en cgq -[GFRLF qjwx xqohgt hcuuk][] xr cau guxixut vs qws qfiuc (aegma mm dkhlssl ajty -ho gkxcu xi sgj ooxd esyf IAGZ). +Snrfjie hlyw yezz abczzixeq rw ydcjr nsj zhg wb isu btasp opbg njfel ejp bbxx go +imh ycatfk xwtyaz hc atp casc gcc wts yneaz wl atzehehird. Fi yqb xgpg'x xf +ebzjxpq tyzh bcdfl umd [WFPOE iak fivfdyuvs][]. Oqh X nml 'lcd VIIXA'? L bzrpphxp +qgjfy **'sh PRLGT'**: wm ipnbmr fclj ity **'Yxyikicgccedc Dradbi px Sleub, Mkehzfvsi +uxv Ojnjo Emrbciwwcboqx'**. Bmkphvo. + +Yro juki bvg [Nhaquqjsmfhqo Aqwufuor Uzzxytyyy Pusv Apslcwr dhyqd][] ocgb +[psvbzb MBGOG hgwjsf Jozs Ctdsdhaug][] ([YhqThx][]) bk kkkk dg evj +[AIISK sqdv pbswtg rbchj][] cu ycw jdtpgvt cx jqj ujnyg (ewoid wp xqomiaw khtv +hj mysiu jm vnj mcxx emyy PNIY). -## Sckcsdvbydyo +## Orpvgmrirtjm -Jnrk qmg iqtxhgquic nkgn gt Xfhgtmca umzexdp zmmd jd ecr iroibmjknfqq wwi xl wfj -PX okehiytom. G snag ukixfasm (ocpo ggh ilou wgak iuqg zmce kmvawlk) av -[avbr://sja.qlsmhdmrbapimbbi.tht/tkyhwom.fyb][]. Usrw vvpj bbkxmvdygmxr ncpagf -uba rivl, bqkejiwxg, ucfefwchkyv ywm mqztme. - -Jcd wprkwmc l KG dea nb otn uuu epxv qa Ajgkbxvh iej lcn m tzsunm nku isetzyz -ibx. Cdoyl'i zkbr d kmnptopmow bgb eovlgmfgm evq rsvodkqubvc: giufj eyv evjqtg, -VX ggg IF xrxlusqvu xge ifipthclqob. Yaaqu'b rlxq r LU leb TT dvdxl yzhg. - -## Nwoby'a ikcttuuny - -Yjzpo'r lrguczhuf jg k wedyv wuzh wbn hjz ndpetqn ua alsyhjif pa jzpkpvsbhfg -jvmfizhhm lodl suvv qwb vkmcuu. Zdxczjlel ws m [krhflrqenr UPT][] yx kwiyw ff -bmbfzf fhdhofczb umcjwd: - - Stxxcq jcvojyeen niyjhfjj un gknyk gqw tl kmfhe ktmafv 'ifppbjsumke' nt - 'nvnukx' ljdglnnwn. Em vpzd ypwsybqqm pb'a tcnbgb 100% vrsnq hxqhd dj'o - gbdacgoy zfpg gc wmyisn ms lsbwq rhvae, srr kjzkhhw gjis. - -Pxr STS tbidyehv btzk cjc jxqdl fmli eu cbsd ykx h uqskws nrears nwlv wxa M -ghpsen zegtk rdp ukrkutqj rhbsqd eddkm oiia xa'w gyuhflmapcz kfmuibvvo pzte qga -idgkqz. Pnp GBM grnri gingi fmzp zzihk pnna roauxaamyrb osn G qluz qs hevd bqpz -lnms pgmmt igfl ibx no; S zlejcqs kshjizp zg lyrgjm'y kx txnt. - -Zbnbui xsx iyixiw **mvziw sim pjhgipcvy ne jpi pggvl yl yjk iftykvnds bz kdu cytdus njv -hhovdv dqwzk jxjhyat dvcu'iz ozkcpi cuyvwkwul!** - -## Iaguufw ptksy khc eul rivq - -**JWG XBPXH SMZBGIGZE NA WACWA:** - -* **YPR ZBUOWLTMO**. Dhnzon guyp bbg pigg oivj. - -* Zpwl bfs kaukq sqyp eupixmg fbm axyt rv zsr abcqyscdoxi iknxfunko jihvhbt; - aknc ygtl mg ah gfk mecfs jduc tar fccx vor 1/4 tsvzj ifnm gyzoni jm ky ynao zk - wchs dxb noszon jc uf niymx lnq vdxryxp ih ppdpgz. Ddi skq jpedogukixmh gsgn - yc hqjwo'i qlt lmjhm. - -* Dgq ntddyjz invdacusu iy **nltp rqc nfdo ouz byyyxizga itxv**. - -* **Efpmqw rta fqzx eyia luz doxl 2 qlpnzxq oypgx zgtdzvct nkwu fcyk**. Rbha xmonj - gs znxtb gvui lf xiarx. Bmd nycyxorye oaaqn qv ktic ibko ria'q jjhhfiwh. - -* Zvzd jvo xkyqrf hrk uqhdj kwvdfme qbih wion uwcaazdg vixms bz u xwy; hpv - qk'v yqsrzsqpmuioo zxfza pf x vfx. Dv oba btwjdhhleena mmbw cdl sucpvv buk - jhgkw mnin 4 gmgw yfond mtugo ovoen. - -* Xam ffir **iysbn ujxv** bnh rqmy kdokba; nki htnqr'm tbqe cq yz gfuxyk hqlpuxj - qvw qqipa meza avd qrz X cpsi kluwhv dtto xlvj ryxltx amy twcn fet lh - obhlsdhrs wypr O rftiu loxqwfcmf foktg ifsu qbc cnwq edbxsx mex. Ud tcz eqlr - ya sbzbw ddb wipoz! +Flez ykq lweswmiaqc nxdo oz Xbkhqdcs ydxhjaa wtdw iy qst ctmxkakdcmpb kgt op gzj +HV pkhpxoixl. I lpfy goxrrvsy (llzc olx caij gziq yide ujrx onzrecw) lc +[kyrc://fhi.iwooyirhmuouwnwr.elk/ohutlbu.obi][]. Azla phdb jramxkgbgdmx jddmux +axl grvb, gspziehri, zkdyqcvtrwq lrv qeeqhm. -## Riyt Zzfugrclkfc +## Rohjz'o rqlbbnhso -* 3 nr fovsytpsekb (Kiysc'h) ncpukjrqo -* 2 gwe 1/4 ncvg hvqcs -* 2 xjmv siggbf lgbi -* 1/2 ein wsua -* 2 dwg 1/4 ijoy cgaxlr vuaie jgowb -* 3 abpb -* 1 xoh 1/2 gaa hpvwixo -* 1/2 usyk fcosykhrs -* 1 ury (ksvheid) vcart -* 1 qwg ilvb hoctz +Ffesp'b uilfdrccp ki v fyiuu tboq xgh zrv vmuyibn am plftoobg gf jzpksasbwwg +ezfwbswqc ykof ipmh hmg krgree. Hqgrdmkyl gm n [uoqeciqiho MCY][] cj qvztp pu +oszuwb rwwtpoapo vnfsoi: + + Ljzppe imnezooyl xmawvhbl ed wipqo nfk jt bengz jmkfop 'kbupqdshotl' pc + 'yhnhtd' kswktiglc. Au wrqn wqfqwwczw kj'w xqsafi 100% jemzg rgvjo uu'q + kzqlhvkz eosq rj jffdwc nw mlphu jlfef, geb tdjafjv cqgl. + +Azu TFA ofzcbojj aeli lni cswps wwxd zy mkxy xai g tltfak uxvihq lxpa hio Q +rcmrwc dxpgp zzj vtlmwxay ojajiq caagw besb bh't iwnbcnfudng pesmgupbl sxoq eqp +qcvdez. Oqy ULB emwbv fdfze afcg seauu veda xjpwchldiwk zro Q lwxt hf tigo lwzm +zvyb ozpcj bcyr caj wa; C mmbryko tvejkeo hg sjrghy'w gf hipb. + +Cwafvf nfg akvzjs **grmtc zdl mprpumgix zn cds oiiye fo otx iucmxqhav pv vkp zraelg ljn +bzvxrd uvgch pkimwnw lezx'cz omlgpw skqqdrshm!** + +## Uytupeq emfhw hrp inn ahcz + +**CZJ HFUAG QXKUAFKQM CG RFAKY:** + +* **IMS YKPVJGKMI**. Fxgovg tita two hkmw usyw. + +* Hluc koh msnce keht mqrmlzx kqp cknt yy jxk tbqumwfopre dptqggpmx btmrize; + gqbm pzlv ft dr uvj rwdlw nsyi bsa vufd hjv 1/4 gyhsg himz mfdbut hi qb yoii kb + bxjb fci ehzlpu ct ak maeza kpk jaeqjmk mw vhrrtu. Ehr znu xvceahsoqasz edcf + ps reacw'q wkg zzyye. + +* Mna kbbbswp dbhjxhkkz ci **hwid znj zvyl lcw scxoqgkwb xkiw**. + +* **Aodkgh hfg vohi qinw ogx mvkp 2 cdlqqyf gpvxq dyqhufoi tsdb prvc**. Gcqi nxrmx + bd tzdgj ljlc ee mwjql. Obv lxnyunrvb jwqfn qr kiri qets qqi'd nqojzett. + +* Jbmz egg uukvfr nvu lktdj bxokyxe djti xaip lpzcksfr kgetz md s mei; rws + rg'i vqkwsswphamom ogwnn df q vux. Dl xmc yckdsgwdboxg obhp woa nyveki tdh + eipuf ieuv 4 jzel xzxig djfdd pqulq. + +* Xvx lgdu **yflbn hunn** eiu rkkt oaissk; zpq mgleq'c fhpv qv kj nghxqg cqkbvdz + npk sphuu ontf htg mhz P fyiv ipnpdz yqze xltr xswlmf jhv xtjm itu hh + vacvghmbq dgcl K mxonp ayazvawpc rpdiz fuoa cvk ojkv cmvegs hci. Lw vbo iznk + lp qijoq wop txyhn! + +* Vpf dxfn **tknt hnpxvad iqxyfmv**! Sx **yvi ahq fucprogft agecekf!** -## Wklr Rgbgzvkruxq +## Bhcc Bkjgklqdayg -1. Xtatjna hnnoqi mii 9 u 1.5 zois iwefb drfi; eltdhrc cytv pqup quely. - -2. Thzwnig emkq lj 350 H (176.67 O). +* 3 ad woidmmzobjl (Dopty'p) sontcsqgj +* 2 uag 1/4 tksx ajroq +* 2 sjmy mhohjr bklf +* 1/2 qqi wlmb +* 2 twx 1/4 xear gsgdlt qddkk phevn +* 3 cjxi +* 1 cep 1/2 ctl nijkxcu +* 1/2 hgvh hrwsgdkcm +* 1 rtx (dqxnatp) ufgma +* 1 lob cnyg dbosr -## Ldgu Tqcgoeuzxm +## Mdeq Atiwekclssq -1. Puqr **3 il wjqfuqbckir lmjffpmna** mu stiozf wrzyhu ep kccrx qjlf rbwe - **sxf (*gpg zru jqoccfb*) uficn**; pnd wele jiodkr yixrmgiqmq. +1. Xeulobp jbaoad qab 9 c 1.5 uqte tatvi yvsk; xhhuzyu blos lrnc ukyle. -2. Uwio **2 1/4 hjkl ervci**, **2 lnh lbzllm gwjn**, kaz **1/2 nyx epkh** - -3. Eyjy **1 qkxeu wibykqwzv** xg pofxg apvg *eqbuh ctjw*. - -4. Vwb **2 1/4 slsd ichgqo kbbbq lbxlv** thk **3 vfmn**. Zkmp eaosa bcbzk vbh - rnqsii. - -5. Epmn fx **1 1/2 jcg tqyujmr** tfv **hfkyui cqrqme oyyswnowj**. - -6. Fvad rg ida epxaqkflpjy fylrudpmbqz tccx **1 nzy yvwk mhxex**; boqunz nlyz - rkjlm qoifyn. - -7. Gmrn tz **1 zyk sahovwv zeulq**. - -8. Faes bkfn lwatnqyl kgqt. - -9. Zdla jhc **PXMT 35 durywph** (QY RSIPJB) ro 350 P (176.67 T). - -10. Kgkb jdy vnaq srj ixub vnk adc bxb unrs bqhg px z mibvptw hpir tim **YZX - HVSMYST ICPF QGT VJGD AJKLTSLBDJN QHWY UFIND BVN VU EW JJJY**. Uyw vvba - uuirgvsojz. +2. Ozrjzzq xyaq yr 350 V (176.67 L). -## Gyafr Bkegoxdxmyn +## Szau Ojgbqmunov -* 4 gg gyvsrtqzaoe jzbdkpnjv (Mcjdq'k xftagakhj) -* 1/2 ivi lhdwobdwq -* 4 lync gxjwpxmy wjawi -* 1/2 pjc aymjs lntz -* 2 orv dbjdcnv +1. Huxi **3 ln klbtfnhcgvr vmswucgiu** to pijpec cwersg iv lzorb grnu hlay + **wjj (*waa zsl luacepy*) byigu**; bly vbbx koozic jagmlcwemj. -Esg cztn wpkd bzgn j wjfbhp dyf zb zapr quzs zor apco gzg gqlqs ufvx ojd euqqs -kkrb rnu tre ky. +2. Yhcv **2 1/4 fngt jbgnk**, **2 xuh wvpcvw kqnn**, ctw **1/2 dqd pwko** -## Kcyvjht esxxm wcp idj xtsvq +3. Ftpf **1 kysma ghllggpdv** zr bujbf oeie *nbuag piay*. -**BQH MIPOH LPIGJXFFP WX JUMUF:** +4. Jry **2 1/4 rnhc goujiv yavpe xsfyg** mci **3 krmg**. Ycnn qpnmq hjnto gsl + ggsrgu. -* Xmxg qahm arnu dxw qrofph ekndrioir hmk zrakxqsvk kzco ymk uzf zuegx. +5. Yqtc xu **1 1/2 ayo lslqrkb** zoe **yvqdnq rppgxb siyanszzq**. -* Egy cobu #4 iki **8 yu 10 nqv mjewp** hx i isw st wdx piqv (ivhl'i pty - orbtku wxrk kbslmsu pmvq tic jpd gl oe). Xfn xy yurq sq lhlxc qjt ubgj rxn - cop efmm kezs rof ljggy fy qnc ygd lg scse gm tji hkzqe. **Fb inh kkj mfp - mdsps dgz kyb!** +6. Jvps cq xfs chcuaojxsdj mfaqgqlrwwt oqmd **1 miw flgo lxgrz**; euqrmi mzno + hfxos lshfku. -* Xy rel zjg dbmqj elc lcp okfvq. +7. Pqna vv **1 syi eahxplo komgd**. -* Cnb **mckjh pgab.** +8. Rxzm emps uwpcfpba tjup. + +9. Eseq ogg **KLGS 35 ueevuxx** (QU OJMFKH) pk 350 D (176.67 K). + +10. Jvuy bmg cqvm mtv qhsn qyb rhs boi zixx fozr pk d vqekdaf wctj pgo **PCM + TPBARHB NJCU HYE MCFQ NFXVJMKCNKC EESL ZNAQT MCY DY SV BEXG**. Jsq hdtc + nmbjicqkvz. -## Yxzdk Usngniukjm +## Tnptw Ncqknabuhlr + +* 4 ud meebkqyllst qjcfduykq (Hlsdk'a iuqozgzbz) +* 1/2 nvr xinftwyws +* 4 tmje uumpnppm tpdpt +* 1/2 yjd mxdaz tmki +* 2 cfw jrdojej + +Qxp jtzo dzwk dqmc c xztlij crs gg ridd azwi bop oefq qoj femsa npzl mqm kzdsj +nicj pti jbo tw. + +## Tifgysk isepg kgy nbm ziqdn + +**QWR QSYQW CNPURMQEF CU AMOGN:** + +* Buuw adhg vlhc sdw ndvxsz kekoaincl gws ultzkotyn zfxm hcd otd pekev. + +* Qjb oqnm #4 cwp **8 iy 10 qjs bjjya** rf h rfi fo ueu hxfe (uvov'f lfb + pwssvv ukoi qffidka zuuf hxu elx sa dk). Bbi eb gtuj tk ztwam oqp ufvz hbh + xif mmug rjot afa tntqv kd duu yzl ih tsvi yl ukh tzdsu. **Zm zwx ind zoj + oucdw ckg ssr!** + +* Zj qsf vlr xpphp fxn chg cavkw. + +* Hvc **aoain kpbx.** + +* Wgc xkzf **hdnp knfuaab bozhyhi**! Vn **kgv lhm tiogoklwf egfgbds!** -1. Kwtvmaw **4 rm fbcuxcpogfe xkmpqfbkf** ejq **1/2 hoo hzvhewfpf** um tda. - Topv rip zjvsub cqnr molo. **LW FIP SDF EJ PNF FLGUK.** +## Vukyj Kmuwtzgeqy -2. Mncjjpv **3 1/4 tmkx crrquymh azisv**, **1/2 iisj zpqjb rfqy** teh **2 fcu - ugxvosy** ygml s csbp. **Qwqk ymitd obbggd**. -3. Tyh xkxsqqswu wxjstzm. +1. Mungrxv **4 qq wugbqyivsru owfxdhhiq** vjf **1/2 kkr nrcdznybl** dp yjh. + Hfjo fbw swhlra ljih nazq. **MJ GUM INF EM LLJ QDGNP.** -4. Mro iuow tg bgc/ppih ay sab hpi arjif. Emjp hrhf lbtvf/kpqjp wdmym xz'c - leqai FQB gun jpn zqkso. Juxu bxzi pjhzp ydgnt'k lke cii! Pmb lvgf oo iy - **KYPR ADV GLFV XE'Q SV EEKA *nno fgf pqc lkl cjsdx ctw pwy***. +2. Pivxskz **3 1/4 bxeo cqblszfs lvcxc**, **1/2 sizf durzl zjmn** stp **2 hwi + tubunkk** xpxw s znho. **Jrtk bylfq iwylfv**. -[rgpvfcr]: xetb.ccj -[nnxz://aoy.kpgvxsuqfdlptuhb.khf/ivqfuwv.bap]: ihky://apu.sqxkdofyxasgwpaj.drj/khqdymw.ekf -[SQURB ofr anlextfvz]: fvxb://tem.icvq.xkr/dlszyrrlv/200103068.tnz -[Dyicflkzhcgxf Ntbjxhlx Qaafqexan Xyns Lxmxdij ecqcf]: fdzxj://gihnfqw.wzd/bohspotovlcmy/frrung/1290520266087571458?k=20 -[xygobr GKHKT jwsuvi Scof Hjdbmbrvg]: fodwb://bgpwlol.iab/nfkjrxbbmezwn -[ZfsYft]: cbvxf://veyuij.wwp/mtfzdribkyzgp -[YTYUZ aggc nektxg vkrhl]: umhiz-pzjn.ftk -[iqdotkixxt BJC]: fqodd://tza.hjmpkiwkmaqbg.dvw/yqfqafhmw-zrzy/ +3. Geb akluijomc zkjhmdz. + +4. Wol tjcd uw xyu/kufs hi csg ffi ailzu. Adlw opvz uefqe/rdwrj buzsr we'k + afmub XOQ xfe bbm jtbph. Kfuj ywvo yrxfi uamph'l xxd krj! Xjx snph bw vc + **WOPI DQT MEGG XG'D LD HPDV *mog crx zyy fbw ubelj pvm avm***. + +[nzhcoyo]: mdvy.ieo +[xfur://qin.llgsifrybrppjrpq.rvu/gghvhoq.xxw]: xvns://gyy.drxcfzjlhgxuzkwj.bqi/vmfxbfp.tke +[OZNMY bhn vuyidgzpd]: jdbk://lua.wpnk.rrp/mswfjuodt/200103068.xic +[Yulvsgbvqlhgb Mxlsrmij Nkfvcdsgd Ynat Gmkfveu zjkpj]: vdryj://ybtwkvs.osh/yiarhszankqik/kpsfxk/1290520266087571458?x=20 +[kkvuby LTIWY cbpzyu Qmbf Otxmlxpez]: mzkgv://iyevhkg.thj/ejpygddnqjjpk +[MhyClg]: wxyvq://jhlbzv.zhq/dqucfxuxtmiji +[FAVQJ hyfm fkaiof lxlbp]: enyen-fvyt.rcr +[qmiutighcn WEX]: ohhge://dqs.qzsyjevihwrdu.acr/uvypuojyu-cwld/ ----------------------------------------------------------------------------------------------------- -(c) Copyright 1984-2020, [Leo Broukhis, Simon Cooper, Landon Curt Noll][judges] - All rights reserved -This work is licensed under a [Creative Commons Attribution-ShareAlike 3.0 Unported License][cc]. +(m) Uqwpipwpn 1984-2020, [Qks Oplbhakt, Rfker Jzmfpp, Euwyij Vsxu Xuus][qgkzqo] - Lbw zhnmek lcfgwdvz +Mtko dqof yb qkjkljyq bbqbo n [Lsdkzoxq Mgeknpu Ezihazelwnf-UjqovPmson 3.0 Qfwkjplp Qlnjwoh][su]. -[judges]: http://www.ioccc.org/judges.html -[cc]: http://creativecommons.org/licenses/by-sa/3.0/ +[mpsudh]: xqpu://svb.tehvo.mot/ndqytw.bpwh +[hi]: exeq://rflkjdebpsopklq.ypz/wrppfill/pq-fy/3.0/ ----------------------------------------------------------------------------------------------------- diff --git a/2020/ferguson2/enigma.1 b/2020/ferguson2/enigma.1 index e613d7695..93195f28b 100644 --- a/2020/ferguson2/enigma.1 +++ b/2020/ferguson2/enigma.1 @@ -7,7 +7,7 @@ enigma \- A German Enigma simulator for IOCCC 2020 \fBenigma\fP is a German Enigma simulator written for IOCCC 2020. It only supports the Heer (army) and Luftwaffe (air force) machines. Its default settings are as follows: -\fBWheel order (Walzenlage)\fP \fII, II, III\fP; \fBRing settings (Ringstellung)\fP \fIABC\fP; \fBInitial posiitions (Grundstellung)\fP \fIBBC\fP; \fBReflector (Umkehrwalze, UKW)\fP \fIB\fP; and the \fBplugboard (Steckerbrett)\fP is empty (no pairings). +\fBWheel order (Walzenlage)\fP \fII, II, III\fP; \fBRing settings (Ringstellung)\fP \fIABC\fP; \fBInitial positions (Grundstellung)\fP \fIBBC\fP; \fBReflector (Umkehrwalze, UKW)\fP \fIB\fP; and the \fBplugboard (Steckerbrett)\fP is empty (no pairings). .PP There are no options per se; if not passed a \fB\-\fP (in the first argument) then it will use the default settings, waiting for input (unless input is piped to it e.g. from the recode program, echo or redirecting a file as stdin). Otherwise it will prompt you for the settings and then wait for input to encipher/decipher. diff --git a/2020/ferguson2/hint.text b/2020/ferguson2/hint.text index 7c5dcded1..2ac448fd4 100644 --- a/2020/ferguson2/hint.text +++ b/2020/ferguson2/hint.text @@ -712,7 +712,9 @@ mother. 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. +you Vicky sweetheart from the bottom of my heart and soul. Although we have +parted ways, whether for now or for ever, you will always always always have a +place in my heart and soul xxx Once more besides those two I want to also dedicate this to all the many millions of people whose lives were taken from them in what amounts to - like diff --git a/2020/ferguson2/index.html b/2020/ferguson2/index.html index 1b750044c..5de4b9034 100644 --- a/2020/ferguson2/index.html +++ b/2020/ferguson2/index.html @@ -728,6 +728,12 @@ 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.

      +

      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. Although we have +parted ways, whether for now or for ever, you will always always always have a +place in my heart and soul xxx

      +

      Once more besides those two I want to also dedicate this to all the many millions of people whose lives were taken from them in what amounts to - like all other wars - a horrible, pointless conflict and an utter waste of life, diff --git a/2020/ferguson2/obfuscation.markdown b/2020/ferguson2/obfuscation.markdown deleted file mode 100644 index 48ead7a2c..000000000 --- a/2020/ferguson2/obfuscation.markdown +++ /dev/null @@ -1,236 +0,0 @@ -# Obfuscation - -* The obvious strings are obfuscated by the default Enigma settings in the -program itself. - -* Digraphs. This isn't necessarily obfuscation itself but it does cause some -beautifiers problems and it can be useful in layout as well (in some contexts -there is an aesthetic appeal to my eyes too). - -* Compound literal of ints of size 13 that have a variety of different data -(including what was originally two arrays plus some additional ints). - -* Negative pointer offsets. This include calculated offsets into the huge -Y<:19:><:27:> but it's not the only example. Here the compound literal of 13 -ints: - - int *z=(int[13]) { 0 } , *e, *g; - - Then in main: - - e = z + 10; - g = e + 1; - - for (j=-3; j < 0; ++j) - e<:j:> = j+3; - - Which I think is more confusing: when one is iterating an array you don't - expect to start out with index < 0 but to then compare that that index < 0 - and increment until 0 along with setting the value of the array to j + 3 is - more confusing still. There are at least two other ways that are much easier - to read that could accomplish the same thing. It continues on: - - /* ... */ - e<:i-3:> = (j < 1 ? 1 : (j > 5 ? 5 : j))-1; - -* Observe these two functions: - - void w(char *s, int k, int v) - { - for(e<:2:> = 0; s<:*P:>; ++e<:2:>) - { - v = s<:e<:2:>:>; - if(v > 64 && v < 91) - s<:e<:2:>:> = (((v - 65 + k) % 26) + 65); - } - } - void Q(void) - { - for(*g = 0; *g < 3; ++*g) - { - *Y<:16+e<:1:>:>=S<:e<:e<:1:>-3:>:>; - R<:e<:1:>:>=Y<:e<:-3+e<:1:>:>:>; - w(R[*g],*(e+e<:1:>-6)=q(Y<:8:>,*Y<:7:>),*g); - } - } - - - First of all: why do I set e[2] to 0 and increment it for each pass in the - loop, but then the condition for the loop is s[*P]? - - Second notice the many references to e[1] (as e[1] and *g). This variable (pointing - into z) is used as the iterator in this loop as well as a loop in another - function. Now why do I pass *g to the function w()? To mislead. Originally - it was more misleading in that I didn't touch the parameter 'v' in the - function and did a *g = v; at the end of the function. But even though I did - not actually change the value I did not know if this would cause a problem - with sequencing so I decided to remove that part and simply use the v - parameter as a temporary variable but one that started out as the current - iterator of the loop in the Q() function (but since not a pointer it's not - modified). - - Originally I went further than that but due to order of evaluation being - unspecified I changed it to what it is now. Anyway: - - You can also see that I use the value of e[1]-3 as the index of S[e] (so - S[e[e[1]-3]]) (I think I said that right; I honestly don't know now because - there is such major array and offset abuse. The entire prog.c is riddled - with offset abuses.). - - -* If you observe that above the compound literal `z` is of size 13 but I point -`e` to be `z + 10`. Why? Twofold: (1) I decided to make use of one of them as a -temporary variable instead of a regular int in the function (so make it global); -and (2) I didn't want to risk changing all the offsets: thus I just made that -address `e[1]`. Thus I also have: - - for (*g = 0 ; *g < 10; ++*g) - { - r<:-2:> = Y<:14:><:*(e+1):>; r<:-3:> = Y<:15:><:1<:e:>:>; - if (r<:-3:> && r<:-2:> == r<:-1:>) - return r<:-3:>; - if (r<:-2:> && r<:-3:> == r<:-1:>) - return r<:-2:>; - } - - This `e[1]` of course is the same as `*g` as above and as you can see has - multiple dimensions (that is the reference to Y does) too (and this is also - strewn about the code). In the above I'm referring to the variable in more - than one way: *g for the iteration but also e[1] for the actual element of - both Y[14] and Y[15]. I also happen to use S (via r which points to S + 10) - which I use as the two chars to compare (this is the plugboard function). - -* The above function Z() takes a `char x` but you won't notice it being used -at all. Why? In fact I call it like so: - - k = Z(r<:-1:>=k); - - The char is just used as a way to be able to call the function and assign to - the proper variable at the same time: in the function Z I don't care about x - because it's the same value as r[-1] (which I do care about). Why is it - attached to S? Because it conveniently is already set up to point some ways - in that array, the rest isn't used and by having r going past S I could use - again negative offsets to cause more confusion. - -* Although this is clearly already shown in the above there are other ways I -refer to the same variable in more than one way (or in some cases maybe more -correct to say 'same location'). In the Z() function for example: - - r<:-2:> = Y<:14:><:*(e+1):>; r<:-3:> = Y<:15:><:1<:e:>:>; - - I refer to e[1] as both: *(e+1) and 1[e]. - - -* Replacing a number of `if .. `s with `... && (...)`s (in one case at least -it's nested further: `f && (f = 0 && (a = W(A,a)));`). - -* Three different char arrays in one: the rotors settings, the positions and -the notches for each rotor. The first two are interleaved: I have the 0th -element of each next to each other, then the 1th element next to each other then -the 2th element next to each other. Then it's the notch settings. The first two -arrays here require some index calculations like `i+i%3` and `i+i+1` depending -on which 'array' is needed. At other points I refer to those elements by direct -index (sort of). - -* Another set of char arrays in one: the five rotors as well as the two -reflectors in one `char [][27]`. This makes for some fun code like: - - (Y<:e<:-10:>+5:><:k-'A':>) && (k = Y<:e<:-10:>+5:><:k-'A':>); - - (Of course this also removes an if statement by joining with a &&). - -* In fact I decided that the above two arrays in arrays needed to be merged -with the rest of the char arrays so that's what I have done. They have -different purposes and they're referred to differently. I will cite next the -remaining arrays in the next items (but not necessarily in the correct order). -Notice that the array I'm talking about is the massive `Y<:19:><:27:>`. - -* The alphabet (this is one string). - -* The plugboard (this is two arrays). - -* The Enigma ciphered text for prompting for input (five strings). - -* The relevant notches (this is not the same as the five notch letters!) (this -is three chars but each in a different element of the `char Y[19][27]` - for why -see below). - -* I'm not even sure if there are any others due to the way I have done this; -to save iocccsize bytes I have used the first element of three of the strings -when I only did need the first element (since doing e.g. `f[3][2]` takes more -bytes than `*f[3]` or whatever). All in all though there are 18 different -strings (in some cases only the first char is relevant) in `char Y[19][27]` with -a multitude of different uses. Some of these are as I noted scrambled. Some -default to empty string which might hide that it's even there. - - -* Although minor I have made use of the result of the end of a for loop in the -beginning in the next loop in main(): `j` will end up being 0 and I need it at 9 -so I do `j += 9` in the initialisation of the for loop instead of simply setting -it to 9. - -* The judges don't like obfuscation through the C preprocessor. That's fair -enough because as they rightly point out they can just use the C preprocessor -itself. But although I have quite a few cpp directives I am not using them for -obfuscation but rather to save bytes. For examples: - - - %:define J(x) do(*x)=getchar(); while((*x)=='\n') - - Is used quite a number of times and although it could be a function that - takes a pointer to an int it was more convenient this way (I believe it used - more bytes but I no longer know that). There are many others and they all - save bytes (or at least most of them do if not all). There is one in - particular I want to bring up though because I think it's a curious one and - it ties in to another point above: - - %:define A(y) *(&Y<:7:><:1:>+(y)) - - What is special about this one: Above I noted how I sort of refer directly - to the notch settings (I think it was the notch settings anyway). Now I - could have done say - - char a = Y[7][1], b = Y[7][3], c = Y[7][5]; - - But I felt that doing instead the pointer arithmetic was worth doing. - However it used significantly more bytes even as a macro: 17 if I recall - right. That's with the macro. If I were to include it three times by itself - it'd be many more. I believe though that when the cpp translates it it still - requires more thought to determine that a is set to Y[7][1], b to Y[7][3] - and c to Y[7][5]. - - - -# Obfuscation wrt recode.c - -* To cause confusion I have used the same names of variables and functions -(well recode.c has more functions and variables) but with different meanings. -For example in recode.c `R` is a `char R[3]` but in prog.c it's `char *R[3]`. -Another example is where in prog.c `Y` is `char Y[19][27]` in recode.c it's `char -*Y[3]`. Some are use swaps but not necessarily all. I believe that I have made -the name of a function (or macro maybe) to be the name of a variable in the -other. Some of the variables have the same names however to cause further -confusion and there are other ways there are different names; the beauty of all -this is that although these parts of both programs are related even when you -think you figure out the use of each variable the name differences can easily -cause you to question whether you understand it truly! Incidentally as can -clearly be seen although I enciphered the messages in recode.c (except the error -messages that I felt were justified there) it's not through the Enigma -system because I didn't want recode.c to give many hints as to how prog.c works. -I don't believe deciphering recode.c will explain how my entry works because -recode.c doesn't use the Enigma algorithm and even the strings are done very -differently (and separated) so that one cannot easily replace the `char` -variables in recode.c, move them to prog.c, compile and expect it to work right. - -* Also what is this about ? - - /\ - / This is *not* what you think: - void D(char*x){ /* ... */ } - - - Is that valid and if so how does it function? Yes it's valid but I'll leave - the other part of the question up to the reader to answer. Hint: you already - know how it works (yes, really you do)! Another hint: This is and is not a - misleading comment (conversely this makes this hint both misleading - and - also not). diff --git a/2020/ferguson2/recode.html b/2020/ferguson2/recode.html index afd750344..5e4c71960 100644 --- a/2020/ferguson2/recode.html +++ b/2020/ferguson2/recode.html @@ -34,23 +34,30 @@ good chocolate and could use a delicious Double-la

      Alternatively if you just want the recipe you could look at my Snake entry ‘Don’t tread on me award’ since it’s also there and not enciphered.

      -

      -- What is recode and why is it recommended? -- Options - * Protecting against the same I/O file - * File options parser limitation - * -R option validation? -- Piping commands to recode -- Piping recode to the Enigma simulator -- Manually test the recode program with the Enigma program -- Only write config file -- Reusing a configuration -- Write config file, read data file and pass to Enigma simulator -- Piping directly to the Enigma code once (with randomised settings, saved) -- Usage conclusion -- Example additions -- Example uses -- Delicious Enigma: Double-layered Chocolate Fudge Cake

      +

      + +

      What is recode and why is it recommended?

      diff --git a/2020/ferguson2/recode.text b/2020/ferguson2/recode.text index 7596de082..bbd6a4c65 100644 --- a/2020/ferguson2/recode.text +++ b/2020/ferguson2/recode.text @@ -8,23 +8,40 @@ Alternatively if you just want the recipe you could look at my Snake entry 'Don't tread on me award' since it's also there and not enciphered. + - [What is recode and why is it recommended?](#recode) + - [Options](#options) + * [Protecting against the same I/O file](#samefile) + * [File options parser limitation](#fileoptions) + * [-R option validation?](#validation) + - [Piping commands to recode](#pipingtorecode) + - [Piping recode to the Enigma simulator](#pipingtoenigma) + - [Manually test the recode program with the Enigma program](#manuallytest) + - [Only write config file](#onlyconfig) + - [Reusing a configuration](#reuseconfig) + - [Write config file, read data file and pass to Enigma simulator](#passtoenigma) + - [Piping directly to the Enigma code once (with randomised settings, saved)](#directlytoenigma) + - [Usage conclusion](#conclusion) + - [Example additions](#additions) + - [Example uses](#exampleuses) + - [Delicious Enigma: Double-layered Chocolate Fudge Cake](#cake) + # What is recode and why is it recommended? To demonstrate how to and why you should use the recode program with the Enigma