41 lines
1.1 KiB
Text
41 lines
1.1 KiB
Text
$ 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;
|