読者です 読者をやめる 読者になる 読者になる

なんかしらんけど配る

http://ameblo.jp/programming/entry-10001721422.html
via
トランプを配る - 日々ごちゃごちゃと考える
10分でカード配りな! - 象徴ヶ淵
「10分でコーディング」やってみた - kozima の日記 - cadr group
「10分でコーディング」を13分で - 'T - cadr group

ロジック以前にクラスについてうだうだ考えてたら30分経ってたとかダメぽ。
結局お題の条件?無視した形で。

def(String.to_list)^:
  $(l, is) := &([], .istring())
  awhile(is.readc()): l = [*l, it]
  l

def(List.join)^(&opt sep = ""):
  .foldl("")^(acc,e):acc+sep+e

class(Deck)^:
  def(init)^(&opt cards=""):
    .cards = cards.to_list()
    .count = .cards.length()

  def(deal)^(n):
    m := .count / n
    c := .draw(m * n)
    iota(n).map^(i):
      iota(m,i,n).map^(j){c[j]}.join()

  def(draw)^(n):
    $(c, r) := .cards.car_cdr()
    if (n < 1): []
     else:
      .cards = r
      --.count
      [c | .draw(n-1)]

(d = Deck.new("asdfasdf")).deal(3).say()
# => ["af", "sa", "ds"]
say d.cards
# => ["d", "f"]

解答例見てJavaよく知らんけどなんでstaticつけないのとか思った。