6 Angajamente 6681232766 ... 7cc06d0d51

Autor SHA1 Permisiunea de a trimite mesaje. Dacă este dezactivată, utilizatorul nu va putea trimite nici un fel de mesaj Data
  Piotr Czajkowski 7cc06d0d51 Added description 1 săptămână în urmă
  Piotr Czajkowski 3af836c715 Still nope 1 săptămână în urmă
  Piotr Czajkowski 7daea2c408 Simpler 1 săptămână în urmă
  Piotr Czajkowski 9f64496c9e Solved part2 for example, too slow for full input 1 săptămână în urmă
  Piotr Czajkowski 297762db83 Solved part1 1 săptămână în urmă
  Piotr Czajkowski ec342809bd Able to read input§ 1 săptămână în urmă
3 a modificat fișierele cu 785 adăugiri și 0 ștergeri
  1. 109 0
      11/code.go
  2. 77 0
      11/description.txt
  3. 599 0
      11/input

+ 109 - 0
11/code.go

@@ -0,0 +1,109 @@
+package main
+
+import (
+	"bufio"
+	"fmt"
+	"log"
+	"os"
+	"strings"
+)
+
+func readInput(file *os.File) map[string][]string {
+	scanner := bufio.NewScanner(file)
+	devices := make(map[string][]string)
+
+	for scanner.Scan() {
+		line := scanner.Text()
+		if line == "" {
+			continue
+		}
+
+		parts := strings.Split(line, ": ")
+		if len(parts) < 2 {
+			log.Fatalf("Bad input: %s", line)
+		}
+
+		name := parts[0]
+		connections := strings.Split(parts[1], " ")
+		devices[name] = connections
+	}
+
+	return devices
+}
+
+func part1(entry string, devices map[string][]string) int {
+	if entry == "out" {
+		return 1
+	}
+
+	var count int
+	for _, device := range devices[entry] {
+		count += part1(device, devices)
+	}
+
+	return count
+}
+
+func passedDACandFFT(path []string) bool {
+	var dac, fft bool
+	for i := range path {
+		if path[i] == "dac" {
+			dac = true
+		}
+
+		if path[i] == "fft" {
+			fft = true
+		}
+	}
+
+	return dac && fft
+}
+
+func part2(entry string, devices map[string][]string) int {
+	var count int
+	visited := make(map[string]bool)
+	path := []string{}
+
+	var dfs func(current string)
+	dfs = func(current string) {
+		path = append(path, current)
+		visited[current] = true
+		defer func() {
+			path = path[:len(path)-1]
+			visited[current] = false
+		}()
+
+		if current == "out" {
+			if passedDACandFFT(path) {
+				count++
+			}
+
+			return
+		} else {
+			for _, neighbor := range devices[current] {
+				if !visited[neighbor] {
+					dfs(neighbor)
+				}
+			}
+		}
+	}
+
+	dfs(entry)
+	return count
+}
+
+func main() {
+	if len(os.Args) < 2 {
+		log.Fatal("You need to specify a file!")
+	}
+
+	filePath := os.Args[1]
+	file, err := os.Open(filePath)
+	if err != nil {
+		log.Fatalf("Failed to open %s!\n", filePath)
+	}
+
+	devices := readInput(file)
+	fmt.Println("Part1:", part1("you", devices))
+	fmt.Println("Part2:", part2("svr", devices))
+}

+ 77 - 0
11/description.txt

