Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
23
Task/Hailstone-sequence/Smalltalk/hailstone-sequence-1.st
Normal file
23
Task/Hailstone-sequence/Smalltalk/hailstone-sequence-1.st
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
Object subclass: Sequences [
|
||||
Sequences class >> hailstone: n [
|
||||
|seq|
|
||||
seq := OrderedCollection new.
|
||||
seq add: n.
|
||||
(n = 1) ifTrue: [ ^seq ].
|
||||
(n even) ifTrue: [ seq addAll: (Sequences hailstone: (n / 2)) ]
|
||||
ifFalse: [ seq addAll: (Sequences hailstone: ( (3*n) + 1 ) ) ].
|
||||
^seq.
|
||||
]
|
||||
|
||||
Sequences class >> hailstoneCount: n [
|
||||
^ (Sequences hailstoneCount: n num: 1)
|
||||
]
|
||||
|
||||
"this 'version' avoids storing the sequence, it just counts
|
||||
its length - no memoization anyway"
|
||||
Sequences class >> hailstoneCount: n num: m [
|
||||
(n = 1) ifTrue: [ ^m ].
|
||||
(n even) ifTrue: [ ^ Sequences hailstoneCount: (n / 2) num: (m + 1) ]
|
||||
ifFalse: [ ^ Sequences hailstoneCount: ( (3*n) + 1) num: (m + 1) ].
|
||||
]
|
||||
].
|
||||
20
Task/Hailstone-sequence/Smalltalk/hailstone-sequence-2.st
Normal file
20
Task/Hailstone-sequence/Smalltalk/hailstone-sequence-2.st
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
|r|
|
||||
r := Sequences hailstone: 27. "hailstone 'from' 27"
|
||||
(r size) displayNl. "its length"
|
||||
|
||||
"test 'head' ..."
|
||||
( (r first: 4) = #( 27 82 41 124 ) asOrderedCollection ) displayNl.
|
||||
|
||||
"... and 'tail'"
|
||||
( ( (r last: 4 ) ) = #( 8 4 2 1 ) asOrderedCollection) displayNl.
|
||||
|
||||
|longest|
|
||||
longest := OrderedCollection from: #( 1 1 ).
|
||||
2 to: 100000 do: [ :c |
|
||||
|l|
|
||||
l := Sequences hailstoneCount: c.
|
||||
(l > (longest at: 2) ) ifTrue: [ longest replaceFrom: 1 to: 2 with: { c . l } ].
|
||||
].
|
||||
|
||||
('Sequence generator %1, sequence length %2' % { (longest at: 1) . (longest at: 2) })
|
||||
displayNl.
|
||||
Loading…
Add table
Add a link
Reference in a new issue