Anonymous user
Random Latin squares: Difference between revisions
m
→{{header|zkl}}: rewrite
No edit summary |
m (→{{header|zkl}}: rewrite) |
||
Line 451:
=={{header|zkl}}==
<lang zkl>fcn randomLatinSquare(n,symbols=[1..]){
if(n<=0) return(T);
square,syms := List(), symbols.walker().walk(n)
do(n){ syms=syms.copy(); square.append(syms.append(syms.pop(0))) }
: T.zip(_.shuffle().xplode()).shuffle()▼
// shuffle rows, transpose & shuffle columns
}
▲fcn m2String(matrix){ matrix.apply("concat"," ").concat("\n") }</lang>
▲<lang zkl>foreach n in (T(1,2,5)){ randomLatinSquare(n) : m2String(_).println("\n") }
▲randomLatinSquare(5,["A".."Z"]) : m2String(_).println("\n");
▲randomLatinSquare(10,"!@#$%^&*()") : m2String(_).println("\n");</lang>
{{out}}
<pre>
Line 478 ⟶ 469:
2 1
2 5 3 4 1
A E B C D
C B D E A
@
( &
% # ! ( ^
^ $
</pre>
|