LoginSignup
3
3

More than 3 years have passed since last update.

AtCoderにSwiftで挑戦するときの標準入出力

Posted at

AtCoderにSwiftで挑戦しようとしました。
まだAtCoderのことよくわかっていないのですが、とりあえずSwiftのバージョンは未だに2.2みたいです。
Swiftは今バージョン5まで来たので、2.2なのは結構キツイです。
僕は今年からSwift勉強しはじめて、入り口はバージョン4なので、過去のバージョンアップで変更された部分はよく把握していないのですが、
ざっと見る限りバージョン2から3に上がったときの変更が結構エグかったのかな、という印象で、
メンテされてないSwiftコードは軒並みそのままだと動かなくなってるように見えます。
なので、Swift 2.2でやるとなると、その古い書き方を調べないといけなくて、しんどいです。
C++勉強しろや、ってことなんですかね。。。

詰まった部分

標準入力を受け取って、ブランクで値を分割するところですが、下記のコードだとコンパイルエラーになります。

components(separatedBy)

let input_line: String = readLine()!
let split: [String] = input_line.components(separatedBy: " ") //ブランクで区切られている場合

これはSwift2.2にはcomponents(separatedBy:)ではなかったからです。

サンプルコード

練習問題を解いた例を載せます。

practice contest

practice_contest
import Foundation

var input_lines = [String]()
let row = 3
for i in 0..<row {
    input_lines.append(readLine()!)
}

let a = Int(input_lines[0])!

let split = input_lines[1].componentsSeparatedByString(" ") //components(separatedBy:)と実質同じ
let b = Int(split[0])!
let c = Int(split[1])!

let s = input_lines[2]

print((a + b + c), s)

splitでやる

charactersに対して、splitメソッドを使ってやる方法もあります。

AtCoder に登録したら解くべき精選過去問 10 問を Swift で解いてみた

こちらもSwift2.2では記法が若干違うので、辛さ的にはあまり変わりませんね。

関連

Swift3.0以降はこちらが参考になるかと。
paizaの問題をSwiftで挑戦するときの標準入出力

おまけ

Twitterやってます。エンジニアの知り合いが全然いないので、積極的につながりたいです!
よろしければフォローお願いします。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3