鱼C论坛

 找回密码
 立即注册
查看: 567|回复: 3

一个问题!!求解,跪求 哭唧唧 在线等

[复制链接]
发表于 2018-9-15 18:54:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
挑战6: 有些四位数的各位数字均取自1,2,3,4,5(可重复选取),并且任意相邻两位数字(大减小)的差都是1。则这样的四位数共有多少个?分别是哪些?
这是我自己写的答案:逻辑都是对的啊 我想不通 哪里错了.哭唧唧
tuple1 = [1,2,3,4,5]
tuple2 = []
for i in range(1000,5556):
    fly1 = 1 # 0表示不在其中,1表示在其中
    fly2 = 1 # 0代表相邻不为1 1代表相邻为1
    temp = i 
    while temp:
        j = temp % 10
        tuple2.append(j)
        if j not in tuple1:
            fly = 0
            tuple2= []
            break
        temp //= 10
    length = len(tuple2)
    for each in range(length):
        if each+1 < length:
            if abs(tuple2[each+1]-tuple2[each])!=1:
                fly2 = 0
                break   
    tuple2= []
    if fly1 == 1 and fly2 == 1:
        print(i)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-9-15 19:21:39 | 显示全部楼层
那里本应写fly1 我写成fly了 抱歉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-15 20:14:38 | 显示全部楼层
本帖最后由 凌九霄 于 2018-9-15 20:18 编辑
import itertools

T = [ 1, 2, 3, 4, 5 ]

X = list(itertools.product(T, repeat=4))

for i in X:
    if abs(i[ 0 ] - i[ 1 ]) == abs(i[ 1 ] - i[ 2 ]) == abs(i[ 2 ] - i[ 3 ]) == 1:
        print(i)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-15 20:52:19 | 显示全部楼层
不介意的话
import math as m

inc_list = []

for i in range(1000,5556):
    flag = 1
    for j in range(int(m.log10(i)+1, 1, -1):
        c1 = (i%10**j) // (10**(j-1))
        c2 = (i%10**(j-1)) // (10**(j-2))
        if c2 ==0 or c2 >5:
            flag = 0
            break
        if abs(c1-c2) != 1:
            flag = 0
            break
    if flag:
        inc_list.append(i)

print(len(inc_list))
print(inc_list)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-7 04:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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