二足のわらじ

〜プログラミングとSEOの勉強をはじめたミーハー26歳のメモ帳〜

【学習57日】Ruby練習問題_ズンドコ キ★ヨ★シ問題【応用19日】

Rubyの練習問題「ズンドコ キ★ヨ★シ問題」を自力で解けた!

端から見れば
「ただの練習問題で喜ばれても困るわ」
と言われそうだけれども、
自力で仮説を立て調べながら解けたのが
多少なりとも成長として感じられたので
記録しておきます!

勉強を頑張る駆け出しエンジニアの皆様も箸休めに是非🙇‍♀️

練習問題

「ズン」「ドコ」のいずれかをランダムで出力し続けて
「ズン」「ズン」「ズン」「ズン」「ドコ」の配列が出たら
「キ・ヨ・シ!」と出力させてプログラムを終了させる。

■期待する出力
ズン・ズン・ズン・ズン・ドコ・キヨシ!!と出力させる。

■条件
・条件を満たすまでループする。
・条件を満たせばプログラムを終了させる。
・出力させるのは「ズン・ドコ」の2つ

自分の回答

song = ["ズン","ドコ"]
input = []
i = 0

while true
  hensu = song.sample
  input.push(hensu)
  puts input[i-1]

  if input.length >=4 and input[i-1]=="ドコ" and input[i-2]=="ズン" and input[i-3]=="ズン" and input[i-4]=="ズン" and input[i-5]=="ズン"
    break
  end
  i += 1
end

puts " ★ キ ★ ヨ ★ シ ★ "

■メモ
・配列に入った値をランダムで表示させる
配列.sample

・配列に要素を追加する
配列.push( 追加したい要素 )



■反省
・変数の名前の付け方
・繰り返しを抜ける条件式が力技



■参考記事

はじめてのRuby!配列をランダムに取得・入れ替え|sample・shuffle | 侍エンジニア塾ブログ(Samurai Blog) - プログラミング入門者向けサイト

【Ruby入門】ifやif elseの基本からANDやORを使う応用まで完全解説!! | 侍エンジニア塾ブログ(Samurai Blog) - プログラミング入門者向けサイト

Ruby 繰り返し処理いろいろ - Qiita



模範回答

array = ["ズン", "ドコ"]
str1, str2, str3, str4, str5 ,str6= ""
while true do
  num = rand(0..1)
  str6,str5, str4, str3, str2, str1 =str5, str4, str3, str2, str1, array[num]
  puts str1
 if str6 == "" || str6 == "ドコ"
     if str5 == "ズン" && str4 == "ズン" &&  str3 == "ズン" && str2 == "ズン" && str1 == "ドコ"
        puts " ★ キ ★ ヨ ★ シ ★ "
        exit
      end
   end
   gets
end



■メモ
・乱数を発生させる

puts rand(100) →  0~100の乱数を生成
puts rand(10..20) →  10~20までの乱数を生成
num = rand(0..1) →  0~1のどちらかを変数numに入れる



■参考記事
Rubyで乱数を生成する方法を現役エンジニアが解説【初心者向け】 | TechAcademyマガジン