神奇的“狼抓兔子”(The absolute security Place)

   在做“狼抓兔子”的练习题目的时候,发现一个神奇的Place。🤗🤗
  费力鼓捣出了代码吧,好像不对,怎么存在永远碰不到的地方!?怀疑代码有事儿,仔细勘察,虽然代码可读性不高,但算法好像真的是那个样子。通过笨办法用笔在纸上一次次模拟查找验证,还直的是,演算到第二十一次——结果正确!🤓🤓(下面贴出我的代码)

  1. 题目
  2. 代码运行效果
  3. 勘察bug
  4. 完整代码

练习题目

在这里插入图片描述


回首页

代码运行效果

在这里插入图片描述

最初鼓捣的代码
(如果从语句注释不能清楚作用,请评论区留言指教和探讨。🤝)
#/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次之后就是无谓的循环了,找的都是查过的地方。

在这里插入图片描述
在这里插入图片描述

哪怕百万次查找,依然动摇不了安全的地方。😋😋

在这里插入图片描述

  我的感悟:在任何规则下,都有可能存在绝对安全的地方。(The 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\n{error}')
            continue
    rabbit = wolf_scratch_rabbit(n)
    print(f"\n\n{'﹊'*21}")
    print(f'狼找兔子{n}次后的兔子窝状况:\n\n{rabbit}')
    print('﹊'*21)
    #安全窝打印
    print('安全窝位置:')
    print('        ', end='')    
    k = 0
    for i in rabbit[:]:
        if i==0:
            print(k, end='  ')
        k += 1
    print(f"\n{'﹊'*21}")

回首页

我的博文推荐:

推荐条件: 点阅破千

参考文章:


上一篇:车辆号牌生成
下一篇:练习:字符串统计


回首页

老齐漫画头像

精品文章:

来源:老齐教室


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦幻精灵_cq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值