@@ -0,0 +1,77 @@
+--- Day 11: Reactor ---
+
+You hear some loud beeping coming from a hatch in the floor of the factory, so you decide to check it out. Inside, you find several large electrical conduits and a ladder.
+
+Climbing down the ladder, you discover the source of the beeping: a large, toroidal reactor which powers the factory above. Some Elves here are hurriedly running between the reactor and a nearby server rack, apparently trying to fix something.
+
+One of the Elves notices you and rushes over. "It's a good thing you're here! We just installed a new server rack, but we aren't having any luck getting the reactor to communicate with it!" You glance around the room and see a tangle of cables and devices running from the server rack to the reactor. She rushes off, returning a moment later with a list of the devices and their outputs (your puzzle input).
+
+For example:
+
+aaa: you hhh
+you: bbb ccc
+bbb: ddd eee
+ccc: ddd eee fff
+ddd: ggg
+eee: out
+fff: out
+ggg: out
+hhh: ccc fff iii
+iii: out
+Each line gives the name of a device followed by a list of the devices to which its outputs are attached. So, bbb: ddd eee means that device bbb has two outputs, one leading to device ddd and the other leading to device eee.
+
+The Elves are pretty sure that the issue isn't due to any specific device, but rather that the issue is triggered by data following some specific path through the devices. Data only ever flows from a device through its outputs; it can't flow backwards.
+
+After dividing up the work, the Elves would like you to focus on the devices starting with the one next to you (an Elf hastily attaches a label which just says you) and ending with the main output to the reactor (which is the device with the label out).
+
+To help the Elves figure out which path is causing the issue, they need you to find every path from you to out.
+
+In this example, these are all of the paths from you to out:
+
+Data could take the connection from you to bbb, then from bbb to ddd, then from ddd to ggg, then from ggg to out.
+Data could take the connection to bbb, then to eee, then to out.
+Data could go to ccc, then ddd, then ggg, then out.
+Data could go to ccc, then eee, then out.
+Data could go to ccc, then fff, then out.
+In total, there are 5 different paths leading from you to out.
+
+How many different paths lead from you to out?
+
+Your puzzle answer was 472.
+
+The first half of this puzzle is complete! It provides one gold star: *
+
+--- Part Two ---
+
+Thanks in part to your analysis, the Elves have figured out a little bit about the issue. They now know that the problematic data path passes through both dac (a digital-to-analog converter) and fft (a device which performs a fast Fourier transform).
+
+They're still not sure which specific path is the problem, and so they now need you to find every path from svr (the server rack) to out. However, the paths you find must all also visit both dac and fft (in any order).
+
+For example:
+
+svr: aaa bbb
+aaa: fft
+fft: ccc
+bbb: tty
+tty: ccc
+ccc: ddd eee
+ddd: hub
+hub: fff
+eee: dac
+dac: fff
+fff: ggg hhh
+ggg: out
+hhh: out
+This new list of devices contains many paths from svr to out:
+
+svr,aaa,fft,ccc,ddd,hub,fff,ggg,out
+svr,aaa,fft,ccc,ddd,hub,fff,hhh,out
+svr,aaa,fft,ccc,eee,dac,fff,ggg,out
+svr,aaa,fft,ccc,eee,dac,fff,hhh,out
+svr,bbb,tty,ccc,ddd,hub,fff,ggg,out
+svr,bbb,tty,ccc,ddd,hub,fff,hhh,out
+svr,bbb,tty,ccc,eee,dac,fff,ggg,out
+svr,bbb,tty,ccc,eee,dac,fff,hhh,out
+However, only 2 paths from svr to out visit both dac and fft.
+
+Find all of the paths that lead from svr to out. How many of those paths visit both dac and fft?

+ 599 - 0
11/input

