Add tasks for all the new languages
This commit is contained in:
parent
9dc3c2bb62
commit
bba7bfd280
13208 changed files with 134745 additions and 0 deletions
54
Task/Rock-paper-scissors/Sidef/rock-paper-scissors.sidef
Normal file
54
Task/Rock-paper-scissors/Sidef/rock-paper-scissors.sidef
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
const rps = %w(r p s)
|
||||
|
||||
const msg = [
|
||||
"Rock breaks scissors",
|
||||
"Paper covers rock",
|
||||
"Scissors cut paper",
|
||||
]
|
||||
|
||||
say <<"EOT";
|
||||
\n>> Rock Paper Scissors <<\n
|
||||
** Enter 'r', 'p', or 's' as your play.
|
||||
** Enter 'q' to exit the game.
|
||||
** Running score shown as <your wins>:<my wins>
|
||||
EOT
|
||||
|
||||
var plays = 0
|
||||
var aScore = 0
|
||||
var pScore = 0
|
||||
var pcf = [0,0,0] # pcf = player choice frequency
|
||||
var aChoice = 3.irand # ai choice for first play is completely random
|
||||
|
||||
loop {
|
||||
var pi = Sys.scanln("Play: ")
|
||||
pi == 'q' && break
|
||||
|
||||
var pChoice = rps.index(pi)
|
||||
|
||||
if (pChoice == -1) {
|
||||
STDERR.print("Invalid input!\n")
|
||||
next
|
||||
}
|
||||
|
||||
++pcf[pChoice]
|
||||
++plays
|
||||
|
||||
# show result of play
|
||||
">> My play: %-8s".printf(rps[aChoice])
|
||||
|
||||
given ((aChoice - pChoice + 3) % 3) {
|
||||
when (0) { say "Tie." }
|
||||
when (1) { "%-*s %s".printlnf(30, msg[aChoice], 'My point'); aScore++ }
|
||||
when (2) { "%-*s %s".printlnf(30, msg[pChoice], 'Your point'); pScore++ }
|
||||
}
|
||||
|
||||
# show score
|
||||
"%-6s".printf("%d:%d" % (pScore, aScore))
|
||||
|
||||
# compute ai choice for next play
|
||||
given (plays.irand) { |rn|
|
||||
case (rn < pcf[0]) { aChoice = 1 }
|
||||
case (pcf[0]+pcf[1] > rn) { aChoice = 2 }
|
||||
default { aChoice = 0 }
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue