【问题标题】:code not working for advent of code 2020 day 2 part 1代码不适用于代码 2020 第 2 天第 1 部分的出现
【发布时间】:2022-01-04 15:52:07
【问题描述】:

我的输出不是答案,我也有有效列表来检查所有有效,我可以确认我检查某事是否有效的方式绝对是错误的,但我不知道如何解决它

问题:https://adventofcode.com/2020/day/2

我的输出是 450,这是拼图输入:https://pastebin.com/MBHaMr7m

#Day 2 part 1
count = 0
valid = 0
#valids = []

with open('inputs\input2.txt') as f:
    data = f.read()
    data = data.replace(" ", "")
    data = data.replace("-", "")
    data = data.replace(":", "")

data = [str(x) for x in data.splitlines()]
data = [list(x) for x in data]

for i in range(len(data)):
    for j in data[i][3:]:
        if data[i][2] == j:
            count += 1

        if count >= int(data[i][0]) and count <= int(data[i][1]):
            valid += 1
            #valids.append(data[i])
            count = 0

        else:
            count = 0    

#print(valids)
print(valid)

当我打印valids时,密码都是无效的,我检查它是否正确的方法很可能是错误的,我仍然无法弄清楚我的代码有什么问题,请帮忙。 (顺便说一句,找不到合适的标题)

【问题讨论】:

  • 发布指向您输入的链接没有用,因为我们没有以您的身份登录。
  • @khelwood 那么我该如何发送我的输入呢?如果我没有错,输入格式无论如何都是一样的
  • 您的解析已损坏。与示例输入不同,第一个字段不一定是 3 个字符。您不能简单地从输入中删除所有空格、-:
  • 这是我自己输入的一个示例:14-16 b: bbbbbbbbbbbbbtbbb
  • 为什么我不能删除所有的空格和东西

标签: python list file for-loop nested-lists


【解决方案1】:

您对输入做出了无效的假设,特别是每个范围由两个个位数组成。尝试类似

with open(r'inputs\input2.txt') as f:
    for line in f:
        lowhigh, character, password = line.strip().split()
        low, high = lowhigh.split('-')
        low = int(low)
        high = int(high)

        # Now check if <character> occurs between <low> and <high> times in <password>

【讨论】:

  • 我编写了新代码,但它不起作用,是的,我的解析方法和你一样,但它仍然不起作用,输出太小(我的输出是 3)
  • 这是我的粘贴代码:pastebin.com/fjsTxArq
  • 没关系,我修好了,我只需要在每次检查后重置计数
猜你喜欢
  • 2023-03-11
  • 2016-03-19
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 2022-11-19
  • 1970-01-01
  • 2016-08-13
相关资源
最近更新 更多