4

からまでxの値の範囲を持つように関数を作成するにはどうすればよいですか?また、値が 19 を超えるかゼロ未満の場合、どのようにラップアラウンドさせることができますか?x=0x=19x

から: x=20, x=21, x=22x=(-1), x=(-2), x=(-3)

に: x=0, x=1, x=2およびx=19, x=18, x=17 それぞれ?

モジュラー算術について聞いたことがありますが、これは明らかに私が対処すべき方法です。

4

3 に答える 3

7

通常は組み込み関数modとを使用しますがrem、宿題には使用できないと思います。したがって、独自の関数を作成できます。

mod20 x | x < 0 = ...
        | x > 19 = ...
        | otherwise = x

sに入力できるさまざまな項目があります...。最も簡単な方法の 1 つは足し算または引き算を繰り返すことですが、すべての楽しみを台無しにしたくありません。

この関数を取得したら、「通常の」算術演算ごとに値を「再スケーリング」できますmod20 (12 + 17)

于 2011-05-20T13:11:59.483 に答える
3

mod関数を使用してみてください:

(-5) `mod` 20 ==> 15
5 `mod` 20 ==> 5
20 `mod` 20 ==> 0
25 `mod` 20 ==> 5

このトピックについては、ウィキペディアも参照してください。

于 2011-05-20T13:08:58.720 に答える
1

使用する

x `mod` 20

(これは答えを30文字にするためのフィラーです。)

于 2011-05-20T13:09:19.843 に答える