実現したいこと
しりとりのコードを書いています。
配列の要素を先頭から順に2個ずつ取り出し、shiritori()に引数として与えて、もし1単語目の最後尾の文字と2単語目の先頭の文字を比べて一致しなければその値を返してプログラム終了にしたいです。
今回の例だと欲しい値は以下の文章が出てループを抜けたい。
「「xとa」が違うよ」
どのようにすれば解決するのか、あるいはもっと良い方法があるなら教えてください。
よろしくお願いいたします。
発生している問題・分からないこと
「「xとa」が違うよ」の時点でプログラムを強制終了したいのに、次の”abc”と”cc”を比較してしまいます。
出力結果は以下です。
["apple", "et", "tex", "abc", "dc"]
xとaが違うよ
cとdが違うよ
該当のソースコード
ruby
1p shiritori_words = ["apple", "et", "tex", "abc", "dc"] 2 3shiritori_end = false 4def shiritori(words) 5 word1, word2 = words 6 if word1[-1] != word2[0] 7 puts "#{word1[-1]}と#{word2[0]}が違うよ" 8 shiritori_end = true 9 end 10end 11 12shiritori_words.each_cons(2) do |two_words| 13 shiritori(two_words) 14 break if shiritori_end 15end
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
shiritori()内のshiritori_endの値がtrueになる時、each文に戻ってくるとfalseになっています。
だからeach文のbreak ifが使えないみたいで、、
補足
特になし
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/03/12 18:29