Best shuffle: Difference between revisions
Content added Content deleted
m (and a deterministic result) |
(→{{header|Ada}}: add testcases and output) |
||
Line 37: | Line 37: | ||
{{trans|AWK}} |
{{trans|AWK}} |
||
<lang Ada>with Ada.Text_IO; |
<lang Ada>with Ada.Text_IO; |
||
with Ada.Strings.Unbounded; |
|||
procedure Best_Shuffle is |
procedure Best_Shuffle is |
||
function Best_Shuffle (S : String) return String; |
|||
function Best_Shuffle(S: String) return String is |
function Best_Shuffle (S : String) return String is |
||
T: String(S'Range) := S; |
T : String (S'Range) := S; |
||
Tmp: Character; |
Tmp : Character; |
||
begin |
begin |
||
for I in S'Range loop |
for I in S'Range loop |
||
for J in S'Range loop |
for J in S'Range loop |
||
if I /= J and S(I) /= T(J) and S(J) /= T(I) then |
if I /= J and S (I) /= T (J) and S (J) /= T (I) then |
||
Tmp := T(I); |
Tmp := T (I); |
||
T(I) := T(J); |
T (I) := T (J); |
||
T(J) := Tmp; |
T (J) := Tmp; |
||
end if; |
end if; |
||
end loop; |
end loop; |
||
Line 56: | Line 59: | ||
end Best_Shuffle; |
end Best_Shuffle; |
||
Test_Cases : constant array (1 .. 6) |
|||
Stop : Boolean := False; |
|||
of Ada.Strings.Unbounded.Unbounded_String := |
|||
(Ada.Strings.Unbounded.To_Unbounded_String ("abracadabra"), |
|||
Ada.Strings.Unbounded.To_Unbounded_String ("seesaw"), |
|||
Ada.Strings.Unbounded.To_Unbounded_String ("elk"), |
|||
Ada.Strings.Unbounded.To_Unbounded_String ("grrrrrr"), |
|||
Ada.Strings.Unbounded.To_Unbounded_String ("up"), |
|||
Ada.Strings.Unbounded.To_Unbounded_String ("a")); |
|||
begin -- main procedure |
begin -- main procedure |
||
for Test_Case in Test_Cases'Range loop |
|||
declare |
declare |
||
Original: String := Ada. |
Original : constant String := Ada.Strings.Unbounded.To_String |
||
(Test_Cases (Test_Case)); |
|||
Shuffle : constant String := Best_Shuffle (Original); |
|||
⚫ | |||
begin |
begin |
||
for I in Original'Range loop |
for I in Original'Range loop |
||
if Original(I) = Shuffle(I) then |
if Original (I) = Shuffle (I) then |
||
Score := Score + 1; |
Score := Score + 1; |
||
end if; |
end if; |
||
end loop; |
end loop; |
||
Ada. |
Ada.Text_IO.Put_Line (Original & ", " & Shuffle & ", (" & |
||
Natural'Image(Score) & " )"); |
Natural'Image (Score) & " )"); |
||
if Original = "" then |
|||
⚫ | |||
end if; |
|||
end; |
end; |
||
end loop; |
end loop; |
||
end Best_Shuffle;</lang> |
end Best_Shuffle;</lang> |
||
Output: |
|||
<pre>abracadabra, caadrbabaar, ( 0 ) |
|||
seesaw, ewaess, ( 0 ) |
|||
elk, kel, ( 0 ) |
|||
grrrrrr, rgrrrrr, ( 5 ) |
|||
up, pu, ( 0 ) |
|||
a, a, ( 1 )</pre> |
|||
=={{header|AutoHotkey}}== |
=={{header|AutoHotkey}}== |