74 lines
1.8 KiB
Swift
74 lines
1.8 KiB
Swift
import Darwin
|
|
import Foundation
|
|
|
|
println("24 Game")
|
|
println("Generating 4 digits...")
|
|
|
|
func randomDigits() -> Int[] {
|
|
var result = Int[]();
|
|
for var i = 0; i < 4; i++ {
|
|
result.append(Int(arc4random_uniform(9)+1))
|
|
}
|
|
return result;
|
|
}
|
|
|
|
// Choose 4 digits
|
|
let digits = randomDigits()
|
|
|
|
print("Make 24 using these digits : ")
|
|
|
|
for digit in digits {
|
|
print("\(digit) ")
|
|
}
|
|
println()
|
|
|
|
// get input from operator
|
|
var input = NSString(data:NSFileHandle.fileHandleWithStandardInput().availableData, encoding:NSUTF8StringEncoding)
|
|
|
|
var enteredDigits = Int[]()
|
|
|
|
var enteredOperations = Character[]()
|
|
|
|
let inputString = input as String
|
|
|
|
// store input in the appropriate table
|
|
for character in inputString {
|
|
switch character {
|
|
case "1", "2", "3", "4", "5", "6", "7", "8", "9":
|
|
let digit = String(character)
|
|
enteredDigits.append(digit.toInt()!)
|
|
case "+", "-", "*", "/":
|
|
enteredOperations.append(character)
|
|
case "\n":
|
|
println()
|
|
default:
|
|
println("Invalid expression")
|
|
}
|
|
}
|
|
|
|
// check value of expression provided by the operator
|
|
var value = Int()
|
|
|
|
if enteredDigits.count == 4 && enteredOperations.count == 3 {
|
|
value = enteredDigits[0]
|
|
for (i, operation) in enumerate(enteredOperations) {
|
|
switch operation {
|
|
case "+":
|
|
value = value + enteredDigits[i+1]
|
|
case "-":
|
|
value = value - enteredDigits[i+1]
|
|
case "*":
|
|
value = value * enteredDigits[i+1]
|
|
case "/":
|
|
value = value / enteredDigits[i+1]
|
|
default:
|
|
println("This message should never happen!")
|
|
}
|
|
}
|
|
}
|
|
|
|
if value != 24 {
|
|
println("The value of the provided expression is \(value) instead of 24!")
|
|
} else {
|
|
println("Congratulations, you found a solution!")
|
|
}
|