Help us understand the problem. What is going on with this article?

Swift2.2で競技プログラミング(AtCoder)

More than 3 years have passed since last update.

ついにAtCoderにもSwiftが導入される…かな?
http://language-test-201603.contest.atcoder.jp/

実力やいかに。
以下、環境構築や競プロで出番があるかもしれないものをつらつらと。

AtCoderのSwift

言語: Swift (2.2-SNAPSHOT-2016-02-08-a)
コンパイルオプション: swiftc -o a.out Main.swift
実行コマンド: a.out

環境構築

簡単

https://github.com/kylef/swiftenv

swiftenv install 2.2-SNAPSHOT-2016-02-08-a

適当なディレクトリで swiftenv local 2.2-SNAPSHOT-2016-02-08-a としておくのも良い。

レッツトライ

入力処理

paizaでの競プロSwiftと同様、 NSFileHandle からの取得はできない模様。以下だけでCEが出る。

let standardInput = NSFileHandle.fileHandleWithStandardInput()

readLine() による1行取得は使える。もちろん戻り値は Optional<String> である。

let a = readLine()!

Stringのsplit

残念ながらSwift2ではStringが CollectionType でなくなってしまったため、 split を行うことができない。方法としては、 StringCollectionType を与えて split する能力を蘇らせるか、 String.CharacterView を経由するか。

extension String: CollectionType {}
"1 2".split(" ")
"1 2".characters.split(" ")

クロージャなどを取る split もいて、 split を使い分けることにより自由に処理ができる。一応。

3.14

M_PIFoundation 持ちなので使えない。

平方根

sqrtFoundation 持ちなので使えない。
自作関数を突っ込む以外に方法があったら教えてください。。

ソート

またソートの名前が変わっていた……。
副作用を求めていく場合:

rs.sortInPlace(<)

副作用は許さない場合:

rs.sort(<)

まとめ

さすがにネタ言語よりは上だが他の実用言語に劣る(知ってた)

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away