Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
67
Task/24-game/Groovy/24-game.groovy
Normal file
67
Task/24-game/Groovy/24-game.groovy
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
final random = new Random()
|
||||
final input = new Scanner(System.in)
|
||||
|
||||
|
||||
def evaluate = { expr ->
|
||||
if (expr == 'QUIT') {
|
||||
return 'QUIT'
|
||||
} else {
|
||||
try { Eval.me(expr.replaceAll(/(\d)/, '$1.0')) }
|
||||
catch (e) { 'syntax error' }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
def readGuess = { digits ->
|
||||
while (true) {
|
||||
print "Enter your guess using ${digits} (q to quit): "
|
||||
def expr = input.nextLine()
|
||||
|
||||
switch (expr) {
|
||||
case ~/^[qQ].*/:
|
||||
return 'QUIT'
|
||||
|
||||
case ~/.*[^\d\s\+\*\/\(\)-].*/:
|
||||
def badChars = expr.replaceAll(~/[\d\s\+\*\/\(\)-]/, '')
|
||||
println "invalid characters in input: ${(badChars as List) as Set}"
|
||||
break
|
||||
|
||||
case { (it.replaceAll(~/\D/, '') as List).sort() != ([]+digits).sort() }:
|
||||
println '''you didn't use the right digits'''
|
||||
break
|
||||
|
||||
case ~/.*\d\d.*/:
|
||||
println 'no multi-digit numbers allowed'
|
||||
break
|
||||
|
||||
default:
|
||||
return expr
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
def digits = (1..4).collect { (random.nextInt(9) + 1) as String }
|
||||
|
||||
while (true) {
|
||||
def guess = readGuess(digits)
|
||||
def result = evaluate(guess)
|
||||
|
||||
switch (result) {
|
||||
case 'QUIT':
|
||||
println 'Awwww. Maybe next time?'
|
||||
return
|
||||
|
||||
case 24:
|
||||
println 'Yes! You got it.'
|
||||
return
|
||||
|
||||
case 'syntax error':
|
||||
println "A ${result} was found in ${guess}"
|
||||
break
|
||||
|
||||
default:
|
||||
println "Nope: ${guess} == ${result}, not 24"
|
||||
println 'One more try, then?'
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue