Skip to content

Commit

Permalink
[Rust/2023/25] Add solution
Browse files Browse the repository at this point in the history
  • Loading branch information
Defelo committed Dec 25, 2023
1 parent 8610678 commit ceb6b86
Show file tree
Hide file tree
Showing 7 changed files with 207 additions and 5 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,14 @@
|[2021](https://adventofcode.com/2021/leaderboard)|**136**|438|
|[2020](https://adventofcode.com/2020/leaderboard)|**621**|46|

## [2023](https://adventofcode.com/2023) ([<img height=18 src=".assets/rs.svg"> Rust](Rust/2023): 24/25 | [<img height=18 src=".assets/ua.png"> Uiua](Uiua/2023): 12/25 | [<img height=18 src=".assets/hs.svg"> Haskell](Haskell/2023): 4/25)
## [2023](https://adventofcode.com/2023) ([<img height=18 src=".assets/rs.svg"> Rust](Rust/2023): 25/25 | [<img height=18 src=".assets/ua.png"> Uiua](Uiua/2023): 12/25 | [<img height=18 src=".assets/hs.svg"> Haskell](Haskell/2023): 4/25)
|Mo|Tu|We|Th|Fr|Sa|Su|
|-|-|-|-|-|-|-|
|||||[**1**](https://adventofcode.com/2023/day/1) [<img height=12 src=".assets/rs.svg">](Rust/2023/01.rs "Rust solution for 2023/01") [<img height=12 src=".assets/ua.png">](https://uiua.org/pad?src=JnNjCgpOdW1zIOKGkCB7Im9uZSIgInR3byIgInRocmVlIiAiZm91ciIgImZpdmUiCiAgICAgICAgInNpeCIgInNldmVuIiAiZWlnaHQiICJuaW5lIn0KRGlnaXRzIOKGkCArQDHih6E5CkZpbmQg4oaQIC8rIMOXKzHih6E5IOKJoeKKkOKMlQpFeHRyYWN0IOKGkCArw5cxMCDiiKniiqLiioPiiJjih4wg4pa94omgMC4KCsKw4oqfLysg4oqcKOKKnyDiiKlFeHRyYWN0IOKKg-KGpeKImCDiiKlGaW5kIERpZ2l0cyxOdW1zwqQp4omgQFxuLgo= "Uiua solution for 2023/01")|[**2**](https://adventofcode.com/2023/day/2) [<img height=12 src=".assets/rs.svg">](Rust/2023/02.rs "Rust solution for 2023/02") [<img height=12 src=".assets/hs.svg">](Haskell/2023/02.hs "Haskell solution for 2023/02") [<img height=12 src=".assets/ua.png">](https://uiua.org/pad?src=JnNjCgpDb2xvcnMg4oaQIHsicmVkIiAiZ3JlZW4iICJibHVlIn0KUGFyc2VDb3VudCDihpAg4oqX4oqZQ29sb3JzIOKKmeKKkOKLlSDCsOKKn-KHjCDiipzilqHiiaBAIC4KUGFyc2VSb3VuZCDihpAgLyviipwow5firJow4oavwqQzwrDiippQYXJzZUNvdW50KeKJoEAsLgpQYXJzZUdhbWUg4oaQIOKKnFBhcnNlUm91bmTiiaBAOy4g4oaYKzLiipdAOi4KCuKKnCgv4oalUGFyc2VHYW1lKeKJoEBcbi4K4oipLysg4oqDL8OXKMOXKzHih6Hip7suL8OX4omkMTJfMTNfMTQp4o2JCg== "Uiua solution for 2023/02")|[**3**](https://adventofcode.com/2023/day/3) [<img height=12 src=".assets/rs.svg">](Rust/2023/03.rs "Rust solution for 2023/03") [<img height=12 src=".assets/ua.png">](https://uiua.org/pad?src=JnNjCgpOdW1zIOKGkCAoCiAg4oiKOitAMOKHoTEwCiAgw5fCrOKsmjDihrswX8KvMS4uCiAgw5fijZzima1cKwopClN5bWJvbHMg4oaQIMOX4oqDKOKJoEAuKSg9ME51bXMpCkdlYXJzIOKGkCA9QCoKTmVpZ2hib3JzIOKGkCDiiaEow5firJow4oa7KeKYhzEtMeKHoTNfM-KIqcKkCkEg4oaQICgKICBOZWlnaGJvcnMg4oqDU3ltYm9scyBOdW1zCiAg4oqP4oqd4pmtL-KGpQopCkIg4oaQICgKICBOZWlnaGJvcnMg4oqDTnVtcyBHZWFycwogIOKYhzHijYkKICDirJow4omhKOKWvT0y4qe7LuKWveKJoDAu4oqdKQogIOKJoS_Dl-KJoeKKj-KKmcKkCikKCuKKgyjiipziiJjiiaBAXG4uKSjiioIw4omh4ouV4pmtIHJlZ2V4ICJcXGQrIikK4oipLysg4oqDQiBBCg== "Uiua solution for 2023/03")|
|[**4**](https://adventofcode.com/2023/day/4) [<img height=12 src=".assets/rs.svg">](Rust/2023/04.rs "Rust solution for 2023/04") [<img height=12 src=".assets/ua.png">](https://uiua.org/pad?src=JnNjCgpQYXJzZUNhcmQg4oaQIOKIqcKw4pahwrDiip8g4oqcKOKWoeKKnOKLleKJoEAgLiniiaBAfC4g4oaYKzLiipdAOi4KTWF0Y2hlcyDihpAg4qe74pa94oiKLApQb2ludHMg4oaQIOKMiuKBv-KKmTItMQpXaW5NYXRyaXgg4oaQIOKsmjDiiaEo4oqCMeKKguKIqeKGr-KKmSgw4oqZMSkpIOKHoeKnuy7iioIwCkEg4oaQIC8r4omhUG9pbnRzCkIg4oaQIOKKojsg4o2l4oqD4oiYKC8rw5cp4qe7LiDiioPiiJgowqziiqIpIFdpbk1hdHJpeAoK4oqDQiBBIOKKnChNYXRjaGVzIFBhcnNlQ2FyZCniiaBAXG4uCg== "Uiua solution for 2023/04")|[**5**](https://adventofcode.com/2023/day/5) [<img height=12 src=".assets/rs.svg">](Rust/2023/05.rs "Rust solution for 2023/05") [<img height=12 src=".assets/ua.png">](https://uiua.org/pad?src=JnNjCgpQYXJzZVNlZWRzIOKGkCDiiaHii5Xihpgx4oqc4pah4omgQCAuwrDilqHiiqIKUGFyc2VSYW5nZU1hcCDihpAg4o2cwrBb4oqZ4oqZ4oiYXeKKgygtOnzii4XiiJh84ouFKyniipzii5XiiaBAIC4KUGFyc2VNYXBzIOKGkCDiiaEo4pah4omh4oqQUGFyc2VSYW5nZU1hcOKGmDHiipzilqHiiaBAXG4uwrDilqEpIOKGmDEKQ29udGFpbnMg4oaQIOKJjTFfMOKJpApGaW5kUmFuZ2VNYXAg4oaQIOKKouKKmuKKguKKmTEg4omhQ29udGFpbnMg4oqZ4o2c4o2JKOKGmDEpCk1hcE51bSDihpAgK-KKoeKKg0ZpbmRSYW5nZU1hcCjiioLiipkw4oqi4o2JOikKU2VlZFJhbmdlcyDihpAg4o2cKMKw4oqf4o2JKeKKg-KImCsg4oavwq8xXzIKSW50ZXJzZWN0IOKGkCDiip_iipMv4oalL-KGp-KNnOKKn-KNiQpJc0VtcHR5IOKGkCAv4omkClNwbGl0QXQg4oaQIOKKgyjihqfiioLiiJ4pKOKGpeKKgjrCr-KInikKTWFwU2VlZFJhbmdlIOKGkCAoCiAgwqQr4oqZKOKKmeKKnyA64oqZSW50ZXJzZWN0IOKIqVNwbGl0QXQg4oqZLCkgwrBb4oqZ4oqZ4oiYXToKICDiiKko4pa9wqziiaFJc0VtcHR5LikKKQpGbGF0TWFwU2VlZFJhbmdlcyDihpAgO-KIpyjiioPii4XiiJgo4oip4oqC4oqZOjpNYXBTZWVkUmFuZ2UpKSDiipniipkoLuKGrzBfMltdKQpNYXBTZWVkUmFuZ2VzIOKGkCDiioLiiKco4oqZ4oqCRmxhdE1hcFNlZWRSYW5nZXM6KSA64oqZ4oqZKOKGrzBfMltdKQpBIOKGkCAv4oan4omhKOKIpyhNYXBOdW06wrDilqEpOikg4oqZwqQKQiDihpAgL-KGp-KKouKNiSDiiKcoTWFwU2VlZFJhbmdlczrCsOKWoSkgOlNlZWRSYW5nZXMKCuKKg0IgQSDiioNQYXJzZVNlZWRzIFBhcnNlTWFwcyDiipzilqHCrOKMlSJcblxuIi4K "Uiua solution for 2023/05")|[**6**](https://adventofcode.com/2023/day/6) [<img height=12 src=".assets/rs.svg">](Rust/2023/06.rs "Rust solution for 2023/06") [<img height=12 src=".assets/hs.svg">](Haskell/2023/06.hs "Haskell solution for 2023/06") [<img height=12 src=".assets/ua.png">](https://uiua.org/pad?src=JnNjCgpTb2x2ZSDihpAgKAogIMKw4oqf4oeMCiAgLeKKkyjDlzR84oG_Mi4pCiAg4oqD4oiYKOKMiuKImikKICA94oG_MiwKICAr4oqDLSjil78yKysrMSkKKQoK4oqcKOKKnOKLleKJoEAgLuKGmCsx4oqXQDouKeKJoEBcbi4K4oqDKFNvbHZlIOKJoS8o4ouV4oqC4oipwrDii5UpKSAoL8OX4omhU29sdmXijYkpCg== "Uiua solution for 2023/06")|[**7**](https://adventofcode.com/2023/day/7) [<img height=12 src=".assets/rs.svg">](Rust/2023/07.rs "Rust solution for 2023/07") [<img height=12 src=".assets/hs.svg">](Haskell/2023/07.hs "Haskell solution for 2023/07") [<img height=12 src=".assets/ua.png">](https://uiua.org/pad?src=JnNjCgpQYXJzZUNhcmQg4oaQICsy4oqX4oqZIjIzNDU2Nzg5VEpRS0EiClBhcnNlSGFuZCDihpAg4oqC4oqTKFBhcnNlQ2FyZMKw4pahfOKLlSnCsOKKnyDiipzilqHiiaBAIC4KQ291bnRDYXJkcyDihpAgwqTirJow4oavWzRdIOKGmDEg4oqP4o2WLiDiipXip7viipsuIOKWveKJoDAuCkhhbmRUeXBlIOKGkCAt4oqZNuKKouKKmiDiiaHiiY1bCiAgMF8wXzBfMCAxXzBfMF8wCiAgMl8wXzBfMCAxXzFfMF8wCiAgMl8xXzBfMCAxXzFfMV8wCiAgMV8xXzFfMV0gQ291bnRDYXJkcwpTb3J0IOKGkCDiio_ijY8g4omhKOKKgkhhbmRUeXBlLuKGmMKvMSkgLgpSZXBsYWNlSm9rZXJzIOKGkCDijZwo4oaYwq8xKSjDl-KJoDExLikKCuKKnFBhcnNlSGFuZOKJoEBcbi4K4omhUmVwbGFjZUpva2Vycy4K4oipKC8rw5cgKzHih6Hip7suIOKKouKHjOKNiSBTb3J0KQo= "Uiua solution for 2023/07")|[**8**](https://adventofcode.com/2023/day/8) [<img height=12 src=".assets/rs.svg">](Rust/2023/08.rs "Rust solution for 2023/08") [<img height=12 src=".assets/ua.png">](https://uiua.org/pad?src=JnNjCgpQYXJzZUluc3RydWN0aW9ucyDihpAgPUBSwrDilqHiiqIKUGFyc2VOb2RlIOKGkCDihpgx4oqicmVnZXgiKFteICxdKykgPSBcXCgoW14gLF0rKSwgKFteICxdKylcXCkiClBhcnNlTmV0d29yayDihpAg4omhUGFyc2VOb2RlIOKGmDEKUmVwbGFjZU5hbWVzIOKGkCDijZzijYko4oqX4oqDKOKGmDEp4oqiKQpGaW5kU3RhcnRBbmRHb2FsIOKGkCDiiKko4oqX4pahKSAiQUFBIiwiWlpaIuKKouKNiQpTdGFydEFuZEdvYWxNYXNrIOKGkCDiiKk9QEEsQFriiaEo4oqi4oeMKeKKouKNiQpTdGVwIOKGkCDiioMo4oqP4oqDKOKKj-KXv-Knuyzii4Xiipnii4Xii4XiiJh84oqP4oqZ4ouF4ouF4oiYKXwrMeKLheKImHzii4Xii4XiipniipniiJgpClJ1biEg4oaQIOKLheKKmeKLheKLhTsg4o2iU3RlcCjCrF4zKSDiipkwCkxDTSDihpAgw7c74oqD4o2i4oqD4pe_4oiYwrHDlwpBIOKGkCBSdW4hKD3iipnii4XiiJgpIEZpbmRTdGFydEFuZEdvYWwKQiDihpAgL0xDTSDiiaEoUnVuISjiio_iipnii4XiiJgpKSDiipMo4oqafMKkfMKkfMKkKSBTdGFydEFuZEdvYWxNYXNrCgriipzilqHiiaBAXG4uCuKKg1BhcnNlTmV0d29yayBQYXJzZUluc3RydWN0aW9ucwriioNCIEEg4oqD4oiYUmVwbGFjZU5hbWVzCg== "Uiua solution for 2023/08")|[**9**](https://adventofcode.com/2023/day/9) [<img height=12 src=".assets/rs.svg">](Rust/2023/09.rs "Rust solution for 2023/09") [<img height=12 src=".assets/hs.svg">](Haskell/2023/09.hs "Haskell solution for 2023/09") [<img height=12 src=".assets/ua.png">](https://uiua.org/pad?src=JnNjCgrijYniipwo4oqc4ouV4omgQCAuKeKJoEBcbi4K4oipKC8r4pmtWzvijaXiioMo4omhLy3il6syKSjiiqLih4wpXS0x4qe7Likg4oeMLgo= "Uiua solution for 2023/09")|[**10**](https://adventofcode.com/2023/day/10) [<img height=12 src=".assets/rs.svg">](Rust/2023/10.rs "Rust solution for 2023/10")|
|[**11**](https://adventofcode.com/2023/day/11) [<img height=12 src=".assets/rs.svg">](Rust/2023/11.rs "Rust solution for 2023/11") [<img height=12 src=".assets/ua.png">](https://uiua.org/pad?src=JnNjCgpFeHBhbmQg4oaQIOKWvTriiKko4piHwq8yKeKKnuKKn-KIqShcKysxw5ctMTovw5fCrCnijYksLCwKCj1AI-KKnOKImOKJoEBcbi4K4oqDKEV4cGFuZCAxMDAwMDAwKShFeHBhbmQgMikK4oipKMO3Mi8r4pmt4oqgKC8r4oy1LSkuKQo= "Uiua solution for 2023/11")|[**12**](https://adventofcode.com/2023/day/12) [<img height=12 src=".assets/rs.svg">](Rust/2023/12.rs "Rust solution for 2023/12")|[**13**](https://adventofcode.com/2023/day/13) [<img height=12 src=".assets/rs.svg">](Rust/2023/13.rs "Rust solution for 2023/13") [<img height=12 src=".assets/ua.png">](https://uiua.org/pad?src=JnNjCgpNaXNtYXRjaGVzIOKGkCAvK-KZreKJoCDiiKnihpksOiDihqfiiKnip7ssLCDiipnih4wg4oqD4oaY4oaZClNvbHZlISDihpAgK8OXMTAwOiDiiKkoLyvDlz1eMDog4oqZ4omhTWlzbWF0Y2hlcy4g4o2cKC0xKeKHoeKKg-Knu8KkKSDijYkuCgriipwo4pah4oqc4oiY4omgQFxuLinCrOKMlSJcblxuIi4K4oipLysg4oqQ4omh4oqDU29sdmUhMSBTb2x2ZSEwCg== "Uiua solution for 2023/13")|[**14**](https://adventofcode.com/2023/day/14) [<img height=12 src=".assets/rs.svg">](Rust/2023/14.rs "Rust solution for 2023/14")|[**15**](https://adventofcode.com/2023/day/15) [<img height=12 src=".assets/rs.svg">](Rust/2023/15.rs "Rust solution for 2023/15")|[**16**](https://adventofcode.com/2023/day/16) [<img height=12 src=".assets/rs.svg">](Rust/2023/16.rs "Rust solution for 2023/16")|[**17**](https://adventofcode.com/2023/day/17) [<img height=12 src=".assets/rs.svg">](Rust/2023/17.rs "Rust solution for 2023/17")|
|[**18**](https://adventofcode.com/2023/day/18) [<img height=12 src=".assets/rs.svg">](Rust/2023/18.rs "Rust solution for 2023/18") [<img height=12 src=".assets/ua.png">](https://uiua.org/pad?src=JnNjCgpQYXJzZUluc3Qg4oaQIOKKg-KGmOKGmTIg4oaYMeKKonJlZ2V4Il4oW1JETFVdKSAoXFxkKykgXFwoIyguezV9KShbMDEyM10pXFwpJCIKUGFyc2VIZXgg4oaQIOKIpygrw5cxNjop4oqZMOKKl-KKmSIwMTIzNDU2Nzg5YWJjZGVmIgpQYXJzZUEg4oaQIOKJoeKNnMKw4oqf4oqTKOKKl-KKmSJSRExVIuKKonzii5UpClBhcnNlQiDihpAg4omhKOKNnMKw4oqf4oqTKOKLlXxQYXJzZUhleMKw4pahKeKHjCkKU29sdmUg4oaQICgKICDiipkoMCAwIDApCiAgO-KIpyjiioMoKCt8O3wtfDspfCg7fCt8O3wtKeKKmcOXfCvii4Xiipnii4Xii4XiiJgpwrDiip8pCiAgKzErw7cyOgopCgriipxQYXJzZUluc3TiiaBAXG4uCuKIqVNvbHZlIOKKk1BhcnNlQiBQYXJzZUEK "Uiua solution for 2023/18")|[**19**](https://adventofcode.com/2023/day/19) [<img height=12 src=".assets/rs.svg">](Rust/2023/19.rs "Rust solution for 2023/19")|[**20**](https://adventofcode.com/2023/day/20) [<img height=12 src=".assets/rs.svg">](Rust/2023/20.rs "Rust solution for 2023/20")|[**21**](https://adventofcode.com/2023/day/21) [<img height=12 src=".assets/rs.svg">](Rust/2023/21.rs "Rust solution for 2023/21")|[**22**](https://adventofcode.com/2023/day/22) [<img height=12 src=".assets/rs.svg">](Rust/2023/22.rs "Rust solution for 2023/22")|[**23**](https://adventofcode.com/2023/day/23) [<img height=12 src=".assets/rs.svg">](Rust/2023/23.rs "Rust solution for 2023/23")|[**24**](https://adventofcode.com/2023/day/24) [<img height=12 src=".assets/rs.svg">](Rust/2023/24.rs "Rust solution for 2023/24")|
|[**25**](https://adventofcode.com/2023/day/25)|26|27|28|29|30|31|
|[**25**](https://adventofcode.com/2023/day/25) [<img height=12 src=".assets/rs.svg">](Rust/2023/25.rs "Rust solution for 2023/25")|26|27|28|29|30|31|

## [2022](https://adventofcode.com/2022) ([<img height=18 src=".assets/rs.svg"> Rust](Rust/2022): 25/25 | [<img height=18 src=".assets/py.svg"> Python](Python/2022): 18/25 | [<img height=18 src=".assets/hs.svg"> Haskell](Haskell/2022): 9/25 | [<img height=18 src=".assets/ua.png"> Uiua](Uiua/2022): 7/25)
|Mo|Tu|We|Th|Fr|Sa|Su|
Expand Down
35 changes: 35 additions & 0 deletions Rust/2023/25.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#![feature(test)]

use rustc_hash::FxHashMap;
use rustworkx_core::{
connectivity::stoer_wagner_min_cut,
petgraph::{Graph, Undirected},
};

type Input = Graph<(), (), Undirected, u16>;

fn setup(input: &str) -> Input {
let mut graph = Graph::default();
let mut nodes = FxHashMap::default();
for line in input.lines() {
let p = *nodes
.entry(line.split(':').next().unwrap())
.or_insert_with(|| graph.add_node(()));
for q in line.split_whitespace().skip(1) {
let q = *nodes.entry(q).or_insert_with(|| graph.add_node(()));
graph.add_edge(p, q, ());
}
}
graph
}

fn part1(input: &Input) -> usize {
let x = stoer_wagner_min_cut(input, |_| Ok::<_, ()>(1))
.unwrap()
.unwrap()
.1
.len();
x * (input.node_count() - x)
}

aoc::main!(2023, 25, ex: 1);
154 changes: 151 additions & 3 deletions Rust/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions Rust/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ paste = "1.0.14"
rayon = "1.8.0"
regex = "1.10.2"
rustc-hash = "1.1.0"
rustworkx-core = "0.13.2"
smallvec = "1.11.1"
z3 = "0.12.1"

Expand Down Expand Up @@ -297,3 +298,6 @@ path = "2023/23.rs"
[[bin]]
name = "2023_24"
path = "2023/24.rs"
[[bin]]
name = "2023_25"
path = "2023/25.rs"
13 changes: 13 additions & 0 deletions examples/2023/25/1
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
jqt: rhn xhk nvd
rsh: frs pzl lsr
xhk: hfx
cmg: qnr nvd lhk bvb
rhn: xhk bvb hfx
bvb: xhk hfx
pzl: lsr hfx nvd
qnr: nvd
ntq: jqt hfx bvb xhk
nvd: lhk
lsr: lhk
rzs: qnr cmg lsr rsh
frs: qnr lhk lsr
1 change: 1 addition & 0 deletions examples/2023/25/1.1
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
54
1 change: 1 addition & 0 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
pyperclip
requests
beautifulsoup4
networkx
sympy
]);

Expand Down

0 comments on commit ceb6b86

Please sign in to comment.