我需要一种方法来检查由 ( 0 <= x <= 4 and ( 0 <= y <= 4 ) are unique i.e. no two pints have the same coordinate pairs.
但这里有一个问题:
点数在运行时确定,可以从 1 到 n(好吧,让我们说 <= 10). The coordinates are selected randomly x = rand(0,4) and y = rand(0,4)
附注我在这个项目中使用基于 makecode 块的编码,并且 LED 位于 microbit V1 上。所以上面的代码已经通过makecode从blocks转换为python了。
谢谢
while index22 < level: # level determines how many points I need to generate max 10
listx[index22] = randint(0, 4)
listy[index22] = randint(0, 4)
led.plot(listx[index22], listy[index22]) # turns on an LED at the coordinate value
index22 = index22 + 1
我对此感到困惑..
由于您只显示了 python 代码,所以我的假设是用 python 表达的可能解决方案也是可以接受的。
保证整数的唯一性比保证多维点的唯一性更容易。使用整数除法和模算术的古老技巧允许我们将单个整数映射到唯一的索引。如果我们使用python的
random.sample()
从整数范围内不进行替换地获取指定样本,则会弹出以下代码。
import random
level = 10
# there are 25 distinct points in a 5x5 grid, so we
# sample 'level' unique values in the range 0..24
for value in random.sample(range(25), level):
print(value // 5, value % 5) # map int to indices
我使用了
print()
,这样你就可以确认解决方案的唯一性。将 print()
替换为对您的应用程序的 led.plot()
调用。