石取りゲーム1
改訂新版 C言語による標準アルゴリズム事典をSwiftでコーディング
アルゴリズム
石取りゲーム1
実行
Command Line
コード
import Foundation
/// 入力
/// - parameter メッセージ
/// - returns 入力文字列
func input(msg:String = "") -> String {
print(msg, separator: "", terminator: "")
let indata = FileHandle.standardInput;
let rawdata = indata.availableData;
let str = NSString(data: rawdata, encoding: String.Encoding.utf8.rawValue);
let length = str?.length
let result = str?.substring(with: NSRange(location: 0,length: length! - 1))
return result!
}
func stone1() {
var n = Int(input(msg: "石の数? "))!
let m = Int(input(msg: "1回に取れる最大の石の数? "))!
if n < 1 || m < 1 {
exit(1)
}
var my_turn:Int
my_turn = 1
while n != 0 {
var x:Int
if my_turn == 1 {
x = (n - 1) % (m + 1)
if x == 0 {
x = 1
}
print("私は \(x) 個の石を取ります。")
}
else {
repeat {
x = Int(input(msg: "何個取りますか? "))!
} while x <= 0 || x > m || x > n
}
n -= x
print("残りは \(n) 個です。")
my_turn ^= 1
}
my_turn == 1 ? print("あなたの負けです!") : print("私の負けです!")
}
stone1()





