神奇的“狼抓兔子”(absolute security Place)
Posted 梦幻精灵_cq
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了神奇的“狼抓兔子”(absolute security Place)相关的知识,希望对你有一定的参考价值。
在做“狼抓兔子”的练习题目的时候,发现一个神奇的Place。🤗🤗
费力鼓捣出了代码吧,好像不对,怎么存在永远碰不到的地方!?怀疑代码有事儿,仔细勘察,虽然代码可读性不高,但算法好像真的是那个样子。通过笨办法用笔在纸上一次次模拟查找验证,还直的是,演算到第二十一次——结果正确!🤓🤓(下面贴出我的代码)
练习题目
代码运行效果
最初鼓捣的代码
#/sur!bin/nve python
# coding: utf-8
#设置10个围成一圈的兔子窝为数列,想象她首尾相接
rabbit = [0 for i in range(10)]
n = n2 = 10 #n为狼追查次数
step = list(range(n)) #查看兔子窝间隔数
start = 0
k = 0
while n:
rabbit[(start+k)%10] = 1 #标识已找过兔子窝
#print(f'\\n\\n查兔子窝序号:(start+k)%10')
start = start + k + 1 #当前兔子窝占位+1
#print(f'\\nstart:start\\nk:k\\nn:n')
k += 1
n -= 1
#print(f'Start:start,取10的余:start%10\\n')
#input(f'\\n兔子窝:\\n rabbit')
input(f'\\n狼追查n2次后的兔子窝:\\n rabbit')
勘察错误
代码运行验证效果
查找7次之后就是无谓的循环了,找的都是查过的地方。
哪怕百万次查找,依然动摇不了安全的地方。😋😋
我的感悟:在任何规则下,都有可能存在绝对安全的地方。(absolute security Place)🧐
python完整代码
#/sur!bin/nve python
# coding: utf-8
#优化后的代码
def wolf_scratch_rabbit(n):
'''狼抓兔,n为查窝次数'''
#设置10个围成一圈的兔子窝为数列,想象她首尾相接
rabbit = [0 for i in range(10)]
scratch = 1 #查窝次数初始
count = 1 #遍历兔子窝计数
while True:
rabbit[count%10-1] = 1 #查看过的兔子窝用'1'标识
if scratch==n: #当查窝次数用完,停止查窝
break
count += scratch + 1 #更新计数
#下次查窝间隔即为当前查窝次数,未计入当前窝,所以计数+1
scratch += 1 #查窝次数更新
return rabbit #返回当前兔子窝状况
if __name__=='__main__':
while True:
try:
n = int(input(f'\\n\\n 查窝次数:')) #查窝次数设置
break
except Exception as error:
input(f'\\n\\n" "*16"输入错误!"\\n\\nerror')
continue
rabbit = wolf_scratch_rabbit(n)
print(f"\\n\\n'﹊'*21")
print(f'狼找兔子n次后的兔子窝状况:\\n\\nrabbit')
print('﹊'*21)
#安全窝打印
print('安全窝位置:')
print(' ', end='')
k = 0
for i in rabbit[:]:
if i==0:
print(k, end=' ')
k += 1
print(f"\\n'﹊'*21")
我的博文推荐:
推荐条件:
点阅破千
参考文章:
精品文章:
来源:老齐教室
以上是关于神奇的“狼抓兔子”(absolute security Place)的主要内容,如果未能解决你的问题,请参考以下文章