First class environments: Difference between revisions

Added Bracmat
m (→‎{{header|REXX}}: Tidy up / shorten by removing unnecessary output)
(Added Bracmat)
Line 17:
 
When all hailstone values dropped to 1, processing stops, and the total number of hailstone steps for each environment is printed.
=={{header|Bracmat}}==
 
<lang bracmat>( (environment=(cnt=0) (seq=))
& :?environments
& 13:?seq
& whl
' ( !seq+-1:>0:?seq
& new$environment:?env
& !seq:?(env..seq)
& !env !environments:?environments
)
& out$(Before !environments)
& whl
' ( !environments:? (=? (seq=>1) ?) ?
& !environments:?envs
& whl
' ( !envs:(=?env) ?envs
& (
' ( $env
(
=
. put$(!(its.seq) \t)
& !(its.seq):1
| 1+!(its.cnt):?(its.cnt)
& 1/2*!(its.seq):~/?(its.seq)
| 3*!(its.seq)+1:?(its.seq)
)
)
.
)
$
)
& out$
)
& out$(After !environments)
)</lang>
Output:
<pre> Before
(=(cnt=0) (seq=1))
(=(cnt=0) (seq=2))
(=(cnt=0) (seq=3))
(=(cnt=0) (seq=4))
(=(cnt=0) (seq=5))
(=(cnt=0) (seq=6))
(=(cnt=0) (seq=7))
(=(cnt=0) (seq=8))
(=(cnt=0) (seq=9))
(=(cnt=0) (seq=10))
(=(cnt=0) (seq=11))
(=(cnt=0) (seq=12))
1 2 3 4 5 6 7 8 9 10 11 12
1 1 10 2 16 3 22 4 28 5 34 6
1 1 5 1 8 10 11 2 14 16 17 3
1 1 16 1 4 5 34 1 7 8 52 10
1 1 8 1 2 16 17 1 22 4 26 5
1 1 4 1 1 8 52 1 11 2 13 16
1 1 2 1 1 4 26 1 34 1 40 8
1 1 1 1 1 2 13 1 17 1 20 4
1 1 1 1 1 1 40 1 52 1 10 2
1 1 1 1 1 1 20 1 26 1 5 1
1 1 1 1 1 1 10 1 13 1 16 1
1 1 1 1 1 1 5 1 40 1 8 1
1 1 1 1 1 1 16 1 20 1 4 1
1 1 1 1 1 1 8 1 10 1 2 1
1 1 1 1 1 1 4 1 5 1 1 1
1 1 1 1 1 1 2 1 16 1 1 1
1 1 1 1 1 1 1 1 8 1 1 1
1 1 1 1 1 1 1 1 4 1 1 1
1 1 1 1 1 1 1 1 2 1 1 1
After
(=(cnt=0) (seq=1))
(=(cnt=1) (seq=1))
(=(cnt=7) (seq=1))
(=(cnt=2) (seq=1))
(=(cnt=5) (seq=1))
(=(cnt=8) (seq=1))
(=(cnt=16) (seq=1))
(=(cnt=3) (seq=1))
(=(cnt=19) (seq=1))
(=(cnt=6) (seq=1))
(=(cnt=14) (seq=1))
(=(cnt=9) (seq=1))</pre>
=={{header|C}}==
Well, this fits the semantics, not sure about the spirit…
483

edits