ルール
- 入力は整数の1-25まで
- 入力が偶数だった場合は "invalid" と出力する
- 入力の数値が2増えるごとに、出力の行と列が1行増え、1行進むごとに使用する文字は a, b, c と変化していく
- 出力は以下のような菱形になり、菱形を形作るのは a-y の文字で、それ以外の箇所は半角のアンダースコアとする
出力例
入力 1
$ test.rb 1
a
入力 5
$ test.rb 5
__a__
_b_b_
c___c
_d_d_
__e__
入力 25
$ test.rb 25
____________a____________
___________b_b___________
__________c___c__________
_________d_____d_________
________e_______e________
_______f_________f_______
______g___________g______
_____h_____________h_____
____i_______________i____
___j_________________j___
__k___________________k__
_l_____________________l_
m_______________________m
_n_____________________n_
__o___________________o__
___p_________________p___
____q_______________q____
_____r_____________r_____
______s___________s______
_______t_________t_______
________u_______u________
_________v_____v_________
__________w___w__________
___________x_x___________
____________y____________
入力 2
$ test.rb 2
invalid
プログラム(Ruby)
on_char = 'a'
count = ARGV.first.to_i
row_base = Array.new(count, '_')
rows = Array.new(count)
if count.even?
puts "invalid"
exit(0)
end
count.times do |i|
j = i < (count / 2) ? i : count - i - 1
row = row_base.dup
center = count / 2
row[center + j] = on_char
row[center - j] = on_char
rows[i] = row
on_char = on_char.succ
end
puts rows.map(&:join).join("\n")