鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: 冬雪雪冬

[技术交流] Python:每日一题 123

[复制链接]
发表于 2020-6-8 14:10:58 | 显示全部楼层
本帖最后由 uune 于 2020-6-8 14:12 编辑
list1 = [1, 1, 1, 2, 1, 1, 2, 4, 4, 3,
         2, 1, 1, 1, 1, 1, 1, 1, 4, 2,
         1, 2, 3, 1, 4, 2, 1, 1, 2, 4,
         2, 1, 1, 1, 1, 1, 2, 1, 4, 1,
         1, 1, 1, 3, 2, 2, 3, 1, 2, 3,
         3, 2, 4, 1, 1, 1, 1, 1, 1, 4,
         2, 1, 1, 1, 1, 2, 2, 1, 4, 1,
         1, 2, 1, 3, 2, 1, 2, 4, 1, 4,
         1, 2, 1, 1, 1, 1, 4, 2, 2, 2,
         2, 1, 2, 1, 2, 2, 3, 4, 1, 1]

flag = -1           #为了记录第0个格子设置为-1
direction = 1       #默认向右走,+1
dex = []            #记录走过的格子
n = 0               #步数

#从哪边来的专向后该去那边
s2 = {1:10, 10:-1, -1:-10, -10:1}
s4 = {-10:-1, -1:10, 10:1, 1:-10}

while flag != 99:
    n += 1
    
    #右转
    if list1[flag] == 2:
        direction = s2.get(direction)

    #掉头
    elif list1[flag] == 3:
        direction = 0-direction
    
    #左转
    elif list1[flag] == 4:
        direction = s4.get(direction)
        
    #直走
    flag += direction
    print('现在位置是:',flag)

    dex.append(flag)

#去重
dex = list(set(dex))
print('一共走了%d步'%n)
#求和
print('走过的格子的数字相加:',sum([list1[i] for i in dex]))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-20 20:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表