日別アーカイブ: 2022年10月13日

TIPS(7以上7777777以下の7の倍数を全て書き出したとき、数字7は何回現れるか)Ruby

問題

7以上7777777以下の7の倍数を全て書き出したとき、数字「7」は何回現れるか出力してください

解答と解説

#7以上7777777以下の配列を範囲で作ってから
#7の倍数の数字と文字列に変換してから文字列の7が含まれる配列を作成する
seventh_array = [*7..7777777].select{ |i| i % 7 == 0 && i.to_s.include?('7')}

#↓以下のような配列になっていれば成功している
#[7, 70, 77, 147, 175, 217, 273, 287, 357, 371, 378, 427, 476,・・・7777777 ]

#カウンターを作り0で初期化
counter = 0

#繰り返し処理をする
seventh_array.each do |number|

#文字列の7がいくつあるか.countで数えてカウンターに加算する
  counter += (number.to_s).count("7")

end
# カウンターの数を出力
puts counter

短くすると

#7以上7777777以下の配列を範囲で作ってから、7の倍数の数字のみの配列にする
#文字列に変換してから文字列の7が含まれるものに抽出する
seventh_array = [*7..7777777].select{ |i| i % 7 == 0 && i.to_s.include?('7')}

#カウンターを作り0で初期化
counter = 0

#文字列の7がいくつあるか.countで数えてカウンターに加算する
seventh_array.each { |number| counter += (number.to_s).count("7")  }

# カウンターの数を出力
puts counter