Created
February 14, 2011 17:47
-
-
Save maraigue/826238 to your computer and use it in GitHub Desktop.
サンタの家を出力するコードゴルフ
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# サンタの家を出力するコードゴルフ(なるべく短くコードを書くことを競う) | |
# http://golf.shinh.org/p.rb?House+of+Santa+Claus | |
# 例えば、STDINから「7」と入力された場合、以下のような高さ7の家を出力する。 | |
#(不可能な高さが入力されたときの挙動はどうでもよいっぽい。) | |
# /\ | |
# / \ | |
# /____\ | |
# |\ /| | |
# | \/ | | |
# | /\ | | |
# |/__\| | |
# | |
# インデントとかコメントを削除すると215bytesになりました。 | |
# def s v;" "*v;end;b=$<.read.to_i/3;puts((a=(0...b)).map{|x|s(b-x)+"/#{s 2*x}\\"},"/#{'__'*b}\\",a.map{|x|"|#{s x}\\#{s 2*(b-x-1)}/#{s x}|"},(0...(b-1)).map{|x|"|#{v=s(b-x-1)}/#{s 2*x}\\#{v}|"},"|/#{'_'*(2*b-2)}\\|") | |
# スペースを出力 | |
def s v | |
" "*v | |
end | |
# bは居住部の高さの半分 | |
b=$<.read.to_i/3 | |
puts( | |
# 屋根(一番下を除く) | |
(a=(0...b)).map{|x|s(b-x)+"/#{s 2*x}\\"}, | |
# 屋根(一番下) | |
"/#{'__'*b}\\", | |
# 建物(上半分) | |
a.map{|x|"|#{s x}\\#{s 2*(b-x-1)}/#{s x}|"}, | |
# 建物(下半分、一番下を除く) | |
(0...(b-1)).map{|x|"|#{v=s(b-x-1)}/#{s 2*x}\\#{v}|"}, | |
# 建物(一番下) | |
"|/#{'_'*(2*b-2)}\\|" | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment