Best shuffle: Difference between revisions
Content added Content deleted
(Racket version) |
(Add Seed7 example) |
||
Line 2,581: | Line 2,581: | ||
</pre> |
</pre> |
||
=={{header|Seed7}}== |
|||
<lang seed7>$ include "seed7_05.s7i"; |
|||
const func string: bestShuffle (in string: stri) is func |
|||
result |
|||
var string: shuffled is ""; |
|||
local |
|||
var char: tmp is ' '; |
|||
var integer: i is 0; |
|||
var integer: j is 0; |
|||
begin |
|||
shuffled := stri; |
|||
for key i range shuffled do |
|||
for key j range shuffled do |
|||
if i <> j and stri[i] <> shuffled[j] and stri[j] <> shuffled[i] then |
|||
tmp := shuffled[i]; |
|||
shuffled @:= [i] shuffled[j]; |
|||
shuffled @:= [j] tmp; |
|||
end if; |
|||
end for; |
|||
end for; |
|||
end func; |
|||
const proc: main is func |
|||
local |
|||
const array string: testData is [] ("abracadabra", "seesaw", "elk", "grrrrrr", "up", "a"); |
|||
var string: original is ""; |
|||
var string: shuffled is ""; |
|||
var integer: j is 0; |
|||
var integer: score is 0; |
|||
begin |
|||
for original range testData do |
|||
shuffled := bestShuffle(original); |
|||
score := 0; |
|||
for key j range shuffled do |
|||
if original[j] = shuffled[j] then |
|||
incr(score); |
|||
end if; |
|||
end for; |
|||
writeln(original <& ", " <& shuffled <& ", (" <& score <& ")"); |
|||
end for; |
|||
end func;</lang> |
|||
Output: |
|||
<pre> |
|||
abracadabra, caadrbabaar, (0) |
|||
seesaw, ewaess, (0) |
|||
elk, kel, (0) |
|||
grrrrrr, rgrrrrr, (5) |
|||
up, pu, (0) |
|||
a, a, (1) |
|||
</pre> |
|||
=={{header|Tcl}}== |
=={{header|Tcl}}== |