ループと条件分岐などを組み合わせて,与えられた課題を正確に実装しましょう.
少しの工夫で楽をすることもできます.
問題原案:@machoniump
past
, now
, future
をそのまま用いて,条件分岐などで行動を表すことも可能ですが,若干冗長になってしまいます.
そこで,もう少し表現の仕方を工夫してみましょう.
与えられた行動は, つの世界を左からそれぞれ のような数値に対応させると,次のように考えることができます.
B
なら, から を引く.G
なら, に を足す.課題をこのように捉えることで,実装を簡潔にまとめることができます.
より厳密には, が 未満なら を に, 既超なら にします.
基本的には上記のことをそのまま実装するだけですが,if
などを極力使わずに短い式で記述する方法もあります.
具体的には,多くの言語にある「三項演算子」を利用します.(詳細は各言語のリファレンス等を参照してください.)
実際のコードは次の「実装例」項にあります.
言語によっては constrain()
といった関数がある場合もありますが,ふつうは自分で用意する必要があります.
x = max(0, min(2, x))
などと書くことで簡潔に実装できます.
回整数値の演算を行うだけなので,全体で です.