python小白求助,逻辑题怎么解?
本帖最后由 machi 于 2021-2-23 13:55 编辑今天碰到一个逻辑题,就想着用python试试看能不能解出来,结果想 了一下午,也没啥头绪,就来论坛里问问,有没有大神可以提供一下思路?
--------------------------------------------------------------------------
@细水流长 和 @Cool_Breeze都给出了代码,但是我还是有点看不懂,现在还在研究中~~~~~~~~~~~ 本帖最后由 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) 本帖最后由 nue12138 于 2021-2-21 20:43 编辑
密码多少? 只有楼上一种答案吗 本帖最后由 namedlxd 于 2021-2-21 20:50 编辑
可以循环从100到999,然后判断这五个条件是否同时成立 and 和or关系 答案挺容易就能推出来,用python怎么做这个是个问题 先排除不正确的数字在其他组中,再来判断正确数字,最后判断位置 这个 python写出来也是按照思路一步一步刻意实现的 这样就失去程序推导的意义了 除非训练个模型 让Ai自己根据题意解 986,很容易推出
页:
[1]
2