10分コーディングに10時間くらいかかった件

うん、一応できたw
文法の確認とか標準オブジェクトのメソッド調べたりとかその他もろもろで、3日前くらいから手を付けて10時間くらいです。
方針としては、「http://d.hatena.ne.jp/katzchang/20090609/p1」と同様です。デッキを配るというより、プレイヤーが自分のカードを抜き取る方式。
見た目はJavaより短く見えるけど、中身で言えばそんなに変わんないかな。

List use = method(n, self butLast(self length % n))
deal = method(num, deck, ret = []. num times(n, l = []. deck chars use(num) each(i, v, if(i % num == n, l << v)). ret << l join.))
  • デッキの使用範囲外を切り取る操作を"use"メソッドとして定義した。
    • 正確に言えば、標準オブジェクトである"List"に対し、"use"という名前のセルを定義した。細かく言うと、アクティブセルを定義した。
    • "method"はメソッドの定義。引数にパラメータを指定し、最終引数のブロックを実行する。
    • butLastメソッドは、リストの最後から指定数の要素を切り取るメソッド。
  • dealメソッド定義
    • "ret = "は、空のリストインスタンスの定義。ちなみに、もメソッド(というか、正確にはメッセージ)の一つ。
    • "."は、メソッドチェインの終端子。要するに、Javaで言う";"とおんなじ。
    • joinは、リストをテキストとして結合するメソッド。引数を指定しない場合は、要素をそのまま結合する。

で、結果は以下。

iik> deal(3,"123123123")
+> ["111", "222", "333"]

iik> deal(3,"12312312")
+> ["11", "22", "33"]

iik> deal(3,"")
+> ["", "", ""]

Iokeについては、以下からどうぞ。