Anonymous user
Twelve statements: Difference between revisions
m
→{{header|Elena}}
Line 1,395:
</pre>
=={{header|Elena}}==
ELENA 3.
<lang elena>import system'routines.
import extensions.
import extensions'text.
extension op
{
Line 1,404 ⟶ 1,405:
= self zip:bits by
(:s:b)( s iif("T","F") + (s xor:b) iif("* "," ") ); summarize(String new).
toBit
= self iif(1,0).
}
puzzle =
(
(:bits)( bits length == 12 ),
(:bits)( bits last:6; selectBy(:x)( x toBit ); summarize == 3 ),
(:bits)( bits zip(RangeEnumerator
by(:x:i)( (
(:bits)( bits[4] iif(bits[5] && bits[6],true) ),
(:bits)( (bits[1] || bits[2] || bits[3])
(:bits)( bits zip(RangeEnumerator
by(:x:i)( (
(:bits)( bits[1] xor(bits[2]) ),
(:bits)( bits[6] iif(bits[5] && bits[4],true) ),
(:bits)( bits top:6; selectBy(:x)( x toBit ); summarize == 3 ),
(:bits)( bits[10] && bits[11] ),
(:bits)( (bits[6] toBit + bits[7] toBit + bits[8] toBit)==1 ),
(:bits)( bits top:11; selectBy(:x)( x toBit ); summarize == 4 )
).
[
console writeLine:"".
0 till(2 power
[
var bits := BitArray32 new:n; top:12; toArray.
var results := puzzle selectBy(:r)( r(bits) ); toArray.
var counts := bits zip:results by(:b:r)( b xor:r; toBit ); summarize.
counts =>
0 [ console printLine("Total hit :",results printSolution:bits) ];
Line 1,454 ⟶ 1,455:
12 [ console printLine("Total miss:",results printSolution:bits) ].
].
console readChar
]
{{out}}
<pre>
|