Naujas atsakymas[×]
Vardas
El. paštas
Tema
Žinutė
Failai Maks. 5 failai10MB iš viso
Password
[Naujas atsakymas]


pahmas.gif
[Slėpti] (3MB, 450x296)
https://adventofcode.com/2023

ar dalyvausit šiais metais virai ? dalinames sprendimais ~~

1 diena :
import re

sum = 0
i = 1
spellednumbers = [['zero', '0'], ['one', '1'], ['two', '2'], ['three', '3'], ['four', '4'], ['five', '5'], ['six', '6'], ['seven','7'], ['eight', '8'], ['nine', '9']]
numberRegex = r'\d|one|two|three|four|five|six|seven|eight|nine'

with open('input.txt') as inputFile:
    f = open("output1.txt", "w")
    for line in inputFile:
        matchBuffer = []

        #start regex pattern matching, if we find a spelled digit we check if it overlaps with another
        for match in re.finditer(numberRegex, line):
            s  = match.start()
            e = match.end()
            matchBuffer.append(line[s:e])
            if line[s:e].isnumeric() == False:
                for spelledNumber in spellednumbers:
                    number = spelledNumber[0]
                    overlappingIndex = e - 1
                    overlapped = line.find(number, overlappingIndex, overlappingIndex + len(number))
                    if overlapped != -1:
                        #we found overlapping digit, add it to buffer
                        sub = line[overlapped:overlapped + len(number)]
                        matchBuffer.append(sub)
                        break


        firstDig = matchBuffer[0]
        secondDig = matchBuffer[len(matchBuffer) - 1]

        #find numeric value for first digit
        for index, number in enumerate(spellednumbers):
            if firstDig in number:
                firstDig = str(index)
                break
            
        #find numeric value for second digit
        for index, number in enumerate(spellednumbers):
            if secondDig in number:
                secondDig = str(index)
                break

        result = firstDig + secondDig
        sum+=int(result)
        i+=1
        f.write("["+ line.strip() + "] -> " + str(matchBuffer) + " -> " + result + "\n")
    f.write("sum of calibration values: " + str(sum))
    f.close()
138566969_160494458881384_8701972259112272665_n.png
[Slėpti] (4.4MB, 1600x2048)
2 diena :

import re

redThresh = 12
greenThresh = 13
blueThresh = 14

red = []
green = []
blue = []

idSum = 0
powerSum = 0
with open('input.txt') as inputFile:
    f = open("output.txt", "w")
    for line in inputFile:
            gameRBuffer = []
            gameBBuffer = []
            gameGBuffer = []
            game = line.split(": ")
            gameId = re.findall(r'\d+', game[0])
            sets = game[1].split("; ")
            for set in sets:
                  cubes = re.findall(r'\d+ \w+', set)
                  for cube in cubes:
                       if cube.find('red') != -1:
                            number = re.findall(r'\d+', cube)
                            gameRBuffer.append(int(number[0]))
                       if cube.find('blue') != -1:
                            number = re.findall(r'\d+', cube)
                            gameBBuffer.append(int(number[0]))
                       if cube.find('green') != -1:
                             number = re.findall(r'\d+', cube)
                             gameGBuffer.append(int(number[0]))
            red.append(gameRBuffer)
            green.append(gameGBuffer)
            blue.append(gameBBuffer)
            possibleR = all(i <= redThresh for i in gameRBuffer)
            possibleG = all(i <= greenThresh for i in gameGBuffer)
            possibleB = all(i <= blueThresh for i in gameBBuffer)
            possible = (possibleR and possibleG and possibleB)
            if possible == True:
                  idSum += int(gameId[0])

            fewestR = sorted(gameRBuffer, reverse=True)[0]
            fewestG = sorted(gameGBuffer, reverse=True)[0]
            fewestB = sorted(gameBBuffer, reverse=True)[0]

            power = fewestG * fewestR * fewestB
            powerSum += power

            f.write("[{}] -> R{} G{} B{} -> Possible : {} -> Fewest [R {}, G {}, B {}]\n".format(
                  str(gameId[0]),
                  str(gameRBuffer),
                  str(gameGBuffer),
                  str(gameBBuffer),
                  str(possible),
                  str(fewestR),
                  str(fewestG),
                  str(fewestB)))
    f.write("Sum of all possible game IDs -> {}\n".format(str(idSum)))
    f.write("Sum of fewest set of cubes powers -> {}\n".format(str(powerSum)))
    f.close()
[Naujas atsakymas]
Jungiamasi...
Rodyti įrašo veiksmus

Veiksmai:

CAPTCHA:

- naujienos - taisyklės - duk -
jschan 1.7.3