Best shuffle: Difference between revisions

Content added Content deleted
m (→‎{{header|REXX}}: whitespace)
(→‎{{header|J}}: different approach - see Talk)
Line 66: Line 66:
Brute force approach:
Brute force approach:


<lang j>bestShuf=:3 :0
<lang j>bestShuf =: verb define
target=. 0 >. ({. - +/@}.) \:~ #/.~y
yy=.(\:#&>)@:(<@I.@=) y
n=._1 [ lim=.!#y
z=.0 $ a:
while.lim > n=.n+1 do.
while. 1 < #yy do.
r=.n A. y
r =. {.&>{.yy
yy =. (}.&.>{.yy),}.yy
if.target=+/r=y do.return.end.
q =. {.&> {. }.yy
end.
yy =. ({.yy),(}.&.>{.}.yy),}.}.yy
z =. z,<r,q
yy =. yy-.a:
end.
z=. z , > {. 'b f'=.((2#a:)&, </.~ 1 0 , 1<#&>) yy
w=. y C.~ z
w C.~ :: [ f ,&.> w (~:/ i. 1:)"1 0 y {~ f =. ;f
)
)