machi 发表于 2021-2-21 20:23

python小白求助,逻辑题怎么解?

本帖最后由 machi 于 2021-2-23 13:55 编辑


今天碰到一个逻辑题,就想着用python试试看能不能解出来,结果想 了一下午,也没啥头绪,就来论坛里问问,有没有大神可以提供一下思路?
--------------------------------------------------------------------------
@细水流长 和 @Cool_Breeze都给出了代码,但是我还是有点看不懂,现在还在研究中~~~~~~~~~~~

细水流长 发表于 2021-2-21 21:10

Cool_Breeze 发表于 2021-2-22 11:20

本帖最后由 Cool_Breeze 于 2021-2-22 11:30 编辑

算法还不知道该怎么写!
推理过程:# coding=utf-8
# python3.7.0

arr = [
    , # 1个号码正确,位置正确
    , # 1个号码正确,位置不正确
    , # 2个号码正确,位置都不正确
    , # 没有一个号码正确
    # 1个号码正确,位置不正确
    ]
   
result =
total = []

for n in arr: total.extend(n)

# 去重
total = set(total)
# total = {1, 2, 4, 5, 6, 7, 8, 9}

# , # 没有一个号码正确
# 所有可能正确的数字
for n in arr: total.remove(n)
# total = {2, 5, 6, 8, 9}

# # 1个号码正确,位置不正确
ok = 0
for n in arr:
    if n in total:
      ok = n
      total.remove(n)

# 找到一个正确的数字,但位置不对
# ok = 9
# total = {2, 5, 6, 8}

# , # 2个号码正确,位置都不正确
# 得出 9 的位置为 0
result = ok
# result =

temp = arr.copy()
# temp =
temp.remove(ok)
# temp =
# 6,2 只能有一个是正确的!因为9已经确定为正确!

# , # 1个号码正确,位置正确
# , # 1个号码正确,位置不正确
# 共同号码
same = set(arr) & set(arr)
# 共同号码 same = 2
# 共同号码都在一个位置上面,所以共同号码不满足要求
same = list(same)
if arr.index(same) == arr.index(same):
    temp.remove(same)

# , # 1个号码正确,位置正确
# 得出 6 为正确数字,且位置正确 index = 2
index = arr.index(temp)
result = temp
# result =

# , # 1个号码正确,位置不正确
# 只差中间数字,2,5已被排除
result = arr
# result =
print(result)

细水流长 发表于 2021-2-21 20:38

nue12138 发表于 2021-2-21 20:42

本帖最后由 nue12138 于 2021-2-21 20:43 编辑

密码多少? 只有楼上一种答案吗

namedlxd 发表于 2021-2-21 20:49

本帖最后由 namedlxd 于 2021-2-21 20:50 编辑

可以循环从100到999,然后判断这五个条件是否同时成立

fanvalen 发表于 2021-2-21 20:49

and 和or关系

qianshang666 发表于 2021-2-21 20:49

答案挺容易就能推出来,用python怎么做这个是个问题

fanvalen 发表于 2021-2-21 20:54

先排除不正确的数字在其他组中,再来判断正确数字,最后判断位置

幽溪左畔 发表于 2021-2-21 20:58

这个 python写出来也是按照思路一步一步刻意实现的 这样就失去程序推导的意义了 除非训练个模型 让Ai自己根据题意解

kesai 发表于 2021-2-21 21:45

986,很容易推出
页: [1] 2
查看完整版本: python小白求助,逻辑题怎么解?