Leetcode 1024马尔可夫链小游戏暴力运行代码(python)

必要的库itertools

主要思路:利用其内部提供的库函数itertools.permutations()来求所有的组合,依次进行运算,利用set集合自动去重。

代码如下:
import itertools


# 符号运算
def function(a: int, b: int, f: str) -> int:
    if f == "+":
        return a + b
    if f == "-":
        return a - b
    elif f == "*":
        return a * b
    elif f == "//":
        return a // b
    elif f == "**":
        return a ** b
    elif f == "^":
        return a ^ b
    elif f == "|":
        return a | b
    elif f == "&":
        return a & b
    elif f == ">>":
        return a >> b
    elif f == "<<":
        return a << b


# 这里是你有的数字
nums = [2, 2, 2, 2, 6, 6, 9, 13, 13, 14, 34, 1024]
# 这里是你有的符号
f = ['&', '&', '|', '|', '+', '*', '*', '^', '<<']

list_r = list(itertools.permutations(f, 3))
num_r = list(itertools.permutations(nums, 4))
set_res = set()

for element in list_r:
    f1 = element[0]
    f2 = element[1]
    f3 = element[2]
    for num in num_r:
        res1 = function(num[0], num[1], f1)
        res2 = function(res1, num[2], f2)
        res3 = function(res2, num[3], f3)
        if res3 == 1024:
            # print(str(num[0]) + f1 + str(num[1]) + f2 + str(num[2]) + f3 + str(num[3]) + "={}".format(res3))
            string = "(((" + str(num[0]) + f1 + str(num[1]) + ")" + f2 + str(num[2]) + ")" + f3 + str(
                num[3]) + ") = 1024"
            set_res.add(string)

if len(set_res) == 0:
    print("没有合适的组合")
    sys.exit(0)
# 输出,因为是集合自动去重,1024为什么是SSR卡?
for i in set_res:
    print(i)
sys.exit(0)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值