cafelier のSRM参加記録です。コンテスト中に考えてたことを執拗に全部書き残すとどうなるだろうかという試み本番中にこういうコードが書きたかったなあ、という後で書いた反省コードを書き残す試み
スパムが来たのでしばらくコメント欄をはてなユーザ限定にしています、すみません、
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=10004
import std.algorithm; import std.array; import std.conv; import std.stdio; void main() { int[] arr = readln().split().map!(to!int)().array(); // 繰り返しますが array(map!(to!int)(split(readln()))) と同じ意味です。 arr.sort(); // sort(arr) と同じ意味です。 writefln("%(%d %)", arr); }
std.algorithmの関数をいくつか使ってみます。
map!(f)(range) は、range の各要素に関数fを適用した結果の range を返す関数です。["3", "1", "8"] という文字列3つの range が、[3, 1, 8] という整数3つのrangeに変換されました。mapの返値は謎のrange型をしていて配列ではないので、それが嫌なときは、std.array の array() 関数で配列に変換します。
sort 関数は引数の range を破壊的にソートします。
出力は、writefln に配列出力用の不思議な記法が用意されていて、"%(" と "%)" で括って、各要素の出力法 "%d" と区切り文字 " " を指定するとそれっぽい出力がなされるみたいです。
presented by cafelier/k.inaba under