Number reversal game: Difference between revisions
Content added Content deleted
No edit summary |
No edit summary |
||
Line 2,931: | Line 2,931: | ||
};</lang> |
};</lang> |
||
=={{header|Pascal |
=={{header|Pascal}}== |
||
<lang Pascal> |
<lang Pascal> |
||
program NumberReversalGame; |
program NumberReversalGame; |
||
Line 2,937: | Line 2,937: | ||
procedure PrintList(list: array of integer); |
procedure PrintList(list: array of integer); |
||
var |
var |
||
i: integer; |
|||
begin |
begin |
||
for i := low(list) to high(list) do |
|||
begin |
|||
Write(list[i]); |
|||
if i = high(list) then |
|||
break; |
|||
Write(', '); |
|||
end; |
|||
WriteLn; |
|||
end; |
end; |
||
procedure Swap(var list: array of integer; i, j: integer); |
procedure Swap(var list: array of integer; i, j: integer); |
||
var |
var |
||
buf: integer; |
|||
begin |
begin |
||
buf := list[i]; |
|||
list[i] := list[j]; |
|||
list[j] := buf; |
|||
end; |
end; |
||
procedure ShuffleList(var list: array of integer); |
procedure ShuffleList(var list: array of integer); |
||
var |
var |
||
i, j, n: integer; |
|||
begin |
begin |
||
Randomize; |
|||
for n := 0 to 99 do |
|||
begin |
|||
i := Random(high(list)+1); |
|||
j := Random(high(list)+1); |
|||
Swap(list, i, j); |
|||
end; |
|||
end; |
end; |
||
procedure ReverseList(var list: array of integer; const elems: integer); |
procedure ReverseList(var list: array of integer; const elems: integer); |
||
var |
var |
||
i, j: integer; |
|||
begin |
begin |
||
i := low(list); |
|||
j := elems; |
|||
while i < j do |
|||
begin |
|||
Swap(list, i, j); |
|||
i += 1; |
|||
j -= 1; |
|||
end; |
|||
end; |
end; |
||
function IsOrdered(list: array of integer): boolean; |
function IsOrdered(list: array of integer): boolean; |
||
var |
var |
||
i: integer; |
|||
begin |
begin |
||
IsOrdered := true; |
|||
i:= high(list); |
|||
while i > 0 do |
|||
begin |
|||
if list[i] <> (list[i-1] + 1) then |
|||
begin |
|||
IsOrdered:= false; |
|||
break; |
|||
end; |
|||
i -= 1; |
|||
end; |
|||
end; |
end; |
||
var |
var |
||
list: array [0..8] of integer = (1, 2, 3, 4, 5, 6, 7, 8, 9); |
|||
n: integer; |
|||
moves: integer; |
|||
begin |
begin |
||
WriteLn('Number Reversal Game'); |
|||
WriteLn; |
|||
WriteLn('Sort the following list in ascending order by reversing the first n digits'); |
|||
WriteLn('from the left.'); |
|||
WriteLn; |
|||
ShuffleList(list); |
|||
PrintList(list); |
|||
moves := 0; |
|||
while not IsOrdered(list) do |
|||
begin |
|||
WriteLn('How many digits from the left will you reverse?'); |
|||
Write('> '); |
|||
Read(n); |
|||
ReverseList(list, n-1); |
|||
PrintList(list); |
|||
moves += 1; |
|||
end; |
|||
WriteLn; |
|||
WriteLn('Congratulations you made it in just ', moves, ' moves!'); |
|||
WriteLn; |
|||
end. |
end. |
||
</lang> |
</lang> |
||