Ruby 2.7 でスターリンソートを書いてみた
元ネタ
と、いうことで Ruby でも書いてみました。
ただ書くだけじゃつまらないので Ruby 2.7 で追加予定のパターンマッチを使ってみるなど。
コード
def stalin_sort(xs) case xs in [] [] in [x] [x] in [x, y, *zs] if x < y [x] + stalin_sort([y, *zs]) else stalin_sort [x, *zs] end end p stalin_sort [1, 2, 1, 1, 4, 3, 9] # => [1, 2, 4, 9] p stalin_sort ['a', 'c', 'b', 'a','c','d'] # => ["a", "c", "d"]
パターンマッチ便利。