Trying to do advent of code in Rust. I am very new to rust so please help if you see me doing something stupid!!
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

solved day 11 part 1

Signed-off-by: Business Goose <did:plc:hsqwcidfez66lwm3gxhfv5in>

+588 -12
+553
day11/input.txt
··· 1 + you: wms hkw ove qba ats 2 + imt: swz aev ams bhg yir 3 + grh: fph cuq pcx 4 + yae: qiu mef 5 + luf: zir jdx jmg 6 + ypt: ahf wov hai 7 + rlf: haj yxm 8 + xls: qnw ppg 9 + ggr: xmh vka 10 + xgr: hlc mzm 11 + mze: ljj ppg ysn qnw 12 + xfb: diw cxx vlb mgf 13 + wms: xcd hni 14 + lpm: dap 15 + wov: rbx skx ztu 16 + oop: djs rfy 17 + cnb: haj 18 + xaz: tur kmd wsw 19 + svr: qnf jjf xjh omn 20 + vya: mgq qqj asn 21 + zuk: xvf lff cju 22 + gvw: xfk jje gir 23 + ztu: hlr lka 24 + jmg: dap tei 25 + hxf: mjd vns mlo 26 + dsq: vkw vtp cwm 27 + jpr: izt esf 28 + qba: cju xvf lff fcg 29 + zyt: yek imd qsl 30 + wke: out 31 + hbz: nnz qck 32 + xru: wuh 33 + wsw: mgq 34 + ifh: ejn pif 35 + xpt: ouy 36 + elr: izi wke ljd oim 37 + bbg: xnn ove hbz gkv fdo frn vfi uxl rrt wms dcs vkn 38 + bye: jna xgr vcd 39 + ceb: cwa 40 + msa: hly gir 41 + gzq: byz 42 + ufd: ihs ped 43 + jev: wbn 44 + gix: wdt 45 + see: nfq 46 + rnu: nei wdt azn 47 + axr: oop pgu 48 + efu: aai ejn 49 + cnf: oaw ryk wpb 50 + vzq: lka hlr zkr aps 51 + ehj: out 52 + xup: esf 53 + tak: wld xob 54 + omn: xfb fry tvg fll pwt oka vwe rpp bja miw boq elm 55 + kmj: bsl xzx tco 56 + hpe: une tvs 57 + xzx: bbg gia fwk you 58 + qiu: bdv nkt uco 59 + sar: boc tfa qvo vzq 60 + wur: pdz wld xob 61 + zvs: bbg 62 + bez: kow tvs hju une 63 + esf: out 64 + taz: nft 65 + fgw: mzm hlc 66 + wqf: mka gko 67 + zab: wuh xzx 68 + ars: mjn jmd 69 + pmn: uug vzx 70 + lay: you bbg fwk 71 + imd: see 72 + rak: out 73 + ixj: kow tvs une 74 + pka: txb 75 + wrm: sjq kme 76 + bik: aps 77 + slz: tvs kow une 78 + wxx: nfe 79 + hju: ypt xls swg wci wth 80 + dcs: qvu 81 + yuo: xhd ryk 82 + ucg: lpm zaw zir 83 + vtp: out 84 + znh: vya phe wsw kmd 85 + slu: ulf msa gvw amb nkv 86 + qeh: yor 87 + ing: cji hlb 88 + ogh: gfk haj yxm 89 + mlo: ptn mmq alf nft 90 + nhx: skx 91 + wrf: jkp fhl 92 + ihw: cwa rlf xbu 93 + yut: hjx xmm 94 + drp: vkw vqp vtp 95 + ywc: com wxx ize 96 + bsl: fwk gia zvu bbg 97 + uhu: foi wrm qnt 98 + mcp: vqp cwm 99 + lce: nak uzi 100 + vax: auy fgw cwr 101 + fdo: qck lvi nnz 102 + lmn: han obk fuu 103 + ebx: nko kdd boe vht 104 + cdt: qiu 105 + oka: uug lkh 106 + zny: sef dxs fac elg 107 + bxj: gcd huk 108 + azn: tth aps 109 + aps: ufd ogt bxj jaf zpc ptb jev 110 + pvr: mjd vns 111 + kxq: vns 112 + fry: uug 113 + tth: hxe jev zpc bio yba enr mbw ujb bxj ogt ryr dkw slu 114 + ize: nfe hlc 115 + vfi: lvi qck 116 + qtx: xup ouy 117 + qck: piz ohg 118 + lft: ogh kgv 119 + iur: dlh lcc 120 + dqs: aps zkr hlr 121 + xci: ahf bhk hai 122 + ayn: tth hlr lka 123 + frn: lff 124 + fhh: lka tth zkr aps 125 + jkp: fnj vbv 126 + fka: fnj vbv 127 + lcc: hju tvs 128 + yrq: wrm 129 + zaw: dap 130 + ggb: pew lgw 131 + vkw: out 132 + nmm: ona ums vha xos 133 + kak: out 134 + ejn: ixj kyx 135 + yba: ftb 136 + hlb: vht 137 + lka: ryr zrk ufd slu lfc ptb bio zpc cqz hxe mbw jaf dkw cxk jzg smv jev ogt bxj ujb enr yba 138 + gfk: fmh znh aso qdl jdy qeh kot 139 + arh: fft eae 140 + gtw: tth lka 141 + imk: pdz wld xob 142 + mox: irm 143 + fuu: ftn 144 + nfe: cwe ndx etc qhv agt vzk dcm cmu oiu fwb ahr zgd mgz wyd byh ajh lkw fob rho sve sfj lce riq znt yut ogu 145 + bdv: you fwk zvu bbg 146 + asn: hju une 147 + yas: pif ejn 148 + cyr: fwa qpu mpw 149 + wdt: lka 150 + mef: bdv 151 + ihs: gua 152 + box: out 153 + sqj: ehj 154 + olv: dlh lcc rpb 155 + hsh: rnu gix nfq dus 156 + ifc: xup jpr 157 + nko: you zvu fwk gia 158 + oim: out 159 + fwk: ove dcs hbz gkv cnt frn vzo brh rrt 160 + djs: uco bdv nkt 161 + pew: dsq sjy epu 162 + vka: tvs kow hju 163 + mbw: amb ulf msa gvw 164 + mgz: zab xru pui kmj 165 + lvp: zny mgf 166 + bxp: hlc mzm 167 + lgw: epu mcp sjy drp 168 + mbu: out 169 + jdx: dap tei 170 + boq: lft 171 + ltz: sjy mcp dsq 172 + com: nfe 173 + fll: pqr luf gko 174 + obk: frk ftn 175 + vht: zvu gia fwk 176 + zyh: lgw mfj pew ltz 177 + hni: xym ggb bkg 178 + vsy: cdt dac yae 179 + kfc: gou fpc 180 + mka: zaw lpm jmg 181 + uoh: fwa qpu 182 + byu: rak mck 183 + pwf: rcr 184 + rxh: qtx 185 + zxf: tco wuh 186 + lvi: ohg kft dqx 187 + mfj: drp 188 + one: lka 189 + qsj: pif 190 + gko: jmg lpm jdx zaw zir 191 + boe: zvu bbg gia fwk 192 + pum: aps lka tth 193 + tvs: wci wji zyt dhn hwr vwl wrf ojn rab 194 + irl: gip 195 + bqb: kjs qmn lft 196 + qsl: see hsh 197 + kyx: hju 198 + the: yrq zco xcb uhu kbq 199 + fob: gzq uzi osb 200 + nfq: nei wdt azn 201 + ams: afp 202 + cwr: mzm 203 + gia: xnn brh hkw hbz irl dcs zuk cnt gkv gbv 204 + fmh: rxs xpf 205 + ndx: hou uoh qdj vwt 206 + fpc: hlc nfe 207 + ysn: wjd zuj pum 208 + cwa: yxm haj gfk 209 + lfq: kak ujn ehj box 210 + wth: imd 211 + hjx: hlb ebx cji aak 212 + vkn: hxf wax kxq 213 + afp: dkm lyf 214 + zgd: hjx 215 + fph: bao ewp 216 + riq: uoh hou qdj cyr vwt 217 + ajh: akx axr 218 + qvo: aps lka hlr tth zkr 219 + vzk: zab xru pui kmj 220 + wld: haj 221 + xym: pew mfj vnu 222 + akx: yae pgu oop cdt dac 223 + mmq: jzt byu 224 + nft: sdj byu 225 + ppl: bxp gou fpc 226 + dkm: yxm haj gfk 227 + wgp: aps hlr zkr 228 + vlb: sef 229 + gou: hlc nfe mzm 230 + vwe: ams aev 231 + qpu: you bbg zvu fwk gia 232 + rho: vwt hou 233 + han: ftn frk elr 234 + swp: dlh rpb 235 + wji: sar xos vha ums 236 + sef: wur 237 + jje: szq kfc 238 + xly: hlc nfe 239 + lkw: uoh hou cyr 240 + tvg: vzx uug 241 + tat: ljj ppg ysn 242 + fft: olv dyq 243 + tym: yxm haj 244 + cqz: gcd nmz 245 + xbu: haj yxm gfk 246 + enr: amb 247 + sjd: iwf 248 + piz: cuq pcx fph fgc 249 + kgv: haj yxm 250 + cwm: out 251 + ogu: zxf zab pui 252 + cxx: elg osd 253 + qfb: une 254 + ptb: ftb wbn 255 + pui: bsl 256 + zkr: dkw zrk jzg ryr cxk ufd lfc slu smv cqz bio ptb hxe jev ujb ogt jaf enr yba mbw 257 + pif: vjs ixj 258 + oaw: cir 259 + qjd: uhu xcb zco yrq 260 + pcx: otd sqj bao ewp 261 + pwt: lkh vzx 262 + szq: fpc bxp 263 + lfc: jvd 264 + haj: pwf yuo xdb znh aso asf aod kot srf fmh xaz qdl fzl 265 + etc: ing 266 + jdz: fwk gia zvu bbg 267 + sjq: aps lka hlr tth zkr 268 + cuq: ewp bao sqj 269 + qun: cwr fgw fbj 270 + pny: kjs lft qmn 271 + fwa: gia bbg zvu you 272 + mgf: fac 273 + uxl: hni 274 + vzo: cju xvf fcg lff 275 + alf: byu sdj 276 + xvf: pqj mgb isf pqf rxh 277 + dyq: rpb lcc 278 + yek: hca hsh 279 + wcn: rxs 280 + xcd: bkg ggb 281 + jcv: yxm haj gfk 282 + gqb: out 283 + rab: hpj jkp 284 + srf: efu qsj 285 + kme: hlr aps 286 + ahr: awd mcy 287 + ljd: out 288 + kmd: mgq 289 + swz: enh tla 290 + qnt: sjq gtw 291 + pqj: zzp 292 + bio: nmz gcd 293 + pbv: hlr tth zkr 294 + gip: taz 295 + dus: wdt nei 296 + vzx: ooc ceb ihw jix 297 + tii: ovj jna xly 298 + sve: uoh 299 + fcg: isf mgb pqj pqf 300 + irm: piz ohg kft grh 301 + osd: xlv imk 302 + ftn: ljd mbu izi 303 + xpf: lne bez hpe wau 304 + dlh: kow tvs une hju 305 + boc: zkr hlr 306 + lke: out 307 + fbf: bbg zvu fwk you 308 + zuj: hlr lka zkr tth 309 + kwq: gia bbg 310 + dac: mef djs 311 + vcd: nfe 312 + cju: pqf rxh 313 + ayb: xbu rlf 314 + jna: mzm hlc 315 + hfg: mzm 316 + ajl: fka hpj fhl 317 + dxs: imk tak 318 + vwv: kdb xpf 319 + iwf: ytn pgr jdz 320 + mcy: ytn 321 + qhv: osb gzq 322 + ove: hni gdl 323 + gdl: xym zyh 324 + fhl: vbv ebd 325 + oiu: xmm ing 326 + fbj: hlc 327 + lff: isf pqj 328 + rxs: hpe wau bez 329 + hxe: vax 330 + bkg: pew mfj 331 + jaf: nmz huk 332 + xhd: ggr cir how 333 + yor: eae 334 + zpc: qun nik 335 + ovj: mzm 336 + ixl: sjq kme gtw 337 + hlr: bxj bio dkw cxk ryr jzg zrk 338 + gbv: hni gdl 339 + kdd: you zvu fwk 340 + osb: lay zvs kwq fbf 341 + tfa: tth zkr lka 342 + qvu: lmn mjn 343 + jdy: ifh qsj efu yas 344 + nkv: jje 345 + ojn: ahf wov hai nhx bhk 346 + rfy: nkt 347 + xmm: ebx aak 348 + jzt: mck rak 349 + mio: lcc 350 + frk: izi oim 351 + kqf: hlc 352 + kft: fgc 353 + pqr: zir jdx 354 + kcx: zny 355 + ytn: fwk gia zvu bbg 356 + wau: une hju tvs 357 + ljj: wjd pum zuj 358 + jzg: huk gcd 359 + ryr: nik 360 + xcb: qnt 361 + uco: fwk bbg you 362 + pqf: xpt ifc 363 + mgb: zzp ifc 364 + diw: fac dxs elg osd 365 + aak: vht nko kdd boe 366 + vha: fhh vzq qvo boc 367 + pgu: rfy 368 + phe: mgq asn 369 + zir: dap bic 370 + vbv: pbv bik 371 + fwb: vsy 372 + ipq: swp olv dyq iur 373 + xlv: pdz gvy wld xob 374 + aai: ixj vjs 375 + qnf: kcx fjw tvg wqf pcm fry 376 + sym: aai ejn 377 + ppg: wjd zuj pum 378 + nak: fbf kwq zvs 379 + vqp: out 380 + hca: gix rnu 381 + tla: cnb dkm tym jcv 382 + xmh: tvs 383 + brj: iwf 384 + ohg: pcx fgc fph 385 + mck: out 386 + bne: zxf 387 + uug: ceb ooc 388 + wuh: gia fwk zvu you 389 + how: qfb slz vka 390 + glc: xcb yrq zco 391 + isf: ifc zzp 392 + elg: imk xlv wur 393 + mgq: hju kow 394 + upa: sdj jzt 395 + agt: xmm 396 + kot: phe wsw kmd tur 397 + ftb: ywc jox 398 + uzi: byz lay kwq fbf 399 + brh: wax pvr kxq 400 + aev: afp tla 401 + ats: nso jdo 402 + eae: mio olv iur swp 403 + foi: kme 404 + qdl: arh zal rcr yor 405 + ngp: yxm haj 406 + yir: enh 407 + cfh: out 408 + asf: yor arh zal 409 + vwl: ona ums xos sar 410 + lyf: yxm gfk 411 + hlc: sve lce sfj oiu brj zgd wyd byh ajh sjd etc vzk qhv cmu bne 412 + etm: out 413 + zrk: ihs jvd 414 + fse: nfe mzm 415 + rus: yek 416 + nei: zkr tth hlr lka 417 + izt: out 418 + ptn: jzt 419 + ebd: bik one 420 + rcr: ipq fft 421 + txb: ozj 422 + lkh: ceb ihw jix ayb 423 + zal: fft 424 + wpb: how 425 + ooc: rlf 426 + wjd: tth hlr lka 427 + ona: boc tfa fhh vzq 428 + qqj: tvs hju 429 + zco: qnt 430 + izi: out 431 + hpj: ebd fnj vbv 432 + rpb: tvs une 433 + miw: swz bhg ams 434 + qte: luf gko 435 + wpu: vcd xgr jna xly 436 + awd: pgr jdz 437 + byh: akx axr vsy 438 + fac: imk 439 + rbx: aps tth zkr lka hlr 440 + dwc: wpb oaw ryk 441 + wbn: txb jox 442 + hly: szq ppl 443 + sdj: mck lke 444 + une: qjd dhn rus wrf ojn ajl the ezl 445 + ujn: out 446 + ouy: gqb esf izt 447 + swg: yek 448 + amb: hly gir xfk 449 + dap: haj yxm 450 + nnz: ohg piz dqx kft grh 451 + xfk: ppl kfc 452 + nik: cwr hfg fgw auy 453 + nmz: bye 454 + bic: haj gfk 455 + enh: jcv tym dkm cnb lyf 456 + pcm: vlb cxx zny 457 + qnw: wgp pum zuj 458 + dhn: nhx 459 + dqx: pcx fgc fph 460 + skx: aps lka zkr tth 461 + mpw: gia fwk bbg 462 + wyd: zxf kmj pui xru 463 + nso: mjn 464 + mjd: nft alf upa mmq 465 + cmu: awd mcy 466 + jdo: mjn lmn jmd 467 + cxk: ihs ped jvd 468 + gua: nfe hlc 469 + ewp: etm ehj 470 + fzl: kmd tur wsw 471 + gkv: jdo qvu wzm 472 + cnt: lvi irm 473 + bja: diw cxx zny 474 + kbq: ixl 475 + ums: qvo boc tfa fhh vzq 476 + mjn: han pue 477 + qdj: fwa 478 + ulf: gir hly 479 + gcd: tii 480 + sjy: cwm cfh vqp vkw 481 + kow: ojn nmm wrf vwl qjd mze xci swg xls wth glc tat ypt rab hwr dhn rus zyt the wji ajl 482 + xjh: fjw fll pcm xfb pwt miw bja vwe rpp pmn kcx pny qte bqb 483 + ogt: vax qun nik 484 + znt: vsy akx 485 + jox: wxx ozj ize com 486 + bhg: afp tla 487 + xnn: wzm jdo ars 488 + wzm: lmn 489 + pgr: you zvu bbg 490 + kwb: ngp ogh 491 + elm: gko ucg luf pqr 492 + tei: yxm gfk 493 + gvy: gfk 494 + ryk: cir how 495 + dkw: nik 496 + epu: cwm vtp vqp vkw 497 + vwt: qpu 498 + hwr: qnw ysn 499 + jjf: pny oka kcx bqb lvp vwe rpp fjw xfb fry pcm imt 500 + cir: slz xva qfb 501 + yxm: srf kot cnf aod dwc asf aso qfo wcn znh xdb pwf yuo qeh jdy vwv qdl xaz fmh 502 + jvd: kqf fse 503 + byz: zvu bbg you 504 + rrt: cju xvf lff 505 + vjs: tvs kow une 506 + wax: taz 507 + xdb: yas sym efu qsj 508 + ozj: mzm 509 + bao: ehj box ujn 510 + pue: ftn 511 + fgc: lfq bao otd 512 + hkw: hni gdl 513 + xob: yxm haj 514 + smv: jvd ped 515 + vnu: sjy 516 + gir: kfc 517 + hou: mpw fwa 518 + lne: kow 519 + sfj: osb nak uzi 520 + qmn: ngp kgv 521 + otd: ujn kak box 522 + qfo: ifh yas 523 + ujb: ftb pka wbn 524 + ped: gua kqf fse 525 + dcm: gzq nak osb 526 + hai: ztu 527 + vns: upa alf 528 + kjs: ngp kgv 529 + aso: xpf rxs 530 + rpp: luf pqr gko ucg 531 + fjw: qmn kwb 532 + ezl: fka jkp fhl 533 + huk: wpu tii bye 534 + mzm: sve rho fob lkw yut riq brj fwb ajh byh zgd mgz etc sjd ndx dcm cmu vzk qhv bne cwe 535 + zzp: jpr 536 + ahf: skx rbx dqs 537 + auy: mzm nfe hlc 538 + xva: kow tvs 539 + wci: hpj 540 + bhk: skx ztu rbx 541 + tur: qqj 542 + zvu: wms vzo vfi brh mox fdo ove zuk irl vkn hbz 543 + nkt: you zvu bbg gia 544 + pdz: gfk haj 545 + fnj: ayn bik pbv 546 + tco: bbg fwk gia you 547 + jix: cwa 548 + cwe: mcy 549 + jmd: fuu obk pue 550 + cji: boe 551 + aod: vya kmd 552 + kdb: wau lne bez 553 + xos: vzq
+31 -10
day11/src/main.rs
··· 19 19 let mut nodes: Vec<Server> = Vec::new(); 20 20 let file_contents = std::fs::read_to_string(&args.file).expect("Failed to read file"); 21 21 22 + nodes.push(Server::new("out", 0)); 23 + 22 24 for line in file_contents.lines() { 23 25 let tokens = line.split_whitespace().collect::<Vec<_>>(); 24 26 let source = tokens[0]; 27 + let server = Server::new(&source[..source.len() - 1], nodes.len()); 28 + nodes.push(server); 29 + } 30 + 31 + println!("Nodes: {:?}", nodes); 32 + 33 + for line in file_contents.lines() { 34 + let tokens = line.split_whitespace().collect::<Vec<_>>(); 35 + let source = &tokens[0][..tokens[0].len() - 1]; 25 36 let destinations = &tokens[1..]; 26 37 println!("Source: {}, Destinations: {:?}", source, destinations); 27 - let mut server = Server::new(&source[..source.len() - 1]); 28 - let source_exists = nodes.iter().any(|s| s.label == source); 38 + let server_index = nodes.iter().position(|s| s.label == source).unwrap(); 29 39 for next_label in destinations { 30 - let server_exists = nodes.iter().any(|s| s.label == **next_label); 40 + let index = nodes.iter().position(|s| s.label == **next_label).unwrap(); 41 + nodes[server_index].add_next(index); 42 + } 43 + } 44 + 45 + let you = nodes.iter().position(|s| s.label == "you").unwrap(); 46 + 47 + let mut paths = 0; 48 + let mut path: Vec<usize> = Vec::new(); 31 49 32 - if !server_exists { 33 - let next_server = Server::new(next_label); 34 - nodes.push(next_server); 35 - } 50 + path.push(you); 36 51 37 - let index = nodes.iter().position(|s| s.label == **next_label).unwrap(); 38 - server.add_next(index); 52 + while let Some(next) = path.pop() { 53 + if next == 0 { 54 + paths += 1; 55 + continue; 56 + } 57 + for &neighbor in &nodes[next].next { 58 + path.push(neighbor); 39 59 } 40 60 } 41 - println!("{:?}", nodes); 61 + 62 + println!("Visited {} paths", paths); 42 63 }
+4 -2
day11/src/server.rs
··· 3 3 #[derive(Debug, Eq, PartialEq, Hash)] 4 4 pub struct Server { 5 5 pub label: String, 6 - next: Vec<usize>, // Store indices instead of references 6 + pub index: usize, 7 + pub next: Vec<usize>, // Store indices instead of references 7 8 } 8 9 9 10 impl Server { 10 - pub fn new(label: &str) -> Self { 11 + pub fn new(label: &str, index: usize) -> Self { 11 12 Server { 12 13 label: label.to_string(), 14 + index, 13 15 next: Vec::new(), 14 16 } 15 17 }