A-M baby
This commit is contained in:
parent
764da6cbbb
commit
db842d013d
19005 changed files with 197040 additions and 7 deletions
53
Task/Hailstone-sequence/Inform-7/hailstone-sequence.inf
Normal file
53
Task/Hailstone-sequence/Inform-7/hailstone-sequence.inf
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
Home is a room.
|
||||
|
||||
To decide which list of numbers is the hailstone sequence for (N - number):
|
||||
let result be a list of numbers;
|
||||
add N to result;
|
||||
while N is not 1:
|
||||
if N is even, let N be N / 2;
|
||||
otherwise let N be (3 * N) + 1;
|
||||
add N to result;
|
||||
decide on result.
|
||||
|
||||
Hailstone length cache relates various numbers to one number.
|
||||
|
||||
To decide which number is the hailstone sequence length for (N - number):
|
||||
let ON be N;
|
||||
let length so far be 0;
|
||||
while N is not 1:
|
||||
if N relates to a number by the hailstone length cache relation:
|
||||
let result be length so far plus the number to which N relates by the hailstone length cache relation;
|
||||
now the hailstone length cache relation relates ON to result;
|
||||
decide on result;
|
||||
if N is even, let N be N / 2;
|
||||
otherwise let N be (3 * N) + 1;
|
||||
increment length so far;
|
||||
let result be length so far plus 1;
|
||||
now the hailstone length cache relation relates ON to result;
|
||||
decide on result.
|
||||
|
||||
To say first and last (N - number) entry/entries in (L - list of values of kind K):
|
||||
let length be the number of entries in L;
|
||||
if length <= N * 2:
|
||||
say L;
|
||||
else:
|
||||
repeat with M running from 1 to N:
|
||||
if M > 1, say ", ";
|
||||
say entry M in L;
|
||||
say " ... ";
|
||||
repeat with M running from length - N + 1 to length:
|
||||
say entry M in L;
|
||||
if M < length, say ", ".
|
||||
|
||||
When play begins:
|
||||
let H27 be the hailstone sequence for 27;
|
||||
say "Hailstone sequence for 27 has [number of entries in H27] element[s]: [first and last 4 entries in H27].";
|
||||
let best length be 0;
|
||||
let best number be 0;
|
||||
repeat with N running from 1 to 99999:
|
||||
let L be the hailstone sequence length for N;
|
||||
if L > best length:
|
||||
let best length be L;
|
||||
let best number be N;
|
||||
say "The number under 100,000 with the longest hailstone sequence is [best number] with [best length] element[s].";
|
||||
end the story.
|
||||
Loading…
Add table
Add a link
Reference in a new issue