

Xを変数として①の条件により+1or-1を追加していき、Xの偏りが+5or-5になったら②or③に移行する。そして②、③に移行して条件をクリアしたらリセットされてまたループするというコードを書きたいのですがうまくいきません。  
ここまでは雰囲気で書いたのですが思い通りに動いてくれません、いい方法ありませんか？よろしくお願いします。

loop do  
X = 0  
\---------------------------------------------①  
if ほげほげ  
X = X - 1  
elsif ほげほげ  
X = X + 1  
\--------------------------------------------------②  
if X > 5  
X = X - 5  
\------------------------------------------------- ③  
if X < -5  
X = X + 5

end


CC BY-SA 3.0
2017-11-16T11:57:26.853
39625
2017-11-16T14:01:57.867
24756
question
ruby
Ruby 分岐ごとのカウントについて


コメント欄で指摘されている通り、Xをループ内で初期化してしまうとループが戻ってくる度にXが0に初期化されてしまうため上手くいかないので、Xの初期化はループの外で行いましょう。  
また、Xの値が+5,
-5になったら0にするには、Xの絶対値が5ならば0にするという式に単純化できそうです。(rubyはif文を後ろに書くことが出来る。if修飾子と呼ばれるもの)

[code]

    X = 0
    loop do
      if hoge
        X = X + 1
      elsif fuga
        X = X - 1
      end
    
      X = 0 if X.abs == 5
    end
    
[/code]

余談ですが、質問文のコードにはif文の対になるendが存在しないため、大変読みづらいです。


CC BY-SA 3.0
2017-11-16T14:01:57.867
39627
2017-11-16T14:01:57.867
7655
39625
answer