Number reversal game: Difference between revisions
Content added Content deleted
Not a robot (talk | contribs) (Add SETL) |
|||
Line 4,636: | Line 4,636: | ||
answer "You sorted it in " & numberOfTurns & " turns!" titled "Congratulations!" |
answer "You sorted it in " & numberOfTurns & " turns!" titled "Congratulations!" |
||
</syntaxhighlight> |
</syntaxhighlight> |
||
=={{header|SETL}}== |
|||
<syntaxhighlight lang="setl">program number_reversal_game; |
|||
setrandom(0); |
|||
tries := 0; |
|||
state := shuffled_numbers(); |
|||
loop until state = "123456789" do |
|||
tries +:= 1; |
|||
swapat := read_step(tries, state); |
|||
state := reverse state(..swapat) + state(swapat+1..); |
|||
end loop; |
|||
print(state + " - You win in " + str tries + " tries."); |
|||
proc read_step(tries, state); |
|||
loop until r in [str d : d in [1..9]] do |
|||
putchar(state + " - Reverse how many? "); |
|||
flush(stdout); |
|||
r := getline(stdin); |
|||
end loop; |
|||
return val r; |
|||
end proc; |
|||
proc shuffled_numbers(); |
|||
digits := "123456789"; |
|||
loop until out /= digits do |
|||
dset := {d : d in digits}; |
|||
out := +/[[d := random dset, dset less:= d](1) : until dset = {}]; |
|||
end loop; |
|||
return out; |
|||
end proc; |
|||
end program;</syntaxhighlight> |
|||
{{out}} |
|||
<pre>681934725 - Reverse how many? 4 |
|||
918634725 - Reverse how many? 9 |
|||
527436819 - Reverse how many? 7 |
|||
863472519 - Reverse how many? 8 |
|||
152743689 - Reverse how many? 4 |
|||
725143689 - Reverse how many? 7 |
|||
634152789 - Reverse how many? 6 |
|||
251436789 - Reverse how many? 2 |
|||
521436789 - Reverse how many? 5 |
|||
341256789 - Reverse how many? 2 |
|||
431256789 - Reverse how many? 4 |
|||
213456789 - Reverse how many? 2 |
|||
123456789 - You win in 12 tries.</pre> |
|||
=={{header|Sidef}}== |
=={{header|Sidef}}== |