我有困难需要解决,我想将一个数字转换为给定范围内的“相等”数字。
虽然这个概念非常简单,但很难解释,所以我会尽力而为。
这是在playground中的输出结果:
但是它只在我描述的条件下起作用,在与之斗争了数小时后,我仍然找不到任何好的解决方案,使其适用于任何数字,无论是正数还是负数,以及任何范围。
如需更多细节,请在评论中询问。
谢谢。
虽然这个概念非常简单,但很难解释,所以我会尽力而为。
假设您有一排无限数量的瓷砖,但尽管有无限数量的瓷砖,但重复的确切颜色图案是相同的,就像这样:
正如您所看到的,我已经给每个瓷砖编号,但我们可以取一个范围,从0到4,然后说:
0是紫色
1是蓝色
2是红色
3是绿色
4是黄色
但是由于这种颜色模式无限重复,实际上,5将与0具有相同的颜色,6将与1具有相同的颜色,8将与3具有相同的颜色。
此外,我们也不能忘记负数,例如-1将与4具有相同的颜色。
实际上,我要做的是将任何给定的数字转换为我选择的范围内的数字,这里是范围[0;4],以便我将知道哪种颜色对应于这个特定的瓷砖。
我还希望此方法适用于其他范围,例如,如果我的范围是[1;5],甚至是[-7;-3]也应该适用。
我已经找到了一种适用于[0;n]范围(其中n为正整数)且a为另一个正整数的方法:
convertedNumber = a % (n+1)
这是在playground中的输出结果:
![我们正在进行转换,它的表现符合预期](https://istack.dev59.com/cUom8.webp)
但是它只在我描述的条件下起作用,在与之斗争了数小时后,我仍然找不到任何好的解决方案,使其适用于任何数字,无论是正数还是负数,以及任何范围。
如需更多细节,请在评论中询问。
谢谢。
-9
,您想返回1
吗? - IVlad[-7,-3]
,而你的数字是-9
,你想将它映射到-6
,对吗? - Karthik