var howManyPeoplesEntried: Int = 0
FirstStep: while true {
print("エントリー人数は合計で何人?\n→ ", terminator: "")
howManyPeoplesEntried = Int(readLine()!)!
switch howManyPeoplesEntried {
case 1...:
break FirstStep
case ..<1:
print("応募人数は最低で1名です。")
default:
print("入力が間違っています。")
}
}
var listOfEntries: [String] = [""]
var useListInput: Int = 0
var useListFlag: Bool = false
SecondStep: while true {
print("事前に入力された応募者一覧を使いますか、それともこれから直接入力しますか。\n\n1:事前入力されたものを使う\n2:これから入力する\n→ ", terminator: "")
useListInput = Int(readLine()!)!
switch useListInput {
case 1:
useListFlag = true
break SecondStep
case 2:
useListFlag = false
listOfEntries.removeAll()
break SecondStep
default:
print("入力が間違っています。")
}
}
var inputNameTemp: String = ""
if !useListFlag {
for count in 1...howManyPeoplesEntried {
print("\(count)番目のエントリー者:", terminator: "")
inputNameTemp = readLine()!
listOfEntries.insert(inputNameTemp, at: count - 1)
}
print("\n入力が完了しました。")
}
print("エントリー者は以下の通りです。")
for countPrintEntries in 1...howManyPeoplesEntried {
print("No. \(countPrintEntries): \(listOfEntries[countPrintEntries - 1])")
}
var howManyPeoplesWin: Int = 0
ThirdStep: while true {
print("\n当選者数は何人ですか?\n→ ", terminator: "")
howManyPeoplesWin = Int(readLine()!)!
switch howManyPeoplesWin {
case 1...:
if howManyPeoplesWin > howManyPeoplesEntried {
print("当選人数がエントリー数より多いです。\nエントリー数より少ない数値を入力してください。")
continue
}
break ThirdStep
case ..<1:
print("当選者数は1名以上です")
/*
case howManyPeoplesEntried...:
print("当選人数がエントリー数より多いです。エントリー数より少ない数値を入力してください。")
*/
default:
print("入力が間違っています")
}
}
var winNumbersList: [Int] = []
var tempWinNumber: Int = 0
for _ in 1...howManyPeoplesWin {
while true {
tempWinNumber = Int.random(in: 1...howManyPeoplesEntried)
if winNumbersList.firstIndex(of: tempWinNumber) == nil {
winNumbersList.append(tempWinNumber)
break
}
tempWinNumber = 0
}
}
print("\n抽選が終わりました。")
//debug
/*
print(listOfEntries)
print(winNumbersList)
*/
//debugEnd
print("\n ★抽選結果★")
for countPrintWins in 1...howManyPeoplesWin {
//debug
/*
print(countPrintWins)
*/
//debugEnd
print("エントリーNo. \(winNumbersList[countPrintWins - 1]) | \(listOfEntries[winNumbersList[countPrintWins - 1] - 1])")
}
print("\n********* ===== *********")
print(" 以上にて抽選を終了します")
print("********* ===== *********\n\n")
print("Program Made: Rina YUZUHA 2023, License: BSD")
Program Made: Rina YUZUHA 2023, License: BSD
Swift言語で書かれた抽選アルゴリズムです。
コメントを残す