前提・実現したいこと
A-Zまでのアルファベットを入れた配列を
A=Z
B=Y
のように並び替えるコードをreverse_eachを使って作成
エラー内容
A=Z B=Z C=Z D=Z E=Z F=Z G=Z H=Z I=Z J=Z K=Z L=Z M=Z N=Z O=Z P=Z Q=Z R=Z S=Z T=Z U=Z V=Z W=Z X=Z Y=Z Z=Z
問題を起こすコード
ruby
1letters = %w[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] 2letters.reverse_each do |n| 3 letters.each do |y| 4 puts "#{y}=#{n}" 5end 6end
###reverse_eachを用いないコード(問題なく動作)
ruby
1letters = %w[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] 2(0..25).each do |n| 3 puts "#{letters[n]} = #{letters [-n-1]}" 4end
試したこと
eachループにeachループを重ねているので当然の結果だとは理解しています。
reverse_eachを用いないコードの方では、配列の順番をループさせて数字を抽出した(変数n)上で、letters配列の該当要素を抽出しているので問題なく動くのですが
letters.reverse_eachを用いた場合では、配列の要素そのものを抽出してしまう為
A=Zにおける右辺は出力できますが、reverse_each内の変数において左辺のAを表現する方法がわかりません。
A-Zを順番に出力させるコードを記述すればいいのでしょうが、eachメソッドで出力する方法しか知らない為に
エラー内容の結果へとなっています。
問題コードをどのように書き換えればreverse_eachメソッドを使用した時でも、問題を起こさないコードと同じ出力結果が得られるでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/15 06:01
2018/07/15 06:05
2018/07/15 06:09 編集