Twelve statements: Difference between revisions

m
Line 1,395:
</pre>
=={{header|Elena}}==
ELENA 3.34 :
<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 new from:1 to:12)
by(:x:i)( (i T<int;>(i) isEven)and:x; toBit ); summarize == 2 ),
(:bits)( bits[4] iif(bits[5] && bits[6],true) ),
(:bits)( (bits[1] || bits[2] || bits[3]) notinverted ),
(:bits)( bits zip(RangeEnumerator new from:1 to:12)
by(:x:i)( (i T<int;>(i) isOdd)and:x; toBit ); summarize == 4 ),
(: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 )
).
 
programpublic =program
[
console writeLine:"".
0 till(2 power int:(12)) do(:n)
[
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.
].</lang>
{{out}}
<pre>
Anonymous user