クイックソートを40文字以内で実装@HQQ9+

qsort.hqq9+

+h+hqhqq

output

Hello, world!
Hello, world!
+h+hqhqq
Hello, world!
+h+hqhqq

++hhhqqq

概要

クイックソートを40文字以内で、と誰かさんに言われたのでHQQ9+を作った。
もうそのネタ飽きたとかいうな。

hqq9+.rb

acc = 0;
src = $<.read
src.scan(/qq|h|q|9|\+/) do|c|
    case c
    when "qq"
        puts src
        puts src.chars.sort.join("")
    when "h"
        puts "Hello, world!"
    when "q"
        puts src
    when "9"
        99.downto(1) do|i|
            s = (i != 1) ? "s" : "";
            print "#{i} bottle#{s} of beer on the wall.\n\n" if i < 99
            print "#{i} bottle#{s} of beer on the wall, #{i} bottle#{s} of beer.\n"
            print "Take one down, pass it around,\n"
        end
        print "No more bottles of beer on the wall.\n\n"
    when "+"
        acc += 1
    end
end