石取りゲーム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()