Retourner au contenu associé (entrée de forum : Advent of Code 2023, day 6)
Posté par alberic89 🐧 le 06 décembre 2023 à 20:21. En réponse au message Advent of Code 2023, day 6. Évalué à 1.
Très clairement un exos de math qui pourrait être donné à des secondes, il fallait que ça tombe le jour où je n'avais pas le temps avant le soir. Ma solution :
#!/bin/python3 from math import sqrt def parse_input(puzzle): return [[int(i) for i in puzzle[0].split(":")[1].split()], [int(i) for i in puzzle[1].split(":")[1].split()]] def parse_input2(puzzle): time = int(''.join(puzzle[0].split(":")[1].split())) dist = int(''.join(puzzle[1].split(":")[1].split())) return [time,dist] def solve_equ(time,dist): x1 = int((time-sqrt(time**2-4*dist))/2)+1 x2 = (time+sqrt(time**2-4*dist))/2 if int(x2) == x2: x2 = int(x2)-1 else: x2 = int(x2) return [x1,x2] def solve1(puzzle,testing=False): s=0 game = parse_input(puzzle) sol = [] for i,t in enumerate(game[0]): p = solve_equ(t,game[1][i]) sol.append(p[1]-p[0]+1) s=sol[0] for n in sol[1:]: s *= n if testing: print(s) return s def solve2(puzzle,testing=False): s = 0 game = parse_input2(puzzle) p = solve_equ(game[0],game[1]) s = p[1]-p[0]+1 if testing: print(s) return s test1 = """Time: 7 15 30 Distance: 9 40 200""" result1 = 288 test2 = test1 result2 = 71503 # for cli invocation def solve(short=False,one=True,two=True): s1, s2 = False , False if one: print("----Part 1----") if short == False: if solve1(test1.split("\n"),testing=True) != result1: print("Not working.") return False else : print("Maybe working?") with open("input.txt",'r') as file: lines = file.read().split("\n") s1 = solve1(lines) print(s1) if two: print("----Part 2----") if short == False: if solve2(test2.split("\n"),testing=True) != result2: print("Not working.") return False else : print("Maybe working?") with open("input.txt",'r') as file: lines = file.read().split("\n") s2 = solve2(lines) print(s2) return s1, s2 if __name__ == "__main__": from sys import argv s = False one = True two = True if len(argv) >= 2: if "-s" in argv or "--summary" in argv or "--short" in argv: s = True if "1" in argv: two = False one = True elif "2" in argv: one = False two = True if "2" in argv: two = True solve(short=s,one=one,two=two)
L'informatique n'est pas une science exacte, on n'est jamais à l'abri d'un succès
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
# Python et math
Posté par alberic89 🐧 . En réponse au message Advent of Code 2023, day 6. Évalué à 1.
Très clairement un exos de math qui pourrait être donné à des secondes, il fallait que ça tombe le jour où je n'avais pas le temps avant le soir.
Ma solution :
L'informatique n'est pas une science exacte, on n'est jamais à l'abri d'un succès