個人的な宿題として、「大きな」数字を表示するデジタル時計プログラムを試しています。
配列に格納された文字列に由来する時計の一部と、任意の数字を「大きな数字」として表示できるルーチン (まだ完全には作成されていません) を持つ ruby プログラム。
これは、ハッシュの操作、配列の反復、文字列の連結などについて詳しく学ぶのに役立ちます。
私は今これで立ち往生しています:
all_nums=''
(0..3).each do |num|
all_nums+= (line_parts[num][0].values).to_s
#puts line_parts[num][0].values
end
puts all_nums
文字列に変換できない配列要素を取得しているため、つまり
ruby digital_clock,rb
[" == "]["| | "]["| | "][" == "]
しかし、それらだけのputs
場合(下から3行目をコメントアウト)は問題ありませんが、文字列が得られます。
ruby digital_clock.rb
==
| |
| |
==
文字列 (この場合は大きな 0) を構築できるようにしたいのですが、ピースを出すことしかできず、それらを変数に割り当てて出力することができませんでした。どうすればそれができますか?
完全なプログラムは次のとおりです。
top= ' == | == == | | == | == == == '
top_middle= '| | | __| __| |__| |__ |__ | |__| |__|'
bottom_middle='| | | | | | | | | | | | |'
bottom= ' == | == == | == == | == |'
number_parts=[{},{},{},{},{},{},{},{},{},{}]
line_parts=[[],[],[],[]]
['top','top_middle','bottom_middle','bottom'].each_with_index do |one_line, i|
number_parts=[{},{},{},{},{},{},{},{},{},{}]
(0..9).each do |the_num|
number_parts[the_num] = {one_line.to_sym => eval(one_line)[the_num*5,5].to_s}
end
line_parts[i]= number_parts
end
all_nums=''
(0..3).each do |num|
all_nums+= (line_parts[num][0].values).to_s
#puts line_parts[num][0].values
end
puts all_nums