@@ -0,0 +1,599 @@
+vwm: xoe ydz tbn
+erq: qws zsm fmb rya
+wzf: mxt arh gjd
+qee: you wjk
+zhy: tyc
+pgy: out
+rkn: ads ybl hvw uzv
+aoz: cyk qhr scn jex pcv
+dot: kxu
+nbx: ffq ahp owr vvs
+dka: ksc bcv
+yej: nbx hpk fqp uub
+glt: lin jrw
+hbq: wjk you
+nja: mqk dmr
+nct: you eax
+mqk: cyw djr
+lfw: svi
+iyq: xdw rvx bcv
+wcr: iwz
+pkc: ron pst wte qug qee
+ehv: gst ibw knv
+uzv: abn nfd
+tiv: szt
+iii: mbl asl
+eok: eax you wjk
+fvh: mnp
+lyj: tsv dtv xrg jck
+qza: bor uzm kpa rgp
+xxj: jec
+gqm: out
+svr: brh elo yfy
+vxe: nzf
+pne: mup kma
+kkq: nzf
+szl: fdh
+pnn: yyo tyc dpx djd pfr
+vir: hak yog syp
+uvb: nlp mci
+hpa: uwd mlo
+tby: vwm zet
+qoe: out
+gio: own ohd
+wke: fqn nlp lmh dmf
+xaf: hug
+par: ipt uiu
+bjl: oic bkp
+rsv: luf
+klr: oax
+qwi: kxu tfq
+eld: you
+cyy: out
+xuj: mbl pne
+xnr: nja ycv zex dyg
+tuv: kpa bor uzm
+ohn: fgu
+trc: you eax
+qug: you eax
+ngl: out
+ybl: xeq
+djd: lyw tuv sxv
+ylt: mup kma dbb
+drm: pvr ust
+fgu: kxk cyw xax
+wsm: ron
+img: gao uwd
+xtb: wee
+cja: mlo
+hpk: ffq vvs
+xnb: gcc hbq
+qrj: luf fgn
+pbr: unh
+hak: zrf
+xax: zgj qpb ieb wki mpe yej
+ysz: jck dtv tsv sjw
+akt: jck dtv xrg
+qbe: mlo
+stb: ezs gju
+scn: mqs
+elr: out
+ksc: wcr
+mup: teo lwr wrw sah ozk yoc tby uwx xaf gis hyk bue rag lsq oci cfq uyd xft
+qqn: hfh mbf ptu
+vdm: bkp
+msc: lrh dpf xxq
+mxe: eax
+yyp: urh
+ryi: msc jec wlw
+zsm: scz wzm
+mjf: bff dsk
+nzx: you eax
+mbg: qxf wvx
+faw: zkd aiq
+you: ntn iyq slr aoi uzc cpc dka avk top jqq qrj fth edy
+dff: lau
+bcv: iiy nkk pbr
+emo: ohn cwd
+sxv: bor kpa rgp
+vzw: djr xax ert kxk
+fdh: xka lpc ygz
+muh: mbg mib
+mci: klt
+ojr: mup kma dbb
+zuo: msc
+woh: zew qgi
+nuk: fft
+vco: dyg ycv zex
+foq: wip kxu
+lqr: hqx jzq gfl hda
+aue: xaz lzf nzc fgu
+nzj: lin dwd
+bag: out
+xhc: xax djr cyw ert kxk
+nbs: lbi kgc
+qvd: cgy
+bin: cro ehv rbc
+fmb: ibn prl scz
+wcs: mnw xjx
+ouk: zuo xxj ieo
+hns: ksi ybl hvw uzv
+xnf: bsq pgy
+sib: pkc udo ebh wsm
+cqw: xnf
+tkm: uct xop
+pxt: fbq hrs
+ilf: xpg pgl
+uvm: rsi
+wgo: svi nvq idw
+cdp: gik hkk
+pfr: qza tuv
+azo: uzz
+rag: gsu grf hoj nuk
+pst: wjk eax you
+sjw: mnh
+puc: obs
+qjd: lab lau
+epu: kxk xax djr
+ovz: pxu bkt uvm ehs
+haz: eax
+nzc: kxk ert djr xax cyw
+dyd: nzf
+sah: nzj wxm glt leu
+pxu: vpa
+uiu: uwd mlo
+rqu: egm mfs tpu
+gxe: mbl pne asl
+yoc: por hug faj
+zew: out
+nlf: xyl
+mnp: zex ycv nja fmz
+uza: asl pne
+xkt: uiu usi ipt
+top: muh
+pdp: mlo gao
+foc: cyw kxk
+mnh: vii fbq hrs
+cwd: nzc
+ffq: wij nzf
+kkp: out
+dzt: fbq
+rsi: qjd
+rln: icq pje gqm qoe
+hqx: out
+snd: vco fcm isz
+umv: xaz lzf nzc fgu
+zty: syp
+pdd: qge uun
+roc: ivr wij
+cum: msc
+qge: kkp bag
+ptu: onp qwi tuz
+bny: bmk szl axt
+wlw: xxq lrh tct
+ykl: own
+hkk: etk gom
+svi: mib bgu yvd ufv
+shp: aiq trg bwr
+cyk: sbj
+hoj: nlk
+fcm: dyg zex ycv nja
+coz: mha qgi zew
+lab: kvl
+oto: mup
+wip: ylt ywu yzl
+lin: cja img dsl
+lsi: fxm loi
+jhg: ane usi
+xpg: mup dbb
+eeb: rzj dsk bff ngg
+jfh: bsq fyd
+ezf: onh snd
+ycv: mqk qpx dmr epu
+ntn: uvm ehs
+ane: mlo gao
+zbi: wij
+lou: you eax
+vgz: trc eld ntb eok
+fgn: uzz izu
+pxp: bjl iwz unh
+bsf: zwd vor ucw nff
+cro: aoz ibw
+bmx: eok eld
+zzu: mfs tpu
+ozk: gsu geo grf nuk
+ibn: hgy
+zna: pri uct
+tuz: wip
+eax: puc lfw gsq joi hbv rsv uzc jqq dep ovz
+tpu: iyk pli
+dyg: epu mqk qpx dmr
+piu: cum zuo xxj ieo ryi
+paz: ivr wij nzf
+yfy: dgz qqn smq hog hkz equ hns stb usx klr prz rkn zzu ltq ivl lsi fem nas
+nlp: ecu tiv
+sxp: uiu ipt usi
+uzc: idw nvq
+pgl: dbb
+dpk: wij
+iod: esi iac bsf
+lpc: mpt ddi qif
+xyl: emo tur
+hme: mha xnp
+iwz: oic
+spf: ygh bmk
+kru: sbx obs
+taf: szl ygh axt
+cpc: bkt uvm ehs pcw
+pje: out
+jzq: out
+lfr: uwd
+alp: nbs
+acu: lpc ygz
+prz: loi
+wee: suc kkq
+faj: pdp hpa lfr
+bkp: uih gfl
+evo: fqn dmf nlp
+lsb: cgk fmb rya
+psl: drm
+nff: wij
+zex: mqk
+jqq: rya cgk
+mha: out
+xrg: pxt irw fpk mnh
+hrs: xhc auk
+xch: aiq bwr fjm
+zrf: kxk ert djr xax
+lau: elr cyy hdl
+vsh: eax you
+fqp: ahp owr
+bmk: acu
+bkt: rsi
+uub: dpk owr
+dsf: wjk eax
+xoe: gao uwd
+dmr: djr kxk ert
+tct: vsh jnw dxe xwt
+wot: xax
+lyw: kpa bor
+uih: out
+kpf: gao
+wzm: cqw
+ezs: pzz ojr
+hhv: snd fvh tmy
+zgj: djd pfr yyo
+ehs: vcu
+hug: qcy
+hvw: abn
+leu: lin jrw dwd
+izu: fhs nbs pdd
+dpf: dxe jnw vsh nzx
+fhs: kgc lbi uun qge
+auk: cyw djr xax ert
+mlo: evo pap ysz dhz lbl wts tga zty ezf wke oag hhv hwv uvb
+oci: vwm
+bor: mym
+rpi: dsk rzj
+uwx: wxm gjy glt
+wql: bwr fjm aiq zkd
+ngg: dac omm
+vnt: pvr mxe
+gst: jex scn cyk
+tps: wte
+qpz: snd khk onh fvh tmy
+wte: eax you
+wtr: kma
+pcv: rtj foc kku mqs
+mfs: xmy pli iyk
+vqq: eax you wjk
+yqx: rln
+ivl: egm
+yza: zkd aiq fjm bwr
+xjx: gqm icq
+yzl: mup kma
+gll: qwi
+tbn: uwd
+nas: ksi uzv
+cwk: you wjk
+ntb: wjk
+dep: cdp sbx
+own: ntb eld trc
+gju: pzz gdo ojr
+edo: msw pgy bsq fyd
+kgc: bag ngl
+fft: kpf mxt jrf gjd
+gcc: wjk
+jex: mqs kku rtj sbj
+uct: kwe
+imz: ivr nzf wij
+qws: wzm ibn scz
+mxt: mlo uwd
+gsu: wzf
+hfh: tuz foq
+pap: mge cro ffk ehv
+hyk: geo
+ubs: dyd nff zwd vor
+icq: out
+tfq: ylt
+owr: ivr wij
+gjy: jrw
+slr: fmb qws zsm cgk
+nzf: rpi yza wql isk shp piu xsp zna sib tkm oeb bik ykl ouk mjf eeb xch faw gio wxd suw
+pcw: mrd vcu vpa rsi
+hwv: vvn urh
+xdw: pxp
+hda: out
+iaf: ert kxk xax djr
+tga: vvn xyl urh
+svp: gao
+dhz: ffk ehv cro
+mge: aoz knv
+lrh: xwt nzx
+yog: iaf zrf
+gsq: cdp obs sbx
+pli: yrt
+hvv: pvr ust
+xsp: pri xop psl
+klt: vzw
+xaz: cyw
+abn: qdv xpg pgl
+vvs: ivr nzf
+xop: kwe vnt hvv
+jrw: img dsl
+ian: bmk ygh szl
+fbq: wot
+trg: kuj kas
+mnw: icq lxi pje qoe
+gao: nlf tga wts lbl ysz vir qpz dhz lyj evo pap bin uvb hwv oag hhv ezf wke yyp zty
+wki: szl bmk ygh
+qgi: out
+bwr: kuj
+suw: tps pkc udo
+ddi: nzf
+cgy: suc cxi
+vpa: gvm dff
+uzm: imz mym paz
+khk: vco xnr mnp isz fcm
+avk: cdp sbx
+ygh: fdh jhf acu
+hkz: fxm loi oax
+usq: kma mup
+ksi: nfd xeq abn
+lbi: ngl kkp
+zet: zlg xoe
+cxx: mha
+rtj: xax djr
+smq: gju ezs
+wrw: geo gsu nuk
+odt: dbb mup
+ltq: gll mbf
+obs: hkk bry
+onh: vco fcm mnp isz
+ffk: gst aoz
+ucw: nzf
+scz: uqx
+iac: nff dyd vor zwd
+cfq: glt leu nzj wxm
+cpq: wjk
+qdv: kma dbb
+psy: jsl elr kvl cyy
+mib: phe
+jec: lrh xxq
+equ: mbf
+vcu: qjd dff
+aiq: kas kuj
+fxm: bkg gxe xuj uza
+xnp: out
+bff: dac omm
+fth: ksc rvx
+kuj: cpq
+uzz: nbs fhs
+kas: pxi vqq lou cpq
+cbs: fgu
+bsq: out
+qif: nzf wij ivr
+wts: hak
+dac: jbl ahy xnb
+usi: uwd
+mqs: ert xax djr
+szt: cyw djr kxk ert
+esi: dyd nff
+rbc: gst
+dgz: fxm loi
+pvr: eax wjk
+tyc: qza tuv
+knv: pcv jex qhr
+isz: zex ycv fmz nja
+lwr: uqr faj ngb por
+iyk: neg hdv
+kku: ert kxk cyw xax djr
+heo: uub hpk
+dxe: wjk you
+cyw: zhy xcd pqt vlm taf
+gom: rln xjx
+uwd: wke ezf yyp akt hwv bin uvb oag qpz lyj ysz pap evo tga wts lbl
+wbz: xnp qgi zew
+lmh: tiv
+dmf: tiv ecu
+vii: wot xhc auk
+ieb: cgy wee xkm mhu
+msw: out
+nlk: kpf arh jrf gjd
+qgm: lqr bkp
+tvt: ert kxk cyw djr xax
+tur: ohn cbs cwd umv aue
+pri: hvv
+uqx: edo
+fem: tpu
+dcb: ffq vvs dpk owr
+elo: prz stb fem nas equ rkn
+dhc: nkk
+jck: irw fpk dzt
+ngb: hpa
+luf: alp izu
+zlg: gao
+jbl: hbq haz
+ahy: dsf cwk gcc hbq
+oax: uza gxe
+joi: dhc
+jhf: lpc xka
+ywu: dbb
+qcy: uwd
+gvm: psy
+ufv: phe fgq wvx
+xwt: wjk eax you
+mhu: cxi kkq suc
+irw: fbq
+nfd: qdv
+yrt: luo odt
+tmy: vco xnr isz fcm
+etk: rln xjx
+pqt: bsf ubs esi
+idw: mib bgu mbg ufv yvd
+vvn: tur emo
+asl: mup kma dbb
+wjk: kru cpc dep top aoi iyq lfw lsb wgo erq dha hbv fth
+aoi: xdw dhc ksc
+xqs: aue umv
+chh: xnb jbl cph
+njc: ubs esi iac bsf
+wxm: dwd
+ert: vlm hyb bso iod njc qpb pqt xtb zgj taf qvd pnn spf mpe heo zhy
+rzj: omm
+djr: qvd pnn xcd heo zhy vlm hyb iod bny bso njc ieb qpb yej xtb eqf zgj
+suc: ivr nzf wij
+vor: nzf
+ieo: wlw
+mpt: nzf wij
+hdv: usq luo oto
+ibw: pcv
+sbx: bry gik hkk
+jnw: eax
+oeb: bmx ohd
+fjm: nbn kas
+hgy: xnf jfh edo
+isk: ohd own vgz fbn
+fpk: vii fbq
+yyo: lyw
+bik: ryi zuo xxj
+pxi: wjk you
+cxi: wij
+oag: tmy fvh onh khk
+dsl: uwd gao mlo
+teo: vwm ejh
+ipt: mlo gao
+yvd: wvx fgq
+grf: nlk wzf fft
+rvx: iiy wcr pbr
+prl: hgy uqx
+gfl: out
+ibu: gdo ojr pzz
+now: vxe suc cxi
+fgq: hme woh cxx coz
+syp: jxo
+ahp: nzf ivr
+xmy: hdv yrt neg
+ydz: mlo
+ygz: ddi roc qif ilb
+xcd: mhu xkm wee now cgy
+nbn: vqq pxi nct
+oic: gfl uih jzq hqx
+gjd: gao uwd
+xxq: jnw vsh
+qpb: hpk uub dcb
+hdl: out
+kwe: ust mxe
+fyd: out
+phe: coz
+onp: tfq wip kxu
+bso: dcb uub nbx hpk fqp
+uyd: par sxp jhg
+ilb: nzf
+dtv: irw mnh fpk
+nvq: ufv
+fqn: klt ecu tiv
+bkg: asl pne
+gik: gom yqx etk
+hyb: bsf iac
+usx: hfh gll
+luo: dbb mup
+qxf: wbz cxx coz hme woh
+qhr: sbj mqs foc
+kma: yoc teo lwr oci uyd xft lsq gis rag bue hyk uwx tby
+kxk: pqt mpe xtb eqf zgj zhy taf hyb iod bny njc ian
+geo: wzf
+lzf: ert xax djr
+cph: gcc dsf cwk
+brh: stb usx klr lsi ltq ivl rqu qqn dgz equ smq hog
+tcu: gsu grf
+xeq: pgl xpg
+lsq: faj hug uqr por
+rya: wzm
+zkd: kas
+fmz: epu qpx
+jrf: gao
+kpa: imz zbi mym paz
+cgk: scz
+dpx: tuv sxv lyw
+rgp: paz imz
+eqf: ubs bsf
+lxi: out
+uun: ngl
+kvl: out
+dbb: tcu lwr tby uwx cfq ozk oci uyd xft
+pzz: dbb kma
+xkm: kkq
+edy: luf
+unh: bkp
+yao: xjx
+wvx: wbz woh coz
+dwd: qbe
+egm: iyk xmy
+udo: wte qug ron
+iiy: qgm
+qpx: ert kxk djr
+zwd: ivr wij
+nkk: qgm vdm iwz
+axt: acu jhf
+jxo: cyw djr
+dha: pxu
+mbf: foq tuz qwi onp dot
+lbl: yog
+xka: qif ilb mpt
+ads: abn xeq ilf
+xft: zet ejh vwm
+fbn: eok ntb
+uqr: lfr
+omm: xnb cph ahy
+ecu: szt tvt vzw
+urh: tur xqs
+mym: ivr wij nzf
+ebh: pst qee qug wte
+wxd: ebh tps
+sbj: ert
+neg: oto odt
+kxu: wtr ywu
+dsk: dac chh
+ron: wjk
+ust: you eax
+tsv: pxt mnh fpk
+wij: shp oeb xsp zna sib rpi wql isk eeb xch suw wxd faw gio bik ouk ykl
+hog: ezs gju ibu
+mbl: kma dbb
+hbv: fgn azo
+gdo: kma dbb mup
+vlm: wee mhu
+gis: sxp jhg par xkt
+ohd: eok
+ivr: oeb zna gio tkm sib shp isk bik
+por: pdp qcy lfr
+mrd: gvm
+arh: uwd mlo gao
+loi: iii gxe bkg
+mpe: fqp hpk nbx dcb
+bue: sxp jhg xkt par
+bry: gom etk yqx yao wcs
+bgu: qxf fgq
+jsl: out
+ejh: svp zlg