不二如是 发表于 2022-8-29 18:58:32

0011-编程打卡:按照如下规则进行报数

本帖最后由 不二如是 于 2022-8-29 18:58 编辑







一星答案:

count=1
#设置一个计数器用于报数
def fun(x):
      global count
      #Python2当函数内需要对全局变量赋值时需要先声明
      if len(x)==1:
                print x
      #退到只剩1个人的时候就能知道答案
      else:
                for i in x:
                        if count==3:
                              n=x.index(i)
                              x='a'
                              count=1
                        #当报数到3时将该人赋值为a,并重置计数器
                        else:
                              count+=1
                        #没报到3就下一个
                for i in x:
                        if i=='a':
                              del x
                        #将变成3的人统统消灭
                fun(x)
                        #数组已经改变了,重新调用一次函数
n=input('请输入人数:')
array=range(1,n+1)
fun(array)      


二星答案:

n = int(input('请输入n的值:'))
arr = list(range(1,n+1,1))
i = 1
m = 0
while len(arr)>1:
    #print('m',m,'i',i)
    if i == 3 and m < len(arr):
      arr.pop(m)
      i = 1
      continue
    elif m > len(arr)-1:
      m = 0
      continue
    m += 1
    i += 1
print(arr)

三星答案:

**** Hidden Message *****

基础语法:

https://www.bilibili.com/video/BV1c4411e77t

算法讲解:

https://www.bilibili.com/video/BV1HT4y1K7DY



柿子饼同学 发表于 2022-8-29 20:00:43

学习一下

atc123 发表于 2022-8-29 22:08:26

本帖最后由 atc123 于 2022-8-29 22:17 编辑

学习一下

qq1151985918 发表于 2022-8-29 23:15:10

假设一共10个人,第一次去掉3,然后是从4开始报数还是从1开始报数?

qq1151985918 发表于 2022-8-29 23:53:07

本帖最后由 qq1151985918 于 2022-8-30 00:05 编辑

def foo(arr):
    if len(arr) < 3:
      return arr[-1]
    return foo(arr + arr[:2])

if __name__ == '__main__':
    n = int(input('请输入n的值:'))
    print(foo(list(range(1, n+1))))

aaron0919 发表于 2022-8-30 08:35:55

学习一下

aaron0919 发表于 2022-8-30 08:37:39

约瑟夫环问题

tomok 发表于 2022-8-30 08:50:26

学习一下

Oldthoughts 发表于 2022-8-30 10:22:13

学习一下

hveagle 发表于 2022-8-30 14:38:06

qq1151985918 发表于 2022-8-29 23:15
假设一共10个人,第一次去掉3,然后是从4开始报数还是从1开始报数?

1

Lai013 发表于 2022-8-30 15:33:36

三星答案非常棒。

hornwong 发表于 2022-8-30 16:16:18

学习一下
页: [1]
查看完整版本: 0011-编程打卡:按照如下规则进行报数