LoginSignup
10
10

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-03-18

ついに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

環境構築

簡単

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(<)

まとめ

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

10
10
2

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
10
10