からまでx
の値の範囲を持つように関数を作成するにはどうすればよいですか?また、値が 19 を超えるかゼロ未満の場合、どのようにラップアラウンドさせることができますか?x=0
x=19
x
から:
x=20, x=21, x=22
とx=(-1), x=(-2), x=(-3)
に:
x=0, x=1, x=2
およびx=19, x=18, x=17
それぞれ?
モジュラー算術について聞いたことがありますが、これは明らかに私が対処すべき方法です。
通常は組み込み関数mod
とを使用しますがrem
、宿題には使用できないと思います。したがって、独自の関数を作成できます。
mod20 x | x < 0 = ...
| x > 19 = ...
| otherwise = x
sに入力できるさまざまな項目があります...
。最も簡単な方法の 1 つは足し算または引き算を繰り返すことですが、すべての楽しみを台無しにしたくありません。
この関数を取得したら、「通常の」算術演算ごとに値を「再スケーリング」できますmod20 (12 + 17)
。
mod関数を使用してみてください:
(-5) `mod` 20 ==> 15
5 `mod` 20 ==> 5
20 `mod` 20 ==> 0
25 `mod` 20 ==> 5
このトピックについては、ウィキペディアも参照してください。
使用する
x `mod` 20
(これは答えを30文字にするためのフィラーです。)