Hatena::Grouptopcoder

cafelier@SRM

cafelier のSRM参加記録です。コンテスト中に考えてたことを執拗に全部書き残すとどうなるだろうかという試み本番中にこういうコードが書きたかったなあ、という後で書いた反省コードを書き残す試み

スパムが来たのでしばらくコメント欄をはてなユーザ限定にしています、すみません、

 | 

2012-04-17

AOJ10004 : Sorting Three Numbers

21:26 | はてなブックマーク -  AOJ10004 : Sorting Three Numbers - 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" と区切り文字 " " を指定するとそれっぽい出力がなされるみたいです。

トラックバック - https://topcoder-g-hatena-ne-jp.jag-icpc.org/cafelier/20120417
 | 

presented by cafelier/k.inaba under CC0