Section 4 - Construction Tests
[ This section is of chiefly archaeological interest.
These commands were written not to verify behavior already in the game but to help identify things that could or should be implemented. 'list sources' identifies portable in-game objects that ought to be analyzed for their word derivatives.
'pound anagrams' helped to work out which objects in the game were anagrams of which others, and is very slow because it was implemented before the hash code was in; but it only needed to run once. This was more of a viability test than anything else.
'list syntheses' was to help with brainstorming about what synthetic objects should be made, though it does not account for objects with interleaved letters (again, because it was implemented before the hash code was added).
]
Understand "list syntheses" as listing syntheses. Listing syntheses is an action out of world.
Carry out listing syntheses:
repeat with item running through fake things:
repeat with second item running through fake things:
say "[item][second item][line break]";
say line break.
Understand "pound anagrams" as testing anagrams. Testing anagrams is an action applying to nothing.
Carry out testing anagrams:
repeat with item running through synthesizable things:
hash item;
say " - [item][line break]";
To hash (N - a thing):
let anagram key be a list of indexed text;
let starting form be indexed text;
let starting form be "[n]";
let count be the number of characters in starting form;
repeat with i running from 1 to count:
add "[character number i in starting form]" to anagram key;
sort anagram key;
say anagram key.
Understand "list sources" as listing sources. Listing sources is an action applying to nothing.
Carry out listing sources:
repeat with item running through portable things which are not off-stage:
if the item is not part of something:
say "[item][line break]".
Understand "list easy outcomes" as listing easy outcomes. Listing easy outcomes is an action applying to nothing.
Carry out listing easy outcomes:
repeat with item running through synthesizable things:
say "[item]: [encryption of item][line break]".
Understand "list hard outcomes" as listing hard outcomes. Listing hard outcomes is an action applying to nothing.
Carry out listing hard outcomes:
repeat with item running through synthesizable things:
say "[item]: [hard encryption of item][line break]".
Understand "list back outcomes" as listing back outcomes. Listing back outcomes is an action applying to nothing.
Carry out listing back outcomes:
repeat with item running through synthesizable things:
say "[item]: [back encryption of item][line break]".
Understand "list all outcomes" as listing all outcomes. Listing all outcomes is an action applying to nothing.
Carry out listing all outcomes:
repeat with item running through synthesizable things:
say "[item]: [encryption of item], [back encryption of item], [hard encryption of item], [back hard encryption of item][line break]".
[The list length thing was added because I was investigating a different puzzle style -- one in which the player needed to make a word-object with specific characteristics such as length and consonant/vowel pattern, which would then function as a key in a particular type of Bureau lock. This turned out to be hard to construct and boring to solve, so I scrapped the concept.]
Understand "list length [number]" as listing lengths. Listing lengths is an action applying to one number.
Carry out listing lengths:
repeat with item running through portable things:
let starting form be indexed text;
let starting form be "[item]";
let N be the number of characters in starting form;
if N is the number understood:
say "[item][line break]".
Understand "list anagram probables" as listing anagram probables. Listing anagram probables is an action applying to nothing.
Carry out listing anagram probables:
repeat with item running through portable things which are not fixed in place:
if item is in the quip-repository:
next;
if item is part of something which is fixed in place:
next;
if item is a person:
next;
let starting form be indexed text;
let starting form be "[item]";
let N be the number of characters in starting form;
if N is greater than 8:
say "[item][line break]".