問題
5行の入力が与えられます。
- 1行目では整数aが与えられます。aが0より大きいなら”plus”、そうでなければそのまま1行目で表示してください。
- 2行目では文字列bが与えられます。bが”hoge”に一致するなら”yes”、そうでなければそのまま2行目で表示してください。
- 3行目では文字列cが与えられます。cが10文字なら”ten”、そうでなければそのまま3行目で表示してください。
- 4行目では文字列dが与えられます。dが文字”x”を含むなら”x”が最初に見つかった位置、そうでなければ”nothing”を4行目で表示してください。
- 5行目では文字列eが与えられます。eが5文字なら”five”、そうでなければeの最初の1文字だけを5行目で表示してください。
考え方
一番厄介なのは「dが文字”x”を含むなら”x”が最初に見つかった位置」の出力。
C言語であれば、添字は int 型として簡単に使えるが、Swift の場合には Index型 となってしまい、そのままでは使えない。
したがって、 String の extensionを 作り、 Int?型として添字を返せるようにしている。
解答例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
import Foundation //・1行目では整数aが与えられます。aが0より大きいなら"plus"、そうでなければそのまま1行目で表示してください。 let a = Int(readLine()!)! print(a >= 0 ? "plus" : a) //・2行目では文字列bが与えられます。bが"hoge"に一致するなら"yes"、そうでなければそのまま2行目で表示してください。 let b = readLine()! print(b == "hoge" ? "yes" : b) //・3行目では文字列cが与えられます。cが10文字なら"ten"、そうでなければそのまま3行目で表示してください。 let c = readLine()! print(c.count == 10 ? "ten" : c) //・4行目では文字列dが与えられます。dが文字"x"を含むなら"x"が最初に見つかった位置、そうでなければ"nothing"を4行目で表示してください。 let d = readLine()! // https://stackoverrun.com/ja/q/9520618 を改変 extension String { func encodedOffset(of character: Character) -> Int? { return firstIndex(of: character)?.utf16Offset(in: self) } } print(d.contains("x") ? d.encodedOffset(of: "x")! : "nothing") //・5行目では文字列eが与えられます。eが5文字なら"five"、そうでなければeの最初の1文字だけを5行目で表示してください。 let e = readLine()! print(e.count == 5 ? "five" : e.first!) |