From 18927efd840a08d91a6566578912083decbe9c77 Mon Sep 17 00:00:00 2001 From: sepia Date: Wed, 4 Dec 2024 04:57:42 -0600 Subject: [PATCH] Day 4 --- Cargo.lock | 1454 ++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 2 + res/puzzle_1.txt | 1001 ------------------------------- res/puzzle_2.txt | 1001 ------------------------------- res/puzzle_3.txt | 7 - src/day1.rs | 5 +- src/day2.rs | 4 +- src/day3.rs | 5 +- src/day4.rs | 53 ++ src/main.rs | 16 +- 10 files changed, 1531 insertions(+), 2017 deletions(-) delete mode 100644 res/puzzle_1.txt delete mode 100644 res/puzzle_2.txt delete mode 100644 res/puzzle_3.txt create mode 100644 src/day4.rs diff --git a/Cargo.lock b/Cargo.lock index 76b3828..8f183dc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,11 +2,28 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + [[package]] name = "advent" version = "0.1.0" dependencies = [ + "dotenvy", "regex", + "reqwest", ] [[package]] @@ -18,12 +35,715 @@ dependencies = [ "memchr", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "backtrace" +version = "0.3.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets", +] + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "bytes" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" + +[[package]] +name = "cc" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f34d93e62b03caf570cccc334cbc6c2fceca82f39211051345108adcba3eebdc" +dependencies = [ + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "dotenvy" +version = "0.15.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "fastrand" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-io", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "h2" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" + +[[package]] +name = "http" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +dependencies = [ + "bytes", + "futures-util", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" + +[[package]] +name = "hyper" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97818827ef4f364230e16705d4706e2897df2bb60617d6ca15d598025a3c481f" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" +dependencies = [ + "futures-util", + "http", + "hyper", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] + +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "idna" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "indexmap" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "ipnet" +version = "2.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" + +[[package]] +name = "itoa" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" + +[[package]] +name = "js-sys" +version = "0.3.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a865e038f7f6ed956f788f0d7d60c541fff74c7bd74272c5d4cf15c63743e705" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "libc" +version = "0.2.167" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09d6582e104315a817dff97f75133544b2e094ee22447d2acf4a74e189ba06fc" + +[[package]] +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "litemap" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" + +[[package]] +name = "log" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" + [[package]] name = "memchr" version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.52.0", +] + +[[package]] +name = "native-tls" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "object" +version = "0.36.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" + +[[package]] +name = "openssl" +version = "0.10.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" +dependencies = [ + "bitflags", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pin-project-lite" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" + +[[package]] +name = "proc-macro2" +version = "1.0.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +dependencies = [ + "proc-macro2", +] + [[package]] name = "regex" version = "1.11.1" @@ -52,3 +772,737 @@ name = "regex-syntax" version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "reqwest" +version = "0.12.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" +dependencies = [ + "base64", + "bytes", + "encoding_rs", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-tls", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "system-configuration", + "tokio", + "tokio-native-tls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows-registry", +] + +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom", + "libc", + "spin", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustix" +version = "0.38.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls" +version = "0.23.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "934b404430bb06b3fae2cba809eb45a1ab1aecd64491213d7c3301b88393f8d1" +dependencies = [ + "once_cell", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pemfile" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" + +[[package]] +name = "rustls-webpki" +version = "0.102.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "schannel" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "serde" +version = "1.0.215" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.215" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.133" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "socket2" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "2.0.90" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "system-configuration" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tempfile" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" +dependencies = [ + "cfg-if", + "fastrand", + "once_cell", + "rustix", + "windows-sys 0.59.0", +] + +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tokio" +version = "1.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +dependencies = [ + "rustls", + "rustls-pki-types", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "unicode-ident" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.97" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d15e63b4482863c109d70a7b8706c1e364eb6ea449b201a76c5b89cedcec2d5c" +dependencies = [ + "cfg-if", + "once_cell", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.97" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d36ef12e3aaca16ddd3f67922bc63e48e953f126de60bd33ccc0101ef9998cd" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dfaf8f50e5f293737ee323940c7d8b08a66a95a419223d9f41610ca08b0833d" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.97" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "705440e08b42d3e4b36de7d66c944be628d579796b8090bfa3471478a2260051" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.97" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98c9ae5a76e46f4deecd0f0255cc223cfa18dc9b261213b8aa0c7b36f61b3f1d" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.97" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ee99da9c5ba11bd675621338ef6fa52296b76b83305e9b6e5c77d4c286d6d49" + +[[package]] +name = "web-sys" +version = "0.3.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a98bc3c33f0fe7e59ad7cd041b89034fa82a7c2d4365ca538dda6cdaf513863c" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "windows-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +dependencies = [ + "windows-result", + "windows-strings", + "windows-targets", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerofrom" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/Cargo.toml b/Cargo.toml index 3d2453e..b7be0c2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,4 +4,6 @@ version = "0.1.0" edition = "2021" [dependencies] +dotenvy = "0.15.7" regex = "1.11.1" +reqwest = { version = "0.12.9", features = ["blocking"] } diff --git a/res/puzzle_1.txt b/res/puzzle_1.txt deleted file mode 100644 index bca7012..0000000 --- a/res/puzzle_1.txt +++ /dev/null @@ -1,1001 +0,0 @@ -63721 98916 -83871 23584 -55026 62690 -21948 69139 -11201 33499 -96077 62705 -41231 87261 -71203 13285 -53280 86974 -31172 11658 -56516 98916 -59380 19138 -96772 61094 -63969 69126 -20073 82512 -20834 38571 -92030 96010 -84089 39901 -18339 22036 -28056 25937 -75715 99430 -70846 98374 -56817 62289 -97037 22364 -32411 51681 -41809 98156 -76944 37563 -58189 69139 -21939 82512 -45097 86974 -62705 26019 -95791 61094 -31801 84428 -69238 88614 -39850 13908 -26002 39901 -64599 33304 -44590 98374 -78335 51888 -82512 52047 -57887 78631 -27860 51468 -72024 12311 -47520 51468 -97347 59780 -13728 65706 -52302 74556 -33471 98916 -14163 40376 -20346 83807 -80912 17961 -95998 65684 -32219 24194 -46236 13285 -98428 88835 -40577 61608 -91716 98121 -60156 70703 -54527 51961 -42782 12309 -42240 83795 -15918 50087 -42622 14360 -22114 99603 -87281 54967 -91581 99603 -52780 23792 -46822 82512 -30877 29405 -33424 11774 -32272 82512 -78679 62052 -36612 29914 -42681 61094 -48481 52039 -69769 62690 -64189 40376 -54255 66788 -54850 66572 -12528 22130 -86174 40376 -65976 80500 -63915 28775 -66788 83807 -83422 66572 -90402 99603 -85348 80418 -14682 98916 -45822 28775 -13157 20346 -38402 31258 -80935 10753 -65070 20317 -32676 34871 -31427 15594 -42781 47864 -55644 44957 -30989 42965 -38756 62052 -39293 97881 -30968 62690 -56882 29405 -65462 68541 -76422 50715 -34547 24194 -72282 62690 -92342 42296 -25897 20849 -14452 82122 -75858 15046 -75577 85634 -20594 77936 -39912 68541 -69139 31502 -64342 61039 -71898 31258 -53098 20346 -39892 37035 -10887 98374 -97900 94957 -67382 97046 -10705 40376 -68234 89731 -51652 54595 -51440 62705 -97584 97240 -21827 63629 -96359 84707 -15434 61734 -93030 97129 -56574 67650 -24020 67035 -23745 68753 -40655 66572 -97113 16063 -81714 15465 -27278 54255 -36489 66572 -30802 98374 -26081 72575 -61525 18852 -82667 66788 -73634 90961 -64265 61589 -21183 62690 -77550 68541 -29208 12408 -54092 85880 -40518 54255 -89148 50707 -50039 64048 -38834 73718 -62607 75650 -15015 78049 -97975 29405 -92080 42574 -83720 22415 -93384 69139 -40696 44729 -97526 23792 -61734 92736 -38878 98762 -20162 77446 -77727 69139 -27458 18662 -36125 20197 -75944 18725 -86346 22364 -44849 75485 -65394 60670 -39257 34871 -17370 35661 -61046 66572 -73445 78735 -23792 95066 -33670 28775 -31800 69139 -37622 60352 -34456 98916 -82819 39901 -36275 77446 -71616 33673 -14730 28900 -62052 60624 -55307 34871 -75279 74526 -89572 31258 -66278 27816 -84982 57963 -99221 19953 -86616 56531 -31692 98916 -51468 24249 -48579 38018 -52462 97340 -80487 28775 -99371 35813 -70905 66987 -39381 33563 -62589 23792 -24144 83850 -16708 29405 -43869 28900 -39310 53542 -85314 15046 -95478 28900 -61190 98374 -21175 82122 -13285 72243 -99081 70483 -10815 39901 -93293 86144 -95585 98933 -65731 50087 -99562 23792 -93416 66572 -49380 22364 -95099 29405 -94262 62052 -50620 98916 -16427 34871 -18103 13285 -17044 86336 -35640 61734 -27106 34871 -99272 28807 -68345 44179 -47215 14224 -99510 34186 -59344 66788 -56087 23535 -54047 80026 -18016 63772 -72531 71440 -59402 40376 -92026 34871 -56899 79559 -45736 36788 -43217 91863 -77064 98157 -56018 20317 -76327 28900 -72821 19407 -63500 62937 -68547 66572 -42193 37130 -81823 22364 -72027 82450 -59894 57408 -22894 26775 -49624 34871 -85677 13285 -59165 28469 -15814 98374 -18197 93778 -48375 14885 -94778 98916 -86385 97997 -41779 73577 -52971 34871 -91842 61256 -22568 61256 -14237 54358 -76119 55268 -54946 28775 -71933 65810 -86928 24194 -10238 98916 -80990 69427 -28001 39901 -47286 32918 -70609 66079 -15760 36747 -36567 94015 -11786 34931 -18890 78631 -46903 39901 -50399 74710 -89746 66572 -31258 50430 -49217 99603 -71388 98374 -65381 63073 -26294 20317 -97188 98374 -36571 22130 -68437 35813 -40142 31258 -51693 29405 -29472 67550 -85983 99480 -83807 38797 -36204 40376 -22611 40376 -66861 24683 -86715 62690 -24390 12106 -78554 74773 -16233 91468 -46647 17362 -18129 98916 -74379 24194 -39901 94180 -28130 89936 -15255 53500 -90359 98374 -36114 24194 -69761 78631 -40961 96415 -32323 35661 -72742 53446 -18224 51468 -79717 66788 -63337 62052 -83257 77446 -70340 20417 -37092 23073 -11465 91804 -93712 51468 -70424 20346 -79670 47774 -53326 99603 -61413 35813 -28509 77446 -10392 51646 -20411 79767 -10834 34900 -46987 77824 -84749 14347 -64003 60388 -37510 23792 -67074 15046 -86583 22130 -74774 17706 -27254 32069 -24780 62690 -74592 66572 -19956 50397 -87787 78631 -27551 86335 -27313 62690 -11764 13285 -16566 68541 -52387 43204 -32314 30981 -50548 23792 -66572 98374 -23813 14490 -10031 73014 -98916 99603 -85669 51468 -41290 31893 -79434 77446 -41146 75460 -21093 31258 -22150 39901 -77726 76376 -86750 35661 -52067 34432 -22075 52433 -80197 29405 -43183 40376 -48981 51468 -49114 65262 -17821 83795 -66079 72103 -61094 54261 -22863 86785 -79221 35813 -37160 86690 -43323 60348 -27816 98916 -23797 13285 -52087 83795 -69710 62690 -37097 62690 -58946 35813 -25528 78631 -95945 39426 -10344 83292 -25204 22035 -20851 44476 -49675 18087 -60917 98916 -38511 66788 -50625 13566 -92213 42204 -14434 35517 -16747 79017 -98256 82122 -13429 23798 -10505 22364 -56299 51468 -11971 98374 -82974 95791 -71227 93187 -17329 20899 -86233 48880 -64887 13285 -67572 72363 -42339 16540 -37301 88128 -99216 13285 -21173 13285 -39433 80508 -56739 98916 -19158 66788 -99366 97494 -78631 76828 -64445 49058 -84071 27319 -76591 94653 -72285 39901 -86827 68541 -97195 50087 -94820 39901 -51240 66572 -19704 13285 -82252 54471 -90511 81325 -39890 82624 -28900 23792 -89837 29405 -27432 20051 -12464 68541 -51911 49067 -70069 51468 -38185 96194 -61979 61734 -44809 34871 -50816 74433 -88128 62052 -68302 11847 -65790 14562 -18639 61545 -43973 50325 -32245 71996 -32770 78631 -80007 24194 -81848 17710 -48925 27816 -36951 78631 -44300 83864 -39815 88563 -33287 87639 -81599 40376 -83780 34010 -76105 37309 -66186 57599 -30330 15408 -85410 76902 -32775 62690 -96368 35661 -36267 31258 -63258 50558 -29106 28298 -82546 62690 -11099 61734 -78293 25816 -96305 15046 -29590 35661 -62248 69139 -28271 78631 -28395 61256 -64484 97925 -25386 35813 -27975 55981 -62690 55244 -36937 36761 -14288 78631 -58395 15040 -71622 20346 -29580 10650 -19543 29405 -91211 62052 -67129 23792 -71075 89904 -35814 78631 -24320 66399 -68616 62052 -81607 13285 -16440 69113 -20317 34871 -34990 86694 -46814 17420 -48773 18642 -16983 12462 -76286 22364 -43760 50461 -89012 98374 -76734 83795 -82889 81347 -94844 83039 -87086 42228 -79066 34871 -60930 62690 -14671 98362 -15046 98916 -23105 64417 -15963 26384 -17578 66788 -19749 35813 -73717 77781 -55768 78631 -81328 86974 -98374 30582 -74371 98916 -62198 66788 -18216 29620 -83718 35167 -97216 66806 -21853 23792 -95659 45644 -54690 19553 -99854 54434 -60953 82122 -29405 20346 -77446 61734 -74477 61881 -59384 34871 -22201 82512 -41680 22364 -70388 33526 -79474 35813 -95676 61734 -81066 86974 -50184 69139 -92334 73193 -63301 74886 -88694 25546 -29122 40376 -35513 61734 -34871 51468 -27159 78631 -92093 22364 -97523 46887 -75320 75413 -50553 66788 -69335 39901 -31428 36441 -63138 38796 -65691 66589 -18442 61734 -95290 40828 -30463 84566 -13760 20346 -63642 38111 -38068 99603 -88985 51468 -86911 13890 -81763 98405 -60314 34871 -79229 98374 -54222 37457 -41191 35661 -94686 14344 -48723 40376 -53331 51468 -82320 32023 -13879 64243 -77615 78631 -21373 81177 -99603 28900 -74982 17203 -61957 82512 -49736 29405 -71158 16258 -46734 68257 -91305 13285 -15307 77446 -88888 75540 -96953 82122 -73049 34871 -25806 66509 -28775 22364 -88849 84256 -73085 31258 -82002 45833 -92219 61094 -94438 62690 -74931 10907 -19013 56348 -61330 51468 -45424 32416 -85351 51468 -43176 78631 -92511 31258 -74316 50766 -52865 80456 -90670 19338 -60903 50287 -13027 23792 -70012 37373 -28645 95137 -29890 52066 -90210 22364 -83928 91550 -84224 95653 -52748 22364 -25385 89306 -29258 61754 -22425 81852 -83606 23792 -86286 33987 -78304 78631 -46454 77446 -68130 78631 -84341 34871 -32536 98374 -46176 51468 -18381 52328 -74842 12157 -99320 34871 -36587 51215 -65504 11768 -62256 20755 -62433 28900 -18797 64268 -46028 56766 -34433 39901 -55237 69139 -67094 83807 -59294 29927 -18052 66788 -37438 65122 -89900 22130 -86138 66808 -17409 61734 -41410 77446 -36675 98987 -93185 40326 -68737 97123 -12420 28900 -28431 13285 -79903 61734 -85029 49719 -87114 38161 -10277 97814 -91030 77446 -60032 40376 -26941 71642 -40711 62052 -66007 98916 -36232 22130 -77300 66788 -82122 74191 -93403 86974 -10869 26173 -32606 39901 -36002 90403 -37936 61256 -36223 14536 -90084 98370 -13588 29405 -92588 23792 -76528 68541 -91855 98758 -65053 77446 -31950 15046 -20160 83646 -98329 13285 -59162 20346 -78821 86974 -73311 15046 -83143 14519 -61256 47938 -68103 43062 -62427 72651 -50329 77446 -93857 91804 -50509 31563 -12726 98916 -91094 51468 -62068 97829 -88270 51468 -98814 42679 -96608 66788 -21920 22364 -85592 59267 -56819 39901 -60434 69139 -68767 20590 -23123 31258 -64662 78921 -26559 45234 -72799 82122 -83414 62705 -35661 22364 -22499 53665 -90831 52136 -31956 56969 -53393 20346 -30160 91715 -40872 68541 -96530 20724 -73972 46762 -23784 77789 -51604 14275 -24516 33815 -51694 36170 -54999 40276 -71340 77446 -33559 50566 -97770 86974 -57181 98916 -11456 95791 -43991 35813 -39647 99603 -31291 48238 -24411 66572 -50087 15046 -36907 81744 -84965 43494 -80699 26639 -70287 28114 -30928 62052 -29829 27652 -45493 29405 -96002 68340 -86510 83248 -58569 14674 -95602 83044 -60548 62973 -87844 29873 -64650 24194 -91993 61256 -25193 12039 -93597 69445 -44397 75998 -16429 68541 -36998 98916 -46382 35813 -73943 56489 -18980 38254 -52184 29113 -27861 53315 -78208 52158 -39137 95325 -71411 96871 -11297 50795 -24795 10762 -45672 85223 -20458 45112 -68342 86974 -48555 68541 -14057 89657 -45348 83795 -69091 85340 -32017 91553 -47365 29405 -69846 42783 -42794 66079 -55767 35661 -79443 18679 -97731 28900 -78728 46714 -51662 61502 -86974 40376 -66784 69988 -21713 26696 -67541 89573 -63234 48739 -75844 11283 -72169 63197 -68116 27816 -39756 58055 -49060 52912 -86033 20346 -77374 32945 -54054 15032 -10242 66300 -39964 39901 -16823 98374 -35949 64043 -45790 71364 -85734 62690 -39953 67342 -19397 36827 -30706 47034 -62392 27816 -36736 76359 -41284 27040 -91564 18615 -27419 49560 -35658 83795 -88035 27816 -58920 61094 -24194 53105 -41569 61734 -88977 67702 -59178 31337 -91804 24194 -68538 51029 -45699 22539 -64646 39901 -49570 66788 -42702 66572 -10875 16521 -54579 34871 -30993 82512 -46568 99603 -36007 61734 -41554 40376 -28737 86974 -47642 54509 -95772 28900 -91043 31258 -84273 98374 -75931 71232 -40158 35777 -40376 95791 -52356 68460 -63119 77046 -85547 24461 -48564 15619 -61344 14922 -20517 68541 -69816 52014 -33687 82149 -39886 57790 -85582 77421 -16170 48400 -32839 24194 -59842 14809 -40767 22364 -14572 86974 -94812 29405 -29781 20317 -25093 51468 -22523 15286 -69772 49833 -24511 89853 -95422 63827 -18619 62557 -71465 56921 -80392 23792 -75031 22130 -88990 61046 -62453 63513 -10363 61094 -33426 40376 -34338 98916 -19106 22364 -16632 21897 -93602 80485 -70657 83807 -87290 93753 -48905 69139 -19137 58766 -74790 78631 -17479 66515 -59784 40376 -35921 69139 -63281 99603 -49035 54255 -42278 49216 -88656 61094 -18166 68541 -15171 27816 -25018 66572 -58709 66788 -26678 52650 -51627 82122 -71638 28900 -52703 93929 -54658 29405 -63402 77446 -62250 36480 -20727 96945 -66177 13629 -11052 95791 -16012 70360 -14890 58523 -68314 61256 -27581 61256 -68541 66572 -96645 99603 -79922 66079 -45897 37920 -46727 62690 -92327 50087 -97244 19990 -97604 92430 -10996 21728 -54944 66788 -51431 75661 -44593 70853 -57290 22130 -44100 51468 -88066 95791 -64545 62690 -15185 98374 -81005 83795 -24581 59570 -18803 39901 -31017 35731 -52752 16550 -55973 83795 -41888 77446 -54026 23792 -45685 23792 -39267 15380 -74192 99479 -48209 75402 -43467 78806 -83468 68541 -22364 44940 -22179 52910 -61634 23792 -45998 72739 -41096 35813 -17074 39901 -34245 99603 -38149 66572 -87211 34871 -39320 39901 -35813 69139 -72525 29405 -17308 20346 -26336 35661 -16331 31258 -18176 61256 -28796 86974 -91989 40376 -76266 72180 -79522 97407 -46148 98374 -91891 90085 -29539 88770 -97919 99153 -14625 62052 -33094 31225 -75423 62690 -64206 66079 -91522 17031 -36889 86974 -98905 35912 -67253 22364 -86480 62690 -47746 68541 -54727 40171 -39202 68929 -83795 17632 -19065 77446 -73523 79097 -63938 59651 -64774 22364 -86179 83795 -19996 75565 -49609 66760 -22417 31817 -90246 15046 -25158 27060 -27237 61256 -20154 11191 -80548 61256 -83429 39901 -82411 39901 -36646 99815 -89469 34241 -69714 73572 -17832 65920 -98578 62023 -26264 78372 -23951 10088 -91003 39552 -14615 99603 -78726 83194 -31384 44477 -22130 45848 -83121 81284 -87043 42282 -25669 40376 -61080 98374 -29216 68226 -19808 31190 -12025 77446 -49018 46070 -71086 35813 -26776 48041 -94075 35661 -51192 34871 -18698 61094 -77232 66079 -18652 44005 -47380 86974 -91250 69139 -54224 23792 -22462 23279 -96949 25734 -18113 60075 -76499 35842 -13733 89585 -47074 51199 -30881 61256 -41926 82925 -51892 88913 -56351 49034 -39241 85194 -43972 20620 - diff --git a/res/puzzle_2.txt b/res/puzzle_2.txt deleted file mode 100644 index 18bf5b9..0000000 --- a/res/puzzle_2.txt +++ /dev/null @@ -1,1001 +0,0 @@ -5 6 7 10 13 16 13 -19 21 24 27 28 28 -16 18 20 21 23 25 29 -44 46 48 49 52 55 56 62 -51 52 53 50 52 -10 11 12 14 11 10 -80 83 85 86 88 85 85 -89 90 88 90 94 -85 86 83 85 92 -31 32 32 33 36 -17 18 18 19 16 -33 34 34 37 39 40 43 43 -86 87 89 90 92 92 96 -7 9 11 13 16 16 23 -59 60 64 67 69 -43 45 49 51 48 -11 13 14 17 21 22 24 24 -74 75 78 82 83 86 88 92 -7 8 9 12 16 18 23 -35 36 39 45 48 49 -10 12 14 15 22 24 21 -4 6 11 12 12 -84 86 88 93 97 -5 7 8 15 16 23 -67 66 68 70 71 74 76 -17 16 19 20 22 25 22 -41 40 42 45 46 47 47 -59 56 58 61 63 67 -26 25 26 29 31 32 38 -81 78 76 79 82 85 86 88 -54 52 49 52 54 55 53 -24 23 25 23 25 25 -29 28 27 30 31 34 38 -65 64 66 64 69 -88 86 86 87 90 93 96 -98 97 97 99 97 -68 67 68 71 71 72 72 -45 42 45 46 49 49 53 -91 89 89 91 92 99 -63 62 65 67 68 72 75 -79 76 79 80 82 85 89 87 -37 35 38 42 42 -90 87 88 92 93 97 -80 77 80 82 85 89 94 -9 6 12 13 15 -88 87 89 96 99 97 -39 37 39 45 46 49 52 52 -6 4 5 6 12 13 16 20 -2 1 4 9 12 14 21 -80 80 81 84 86 -82 82 84 86 85 -49 49 51 52 53 54 54 -79 79 80 83 85 86 88 92 -56 56 59 62 64 65 72 -56 56 59 61 63 66 64 67 -59 59 58 60 57 -66 66 67 68 67 67 -25 25 22 25 29 -4 4 6 5 12 -89 89 89 91 93 -6 6 9 11 11 13 16 15 -33 33 36 38 39 39 40 40 -60 60 63 63 66 67 68 72 -62 62 64 67 67 74 -30 30 33 37 40 42 44 -16 16 20 23 26 27 24 -79 79 83 84 85 86 86 -28 28 32 34 37 39 43 -39 39 40 43 46 50 56 -3 3 5 11 14 17 20 -54 54 55 56 57 64 62 -37 37 42 45 47 47 -44 44 50 53 56 59 60 64 -32 32 37 40 45 -20 24 27 28 30 33 35 -15 19 22 25 27 25 -84 88 91 92 93 95 97 97 -80 84 86 88 89 93 -79 83 86 87 88 90 97 -39 43 40 43 44 46 -70 74 73 76 73 -10 14 15 18 16 17 17 -44 48 47 49 51 53 57 -9 13 14 17 18 20 19 26 -60 64 67 70 73 76 76 78 -62 66 69 69 70 69 -17 21 24 24 27 27 -8 12 12 14 17 21 -30 34 35 35 38 40 41 48 -12 16 20 23 26 -67 71 73 75 79 77 -37 41 44 48 49 49 -24 28 29 32 36 40 -63 67 71 74 76 83 -58 62 68 70 73 74 75 -75 79 81 83 90 89 -5 9 14 15 15 -10 14 15 21 23 25 27 31 -3 7 12 15 20 -9 14 17 18 19 21 22 23 -1 6 9 12 15 16 15 -86 91 92 94 94 -64 70 71 74 77 79 83 -42 47 49 52 54 61 -66 72 74 73 74 75 78 79 -41 47 49 48 47 -47 53 52 54 54 -55 61 62 59 62 63 65 69 -60 67 70 67 69 72 77 -59 65 67 67 70 73 75 -41 48 50 50 51 50 -34 41 41 43 44 44 -54 60 62 63 64 65 65 69 -79 84 87 87 89 92 93 99 -11 16 20 21 24 -48 53 55 56 60 63 66 64 -75 81 83 87 87 -24 30 33 37 41 -18 23 26 29 33 34 41 -10 17 20 22 29 31 33 -74 80 83 86 91 89 -48 53 59 61 62 62 -25 30 32 37 39 42 46 -59 66 72 73 78 -34 32 29 27 24 22 20 23 -99 97 95 92 90 89 86 86 -23 22 21 20 17 16 13 9 -77 74 73 71 68 65 64 59 -31 29 27 24 25 23 -91 90 88 85 84 81 84 87 -32 31 30 27 25 27 27 -52 50 48 46 49 48 47 43 -16 15 12 10 8 7 8 1 -12 11 8 8 5 2 1 -15 13 12 9 9 10 -74 71 70 70 67 64 64 -68 67 66 65 63 63 61 57 -45 42 41 41 34 -40 38 34 33 31 28 -45 42 38 36 34 37 -93 92 90 89 88 84 83 83 -31 30 26 23 19 -33 32 30 28 26 25 21 14 -68 67 60 57 55 54 53 51 -32 31 28 25 19 21 -83 80 74 72 69 68 68 -44 41 38 37 34 29 28 24 -59 56 54 47 45 44 37 -40 41 38 37 35 33 32 -52 53 51 48 47 46 47 -32 35 34 32 30 30 -58 59 57 54 51 49 46 42 -48 51 48 45 44 38 -32 35 38 37 34 33 -86 89 91 88 85 83 86 -61 63 61 60 58 59 57 57 -97 98 97 95 92 89 92 88 -36 38 41 39 38 33 -87 89 89 88 86 -92 95 95 92 89 88 91 -70 73 71 71 71 -69 70 70 68 67 65 61 -61 62 62 59 56 54 47 -64 66 64 61 57 54 -23 24 21 17 15 12 11 14 -14 17 16 12 10 8 8 -80 81 77 74 72 70 66 -30 31 29 27 23 20 17 11 -28 31 26 23 21 18 -20 21 16 15 12 11 13 -41 44 38 36 36 -59 60 59 53 49 -28 31 30 28 23 22 17 -42 42 41 39 37 35 34 31 -47 47 44 41 43 -89 89 88 85 84 82 80 80 -59 59 56 55 52 49 48 44 -55 55 54 51 50 43 -24 24 21 24 21 19 16 13 -92 92 90 89 87 84 85 86 -98 98 97 98 97 97 -58 58 56 55 58 57 56 52 -44 44 43 41 43 41 34 -57 57 57 55 54 52 49 -87 87 87 86 87 -89 89 86 86 85 85 -18 18 15 15 14 13 9 -34 34 34 31 29 27 26 20 -71 71 70 66 65 -64 64 62 61 57 56 58 -18 18 14 11 9 6 6 -83 83 81 78 76 72 68 -72 72 68 67 66 65 60 -85 85 84 83 77 75 74 71 -53 53 51 44 46 -8 8 6 1 1 -17 17 11 9 5 -68 68 67 64 61 55 54 48 -20 16 13 12 9 8 -99 95 92 89 88 90 -33 29 26 23 20 20 -70 66 63 60 56 -37 33 31 29 28 23 -27 23 21 22 19 -81 77 76 73 71 69 70 72 -30 26 29 28 27 24 23 23 -21 17 19 18 15 13 9 -91 87 85 82 80 82 80 73 -83 79 79 77 75 74 -86 82 81 81 78 79 -85 81 78 76 76 76 -77 73 73 71 69 66 62 -68 64 62 62 55 -26 22 19 15 13 -10 6 2 1 4 -56 52 51 48 45 41 38 38 -21 17 14 11 7 3 -61 57 53 52 50 43 -23 19 17 10 8 6 -81 77 76 74 68 66 68 -87 83 78 75 75 -42 38 37 35 29 26 25 21 -62 58 55 54 47 40 -70 65 63 62 61 58 56 53 -88 82 81 78 76 75 74 76 -29 24 23 21 20 19 18 18 -26 20 18 16 14 11 10 6 -68 61 59 58 57 55 52 46 -25 19 16 19 18 15 -51 45 43 46 47 -24 18 21 20 19 18 18 -30 23 21 24 20 -72 65 63 65 64 58 -81 74 71 68 68 66 63 -46 41 40 40 37 34 33 36 -51 45 45 42 40 39 39 -47 41 39 39 35 -32 25 24 24 19 -89 82 80 78 74 71 -70 64 61 59 58 54 55 -66 61 59 55 55 -60 54 53 49 46 43 39 -70 63 61 59 55 52 45 -37 30 23 22 20 19 16 13 -70 64 57 55 56 -72 67 64 61 59 57 52 52 -67 62 57 54 53 50 46 -40 34 31 28 21 20 17 11 -52 55 57 60 63 66 63 -10 11 12 13 14 16 16 -84 87 88 90 91 95 -12 14 17 19 20 21 26 -46 49 48 51 54 -16 18 21 20 19 -66 68 71 69 71 72 72 -9 12 14 11 14 18 -79 80 82 80 83 90 -13 14 17 17 20 -4 5 6 6 7 10 9 -76 77 79 79 79 -70 73 73 75 76 78 79 83 -29 31 34 34 37 38 45 -69 71 74 78 80 81 -7 8 11 15 17 14 -43 44 48 49 50 50 -1 3 7 8 12 -40 42 46 47 52 -65 66 67 73 74 -11 14 16 17 23 22 -4 6 7 9 15 16 16 -68 69 70 73 75 81 85 -46 48 55 56 58 64 -34 33 34 35 38 41 42 45 -76 75 78 79 81 84 83 -78 76 78 80 82 85 88 88 -9 6 7 10 14 -4 1 2 3 4 5 8 13 -22 20 23 25 23 25 27 29 -51 50 53 50 52 54 57 55 -79 77 76 77 77 -30 28 31 33 36 35 39 -76 75 76 79 81 80 81 88 -6 3 4 6 9 9 12 14 -31 30 32 32 33 30 -91 89 92 92 94 94 -79 78 81 84 86 86 90 -4 2 5 5 7 9 11 17 -15 13 15 17 21 22 -33 30 31 34 38 35 -49 46 50 51 54 55 55 -65 63 67 70 72 76 -11 9 10 11 15 18 21 28 -6 4 6 8 15 18 -74 71 73 78 81 83 84 82 -62 60 67 68 69 69 -71 70 73 75 76 79 85 89 -11 9 12 14 19 22 24 29 -31 31 33 36 38 40 42 45 -8 8 9 12 14 16 17 15 -57 57 59 61 62 64 64 -29 29 32 35 37 39 42 46 -56 56 57 60 61 62 69 -66 66 67 66 69 -31 31 28 30 28 -20 20 19 20 22 25 25 -2 2 3 5 8 7 11 -5 5 6 9 12 11 14 21 -15 15 16 18 20 22 22 23 -90 90 90 92 95 97 96 -54 54 56 56 59 59 -67 67 68 69 69 70 74 -44 44 44 46 51 -7 7 9 12 16 19 -46 46 47 51 52 51 -22 22 26 27 29 30 30 -76 76 78 79 82 84 88 92 -16 16 17 19 23 25 30 -28 28 31 36 39 42 -13 13 14 20 18 -41 41 46 47 50 50 -79 79 84 87 91 -79 79 80 87 89 90 93 99 -6 10 11 13 16 -80 84 86 89 91 93 91 -24 28 30 31 34 37 37 -49 53 55 57 61 -44 48 51 53 59 -17 21 24 25 26 25 28 -73 77 79 77 79 77 -76 80 79 80 82 84 84 -75 79 80 81 83 82 86 -26 30 33 36 37 35 41 -52 56 59 59 61 62 65 67 -9 13 16 18 18 21 19 -78 82 82 85 87 87 -22 26 28 31 31 35 -48 52 52 55 60 -43 47 48 52 54 56 -24 28 30 32 36 39 38 -46 50 54 56 57 58 61 61 -13 17 20 24 28 -8 12 14 17 19 23 30 -7 11 12 14 21 24 26 28 -25 29 35 37 38 41 39 -34 38 44 46 48 48 -40 44 45 52 53 57 -74 78 79 80 86 93 -72 77 79 80 81 83 -77 83 86 88 90 92 91 -65 70 73 76 79 82 83 83 -31 36 39 42 43 47 -41 47 48 49 50 51 52 59 -35 40 37 38 41 -73 80 79 80 81 80 -77 83 84 87 86 89 92 92 -29 34 36 39 40 39 43 -2 7 9 10 9 14 -81 87 89 89 90 93 -68 75 77 80 80 83 84 83 -76 83 86 86 87 89 89 -56 61 64 67 67 69 71 75 -54 60 61 64 64 71 -50 55 59 62 65 -43 48 51 55 57 56 -51 56 57 60 63 67 69 69 -54 60 63 64 68 71 75 -52 59 63 64 69 -67 72 75 81 84 -6 12 17 20 23 24 25 22 -6 13 14 16 17 24 24 -40 46 49 50 57 60 61 65 -6 11 18 21 23 28 -16 13 12 9 8 11 -68 67 66 65 62 62 -46 45 44 42 40 36 -49 48 47 46 43 42 41 34 -93 92 91 88 90 88 -87 86 87 84 83 85 -35 34 31 28 31 31 -15 13 15 13 9 -63 61 58 56 57 54 49 -21 20 20 19 16 14 13 -54 53 52 52 49 51 -17 15 14 11 11 11 -89 86 83 83 82 81 77 -99 98 97 94 94 88 -38 37 34 30 28 -19 17 16 14 10 13 -46 43 39 37 34 33 30 30 -17 14 13 9 6 5 1 -20 18 14 11 5 -91 90 89 88 87 80 79 78 -62 60 57 56 54 48 47 49 -94 92 90 85 85 -50 49 44 42 38 -49 46 39 37 36 34 32 26 -63 66 63 60 57 55 -58 60 58 56 57 -49 51 50 49 47 47 -50 52 51 50 48 47 43 -9 11 10 8 1 -48 49 52 49 46 44 -46 47 46 43 40 43 40 42 -87 90 89 92 90 90 -98 99 97 96 95 97 96 92 -76 77 79 77 71 -28 29 29 27 25 23 22 -95 98 98 95 92 90 87 89 -64 67 64 62 59 58 58 58 -92 95 92 90 87 87 83 -51 53 52 50 50 44 -81 82 78 77 75 72 69 68 -53 56 55 51 49 51 -26 29 25 24 21 21 -40 41 39 35 32 29 26 22 -22 25 21 19 17 11 -65 68 62 60 57 -75 77 76 70 68 66 64 65 -50 52 46 43 43 -53 55 53 46 43 40 36 -63 64 63 57 56 53 48 -42 42 41 39 36 35 34 31 -70 70 69 66 65 68 -82 82 79 78 78 -47 47 46 44 40 -55 55 53 50 44 -62 62 59 58 61 59 58 -88 88 87 85 87 88 -68 68 66 68 68 -32 32 29 28 29 27 25 21 -24 24 26 24 18 -95 95 93 92 92 89 -72 72 69 69 68 67 64 67 -27 27 24 22 19 19 19 -26 26 23 20 20 19 17 13 -9 9 8 8 6 1 -58 58 57 54 53 51 47 45 -95 95 91 90 92 -13 13 10 6 6 -87 87 85 84 80 76 -81 81 77 74 73 71 66 -94 94 92 91 85 83 82 -33 33 32 30 29 23 20 22 -92 92 91 84 83 83 -16 16 10 8 7 5 1 -60 60 58 55 50 48 43 -43 39 37 36 34 33 32 29 -88 84 81 80 78 75 74 76 -37 33 30 29 26 25 23 23 -76 72 69 68 67 63 -95 91 90 87 82 -85 81 78 81 80 77 -35 31 28 26 27 29 -80 76 78 77 75 75 -35 31 29 31 29 25 -96 92 89 91 90 87 81 -51 47 45 44 44 41 -91 87 86 83 80 79 79 82 -50 46 46 45 44 42 42 -60 56 54 54 50 -86 82 79 79 78 77 70 -63 59 55 54 51 -39 35 33 30 29 25 23 26 -90 86 83 79 77 75 74 74 -70 66 63 62 61 57 53 -63 59 56 52 51 48 45 38 -77 73 67 66 64 62 61 -22 18 15 14 8 5 8 -82 78 76 75 68 66 66 -31 27 22 21 17 -70 66 61 58 57 51 -61 54 52 49 46 45 43 -81 75 72 69 66 65 66 -37 30 29 28 25 24 24 -75 70 67 65 64 60 -59 53 50 47 44 41 40 34 -48 43 45 43 42 -41 34 37 35 38 -52 46 43 41 40 37 39 39 -38 32 35 32 29 27 23 -76 70 73 71 69 66 60 -16 11 9 9 6 5 -20 13 13 10 8 10 -71 66 64 63 61 61 61 -60 55 53 51 51 47 -27 20 20 18 17 10 -83 77 75 73 71 67 65 62 -87 81 79 75 78 -81 75 71 69 66 66 -76 71 70 67 65 61 57 -72 67 64 62 59 56 52 45 -39 32 30 24 23 20 17 15 -94 88 86 80 79 82 -27 20 19 13 10 10 -96 89 82 80 77 73 -34 27 25 20 18 16 11 -46 47 49 50 54 56 59 63 -87 87 90 91 92 91 92 92 -80 81 80 78 75 68 67 67 -29 28 25 23 18 15 13 -29 29 27 24 21 17 -62 64 65 64 66 69 72 72 -18 18 21 24 21 28 -55 57 52 49 45 -76 78 76 73 69 66 66 -77 76 73 70 66 60 -73 77 81 84 86 -64 70 72 75 78 81 81 81 -79 80 87 89 90 91 96 -22 26 29 28 30 36 -76 73 72 70 70 68 66 63 -44 41 42 44 46 52 -47 47 45 44 41 39 38 37 -52 50 48 48 47 47 -33 37 41 42 43 45 45 -31 37 37 39 42 45 46 -36 38 40 43 46 51 -69 62 61 59 58 55 55 -64 66 67 67 69 71 69 -58 58 60 60 63 -50 53 51 52 50 47 43 -76 72 70 69 67 69 -38 33 32 34 33 -20 20 17 17 16 13 7 -49 50 52 53 57 58 -67 66 67 70 72 74 77 80 -54 50 45 43 41 38 35 35 -13 12 13 14 18 -90 86 82 81 79 72 -97 90 89 85 82 82 -70 77 79 81 88 90 92 96 -89 85 82 82 83 -41 41 40 39 39 37 34 -43 41 44 47 46 49 -38 42 47 48 49 -89 90 97 99 98 -20 27 31 32 35 38 38 -41 41 38 37 34 32 32 -23 19 17 16 15 16 16 -93 93 92 91 90 92 -79 75 74 73 69 66 65 61 -67 70 71 72 73 75 78 78 -35 40 41 42 39 38 -87 84 83 81 78 77 76 76 -62 56 55 58 54 -55 53 57 60 63 64 -20 22 19 20 19 19 -14 14 11 14 16 -27 26 27 28 31 30 31 37 -15 9 8 7 6 6 2 -41 38 37 30 29 27 21 -70 75 76 77 80 83 86 86 -20 18 14 13 10 7 3 -47 44 40 38 36 -10 14 15 18 19 20 22 27 -60 60 62 64 66 69 74 76 -13 17 15 17 18 19 20 17 -12 11 13 15 15 16 -97 97 94 91 91 94 -30 32 33 33 36 39 41 45 -46 40 39 36 39 -33 39 41 44 48 50 49 -31 31 29 27 25 18 16 18 -12 12 15 17 19 23 21 -43 42 45 45 46 49 46 -47 49 50 52 53 56 59 63 -59 60 58 58 56 54 53 -15 20 22 25 27 28 34 37 -54 57 58 59 62 68 69 -43 47 49 50 48 -63 67 68 69 71 74 78 -82 85 84 80 77 74 71 67 -85 90 91 94 95 98 97 -85 81 79 80 77 76 -26 20 16 14 13 11 5 -57 59 60 63 62 65 68 72 -21 21 18 12 7 -62 59 57 55 54 51 50 44 -64 66 65 65 60 -12 16 15 17 19 -12 14 14 13 11 8 8 -92 90 89 91 93 95 97 95 -90 88 91 93 95 92 -79 84 87 94 95 96 99 96 -20 23 24 26 29 33 34 41 -48 43 42 41 40 37 -37 37 40 39 36 36 -56 56 57 58 61 60 -68 66 66 65 63 61 58 53 -59 61 60 57 57 -56 49 47 49 47 46 43 36 -21 19 17 16 10 9 7 7 -28 35 38 42 43 50 -83 83 80 77 76 72 69 69 -33 32 36 38 39 40 44 -67 71 72 73 72 74 77 81 -31 36 39 39 41 45 -61 64 68 71 73 70 -64 64 64 67 70 73 76 82 -47 40 39 36 33 31 28 22 -48 51 49 44 42 41 -48 47 48 50 51 51 51 -69 69 73 74 77 79 81 85 -5 9 10 13 15 15 17 21 -71 75 78 82 87 -46 42 39 38 35 36 35 38 -10 12 14 17 18 22 23 23 -75 76 76 78 81 83 85 85 -11 15 16 18 19 23 27 -64 68 75 76 79 82 87 -81 79 76 73 75 75 -21 17 15 10 9 6 4 3 -67 74 76 77 82 -22 26 30 32 35 32 -23 20 17 15 13 11 10 6 -64 63 62 60 55 53 56 -34 34 36 40 42 44 -43 43 42 42 38 -31 28 32 33 36 39 36 -74 71 75 77 79 81 88 -97 90 88 86 79 73 -60 60 61 63 64 68 -46 44 41 44 48 -17 13 14 13 12 9 8 4 -75 69 67 64 59 57 58 -27 21 21 19 16 14 9 -29 29 26 23 21 20 18 11 -57 60 63 66 67 69 71 68 -75 78 75 73 74 71 73 -46 40 33 30 27 24 22 22 -71 73 69 66 63 65 -79 81 80 82 84 81 -79 83 84 85 86 88 89 89 -8 12 17 20 23 27 -78 83 86 89 91 95 99 -39 40 38 35 28 25 24 25 -50 47 50 51 53 59 56 -75 75 74 70 69 67 70 -81 74 73 71 70 66 62 -34 30 27 23 20 17 15 15 -49 52 49 46 43 41 -50 55 56 53 57 -57 57 57 59 60 64 -87 81 80 77 80 78 78 -69 68 71 72 73 74 78 78 -46 40 38 31 29 27 25 -24 23 22 22 19 16 14 16 -22 27 28 31 32 33 -90 90 84 81 80 76 -51 55 58 59 60 63 66 -9 7 14 16 20 -47 51 53 53 55 57 58 -63 59 56 53 50 47 40 -52 45 42 38 35 34 33 -27 24 24 26 32 -13 18 21 22 19 20 23 -21 20 23 25 32 33 35 35 -80 81 82 85 86 86 92 -49 49 51 50 48 46 43 41 -69 63 62 61 57 56 55 57 -8 8 9 11 8 12 -90 86 83 81 84 78 -94 94 91 88 85 81 79 73 -14 17 16 15 12 10 7 3 -70 65 63 63 60 60 -72 72 70 66 63 61 58 54 -72 68 66 63 56 54 50 -56 55 52 51 50 48 44 45 -95 88 88 87 86 83 85 -41 45 47 50 55 58 58 -71 74 77 74 73 70 67 60 -74 74 81 83 85 86 87 91 -22 26 27 25 25 -89 88 85 84 87 89 -86 84 81 82 81 74 -49 42 37 34 30 -83 81 86 89 96 -82 77 79 77 80 -24 29 30 33 36 40 41 -62 69 72 75 77 81 -27 23 20 18 17 14 14 -25 26 21 20 19 12 -18 18 16 15 16 13 12 6 -65 65 62 61 58 52 51 51 -53 53 55 56 59 66 73 -52 55 56 54 56 59 -87 90 88 87 89 -68 64 61 58 55 52 50 -76 77 75 78 77 74 -53 49 47 44 40 -66 62 60 59 55 53 55 -73 69 65 63 60 58 55 52 -10 17 19 26 28 34 -36 36 38 40 42 46 47 47 -29 33 36 36 37 39 36 -6 9 16 19 22 26 -46 40 40 38 36 34 33 -70 70 71 72 73 80 83 83 -66 64 61 60 60 57 53 -38 34 27 26 24 23 25 -70 67 66 69 70 73 73 -15 12 10 7 5 -61 62 65 66 69 71 73 76 -75 76 77 80 82 85 87 90 -83 82 81 78 76 -52 50 48 46 43 42 -34 32 31 30 29 27 -53 55 57 58 61 64 65 68 -23 22 19 18 16 15 -36 35 33 30 29 26 23 21 -43 41 38 35 32 31 28 -96 94 91 89 88 86 84 83 -94 93 92 90 87 85 84 81 -83 86 89 90 93 -42 45 48 51 52 53 -3 4 6 7 10 -83 81 80 78 77 74 71 69 -69 66 63 61 58 -17 16 14 12 9 -74 73 70 68 65 63 -41 44 46 47 48 51 -81 79 78 77 74 -11 14 16 17 18 21 23 -79 82 83 85 86 89 92 95 -88 87 86 83 82 79 76 -28 31 33 36 37 38 40 -55 56 59 60 61 63 65 -57 60 62 64 67 70 73 -58 60 63 66 69 70 73 74 -24 22 21 20 18 -76 79 82 85 87 90 93 -29 27 25 23 22 -31 32 33 35 37 39 40 -14 12 11 8 7 5 4 -80 77 74 71 68 67 66 63 -57 59 60 63 65 66 69 -96 93 92 90 87 85 -76 77 80 82 83 86 -20 23 25 27 30 32 -26 29 32 34 37 38 41 -31 30 29 27 24 -31 34 35 36 37 38 41 -78 77 75 72 71 69 66 -49 47 45 42 40 37 34 -94 93 92 91 88 -81 78 76 75 74 72 71 -7 10 13 16 17 20 23 -63 64 66 67 68 -9 7 5 4 3 -75 73 71 68 66 64 61 -64 67 68 69 71 74 -60 62 64 67 70 71 73 -63 64 67 70 73 75 -95 93 92 89 88 -40 39 38 36 35 -30 28 26 24 23 -26 24 21 20 18 17 15 -90 91 92 93 96 97 -4 5 6 8 10 12 14 -36 33 32 30 28 -67 66 64 62 60 58 56 -52 51 49 48 46 45 -16 17 18 21 23 24 27 28 -26 28 31 33 35 37 39 40 -79 81 82 85 88 -36 39 41 44 46 -43 45 46 48 51 52 53 -49 46 45 43 41 39 -24 27 29 32 34 36 -55 54 52 49 48 -69 72 75 77 80 81 82 -13 12 10 7 6 -9 10 12 15 16 18 20 -76 77 78 80 81 82 84 -68 71 72 73 74 -26 24 23 22 20 18 -38 37 34 33 30 29 -53 52 49 48 47 45 42 -32 30 27 24 22 20 18 -34 35 37 38 41 44 46 -5 6 8 10 13 16 17 19 -40 38 37 34 31 28 25 23 -4 6 7 9 12 15 18 -9 11 13 14 16 19 22 23 -69 67 66 65 63 62 59 57 -81 84 85 87 90 91 94 97 -54 56 59 62 65 67 68 70 -53 55 58 61 64 -65 66 69 71 74 76 77 -93 92 90 88 87 85 83 81 -83 80 77 75 74 -77 76 75 74 73 -90 88 85 84 82 80 77 74 -58 60 61 62 65 -2 5 7 8 9 10 12 -46 45 44 41 40 -85 83 82 80 79 77 75 72 -99 97 95 93 92 89 -67 69 72 75 78 -79 77 76 74 72 -43 45 48 51 54 57 60 -98 95 92 91 90 88 -41 44 47 49 52 55 56 57 -68 66 64 62 61 59 56 55 -66 69 72 74 76 78 80 81 -72 75 76 79 81 84 86 -99 97 94 91 89 -52 55 58 59 61 63 -80 81 84 86 88 91 93 -8 9 10 12 15 17 18 -90 91 93 96 99 -30 31 34 36 38 -90 88 85 82 79 76 74 72 -82 84 87 88 89 92 -12 9 7 6 3 -83 84 87 89 91 94 97 -33 36 39 41 42 45 48 -7 8 11 13 14 15 -48 49 50 51 54 56 -92 89 86 83 80 78 -60 62 63 66 67 70 71 -25 24 21 19 16 13 -29 26 25 23 21 -71 68 67 64 63 -83 85 88 89 90 91 93 95 -2 4 7 10 12 13 -54 53 50 47 45 -8 10 12 13 15 18 19 20 -83 82 81 80 77 76 74 71 -93 90 88 87 85 84 81 79 -76 77 80 81 82 85 86 -42 39 37 36 34 32 29 26 -48 47 46 44 41 39 36 -39 38 37 36 33 32 30 -12 15 17 19 20 21 22 -30 29 28 27 24 22 -37 40 42 43 46 48 50 -35 38 39 42 45 48 50 -55 58 59 60 62 -7 8 11 13 15 16 18 -68 67 66 64 61 60 -77 79 81 83 84 87 88 -60 59 56 54 52 51 50 49 -14 16 17 20 22 25 28 30 -60 63 66 68 69 70 72 -19 16 14 11 9 6 5 3 -57 58 61 64 65 66 68 -44 42 41 38 37 -72 74 75 78 79 82 84 -51 54 56 59 60 -69 67 66 64 62 -33 30 27 25 24 -56 54 53 52 50 48 -76 78 81 84 86 89 90 93 -77 74 71 68 66 64 61 59 -41 39 36 35 32 31 -75 73 71 69 68 67 64 -75 76 78 81 82 83 -78 81 83 86 87 88 91 94 -33 30 27 25 24 21 19 16 -46 47 48 50 51 54 56 59 -76 78 79 82 84 87 -71 73 75 77 78 79 80 -52 54 56 59 61 63 65 -7 10 12 13 15 18 -3 6 8 10 12 13 -78 80 82 84 86 -58 55 53 50 47 45 -88 85 82 79 78 77 74 -8 7 6 5 3 2 -38 36 33 30 29 28 -59 62 63 66 68 70 -83 86 88 89 91 93 96 99 -19 21 23 26 28 31 -14 16 19 22 25 27 -91 90 88 87 86 85 84 83 -5 8 11 14 17 18 20 -87 88 91 92 94 96 97 -4 5 6 8 9 -32 30 27 24 23 20 -56 55 54 52 49 48 -31 30 28 27 24 22 19 -79 82 85 86 88 89 90 91 -92 89 87 84 83 80 -75 72 71 69 67 -54 51 49 46 45 44 41 38 -38 36 35 34 31 -68 66 63 62 59 58 -90 89 87 86 84 81 78 -51 52 54 57 59 60 61 62 -18 19 20 21 23 25 -52 50 47 45 44 -71 73 74 76 79 82 85 -19 21 23 25 26 -47 46 43 41 40 38 36 33 -32 35 37 40 42 43 45 -57 54 52 50 47 46 44 42 -33 35 37 40 43 44 -38 35 33 32 29 26 24 23 -63 61 60 57 56 -90 87 84 83 81 80 79 76 -11 13 14 15 18 19 21 -59 56 53 51 48 47 44 -54 56 57 60 61 63 -26 27 29 31 34 35 38 -64 63 61 59 58 55 54 -17 15 14 12 10 7 -85 86 88 91 94 -23 26 29 30 32 33 36 37 -31 32 33 34 36 38 39 -88 89 92 94 97 -74 72 70 67 64 61 -18 17 14 11 10 8 5 2 -66 63 60 57 54 51 48 -49 52 55 56 58 59 62 -55 52 49 48 47 46 45 -59 57 56 55 54 53 50 -25 26 28 29 31 32 33 -52 50 48 47 46 45 44 41 -48 47 46 44 41 -16 14 13 12 9 -18 19 20 21 24 -34 37 40 43 44 -46 49 51 54 56 -81 79 78 77 75 72 69 68 -26 24 22 19 17 16 13 -19 21 24 26 27 30 -13 14 16 18 19 22 24 26 -41 43 45 46 47 48 -92 89 87 85 84 -34 35 38 39 40 41 44 -96 95 93 90 89 -66 68 69 70 71 72 -82 79 78 77 74 -40 38 37 34 33 31 28 -71 72 74 76 78 80 81 83 -37 36 34 32 31 28 27 25 -40 42 44 47 49 51 52 -84 81 78 77 76 75 -22 23 25 26 29 31 32 35 -35 34 33 31 29 28 25 -34 36 38 41 44 46 47 49 -51 48 46 43 42 41 38 36 -1 2 4 5 7 -70 68 65 64 62 -34 31 30 29 27 26 -35 34 31 29 26 -33 35 38 39 42 45 -65 64 61 59 56 53 -65 63 60 57 55 -38 36 33 32 29 -59 61 64 65 66 -93 92 89 86 84 83 82 -14 13 12 9 7 -63 66 69 70 72 75 76 79 -31 32 33 36 37 39 -37 39 40 42 45 47 -20 22 23 25 26 -55 52 49 46 45 42 -19 21 23 24 27 30 33 -2 4 6 7 9 12 15 16 -76 79 80 82 83 84 87 -49 51 52 53 55 57 -54 55 57 59 61 -3 5 6 9 12 14 15 -95 92 91 88 87 84 83 80 -54 56 57 58 61 62 63 -1 3 5 6 8 10 -76 79 80 82 85 -21 23 24 27 28 31 33 -52 49 46 43 41 40 38 -69 71 74 76 77 -57 55 52 49 48 -22 19 16 14 11 -67 68 70 72 73 74 75 76 -17 14 13 10 7 6 3 2 -76 73 72 71 69 67 66 -70 72 73 75 78 79 -56 53 50 47 44 43 42 39 -72 70 68 66 64 61 -80 81 84 86 87 90 -35 32 29 28 26 25 -30 33 35 36 39 40 41 43 -62 59 57 56 53 -51 48 46 44 43 -32 31 29 28 25 23 21 19 -90 89 87 85 84 81 80 79 -66 64 62 59 56 55 54 53 -70 71 72 73 74 76 79 81 -84 86 88 89 92 94 95 98 -61 60 58 56 54 -79 81 83 86 87 89 92 -23 20 17 16 15 14 11 8 -39 38 37 34 33 32 -14 13 10 8 7 6 -29 31 34 37 38 41 43 -22 24 26 28 29 30 -31 28 27 25 24 -51 50 49 48 46 44 43 -69 70 71 74 75 77 - diff --git a/res/puzzle_3.txt b/res/puzzle_3.txt deleted file mode 100644 index 9cb5570..0000000 --- a/res/puzzle_3.txt +++ /dev/null @@ -1,7 +0,0 @@ -from()]mul(317,745)-+?;what()&{mul(67,323)select()~(+/}what()+when()[who()@))why()mul(41,576)?!*why()}{who()@%;mul(335,137)how(){mul(729,375)?mul(714,984)mul(86,727)[mul(148,442))@,) mul(659,930)why())/@'-select()$don't(){from()/mul(606,455)from()#select()(,when(560,861)from()mul(661,278)@@where(714,248)-) ;how()don't()+#}mul(511,224)[ <,*!,how()[mul(741,103)@ ,-;don't()?mul(405,226)~;mul(690,221)>when();~*][($mul(743,671)$,,!mul(904,48){?{,[<,when()how()mul(214,669){<*<%mul(313,778)<*>%]:~)&mul(328,558)from()why()^:][^)don't()/%/ mul(16,534)where(62,792)^}',do()$ ~&mul(591,671)why()?how()what()mul(158,309):!mul(305,375)+{from()#from()~mul(395,733){$]#,)how()/~who()mul(764,920)+mul(787,366)(&what()>who()~mul(260,940)$why()/,mul(904,953) >$mul(803,943)#@+how()what()mul(97,179)$ )[!:^::&mul(757,133) mul(949,638)/]: /when()mul(533,324)mul(177,653)[&mul(361,108)(,[mul(912,339)[#what()from()why()#don't()mul(130,4)<&what()^when()^-@]!mul(501,376)!(#~when()*'~mul(166,904)how()~mul(229,929)mul(481,574)select(),- {?@how() ?mul(989,487)where()who(),don't()/:@-[mul(398,359)when()what(440,393)}mul(110,756)who()how()!select()%[what()mul(300,194)}don't()-%who()>$^mul(598,480):'how()()#[/~;mul(644,80)%<@(select();mul(254,510)!~]{-!mul(432,50)&@;&from(442,218)mul(128,797)&where()}#mul(210,512)select())mul(22,316)~where()/#mul(228,533)@@?who(),])mul(444,403)why())why(161,374)@:mul(420,83))when()* :>]]%[mul(738,977)/)when()<;do()how()%why()]},}mul(739,424)mul(21,79)(how(964,229)$-mul(886,756)^mul(959]+mul(510,621){/$ %from(535,780)mul(942,849)#;who()select()(mul(884,418)?#}from()}-do()-mul(765,279)!how()~ select()how()mul(230,66)+#>+]}/[why()mul(830,643)]why(),@-+mul(549,381)+-}>)}[,>[mul(384,650)select())+:mul(156,98)?select(265,152)$mul(848,696)(*(}>-what()mul(916,489)<:*~when()why()[>mul(795,164)when():?mul(681,258)#mul(548,602)why()how()({from(791,741)<(]why()@<^,where()(mul(325,852)$from()$~when())mul(354,858)}/[@mul(452,532)mulwhen()&[mul(496,103)mul(670,785)how(776,494)-{&!select()~who()?%>&mul(59,896),mul(323,734)~:-:<,mul(930,720)>{~mul(55,98)how()from()@where()<>where():-;]?>do()>(when()select()&(:'select()-mul(519,249)when()where():*,#what()when()mul(433,688)$'{/&-;^;mul(487,902)?' 'mul(851,22)mul(571,264)[)mul(625,196why(),/%]mul(177,329)when()(what()]select()>%&mul(392,746)?!when(855,314)&-+}[^mul(244,411)~ what()*from()mul(27,419)from() &}mul(783,31)!mul(609,220)>#^!mul(835'*mul(26,372)-mul(968,770)who()why()]%from()}what() >mul(258,240)$mul(767&]mul(255,639)-&why()mul(682,513)][+!@@,{mul(267,914)#'who()+what()do()~)~%];mul(328,10)[$how()}+!<>-mul(286,443,; ;!(how()! do()what()+<(:mul(734,165)how(){:{]#]from(543,898)-mul(311:when()%mul(955,663)&*~>~;{mul(87,123)***mul(273,650)[mul(288,699)how()'& {'%from(){why()mul(677,973)({{>$!mul(962,447)~why()where();mul(193,727)^} '#;))select()mul(332,420)where()who()}%what()?mul(946,222)#)~/where()how()who() mul(784,547) }select()mul(868,939)how()-) when()/mul(766,690)$/(how():mul(289,854){what(){:-from()%{'$mul(616,797);!how()'mul(607,52),mul(634,542)/ ){how()])select(269,907)mul(746,163)])+&& >:where()mul(933,745)<])*select()#;do():+from()/';@:mul(549,673):where()!where(),*[who() *mul(182,300)++&how(14,499)from()[]&mul(674,397)why()from()mul(274,670)/-^/how()%-why()mul(631,257);~}$don't()$where()}#%select()(mul(222,921)select(875,756)+-why()[)+}why())mul(527,536)^*#@*mul(526,226)!mul(509,930)$who()when()/+)when(342,782)~mul(806,222)(],why()where()^mul(528,285)^#?#what()mul(875,506)from()^mul(537,399)/&?{mul(457,240)%^mul(16,257),}%%+?#>mul(780,949)}mul(570,933)when(749,935){mul(708,407)/mul(475,875)mul(124,766)'?where(308,370); '&mul(397,320){>'where()how()mul(558,514)}>#},mul(164who()why():;when()select()(mul(553,336)how()what()]who()why()select()mul(295,32)&from():^?mul(233,116)~]mul(429,202)when()what()select()mul(741,965)*{&#;#$,/how()mul(367,887) -mul(681,506) -^mul(484,363)@:when();where()from()select();mul(186,965)who()from()~who(442,513)who()-&*];mul(116,362)[~where()(where()!/^:mul(733,863):}'when()]^+;mul(75,849)mul(115,784#:@why()%from()'$@mul(592,93)select(773,179){[['>from()}mul(131,959)@who()]mul(394,818)$-(+'^^mul(996,181)select()<> #~*+*mul(53,343) where()when()!mul(954,569)**[don't()+what():%)$-why()#mul(452,447)*{mul(264,795)}how()#when()#from()why()when(745,720)mul(248,687): ^^,<+[when(889,956):mul(937,8)how(235,664)?]?{mul(137,328)?mul(503,926%mul(13,847))mul?why()?select()()mul(460,750)]%;mul(651,280)why()>>,how()when()$? mul(133,236)!<(what()^>'?^mul(748,823)who()where()mul(43,496)select()when()++why()';?mul(875,70)-when(402,701)&)why()'mul(982,841)>^do()>who()where()/]:mul(647,595);select(), ::mul how()where()select()from()&(/+mul(468,107)what()how()#what()>;]mul(957,478)where():?mul>when()%{where()?%mul(592,367)mul,why()mul(72,238)who()?:+<(mul(222,516)%]%#~mul(193,251)when()when())/why()@)@/mul(340,791)&/?who()why(){&,?mul(55,804)']{&%$/mul(316,546)when()who()mul(971,888)[mul(103,609)]*>)<[;~/what()mul(490,677)why(898,282)mul(170,318)*how():>&^)-where()from()#,when()mul(372,78)>?*select()from()!&]why()mul(449,613)'select()!'do()'<*mul(761,836)what(){!(who()why(634,576)mul(802,819)]/+who(){} select()$mul(203,130)<'mul(400,590)'mul(951,874)where()mul(186,662)who()[who():;@;mul(192,643)$'why()[:?don't()&(-select()!;*?mul(517where()#mul(484,952)/&[};<,mul(191,767who()'{:why()how()from()}mul(391,241)]mul(564,815)!@,~mul(327,855)mul(515,532)*([>{:don't()when()% mul(399,207)@->mul(176,348)why()what()mul(517,732)]:,mul(832,279)what()?*-<+>mul(158,912):@!^-!mul(630,685)(/*what()}from()@#!mul(737,751)'/$how()from()mul(952,556)what()~~},:,don't()[(how())^/why()why()when()mul(464,363)@select()? when()where()mul(380,587)mul(935@<;mul(311,283)-,+{>;&;~mul(217,900)from()when()){%@{+<~mul(861,412){mul(649,279)when()!->{mul(53,704)}>mul(124,780)(}^@]from(){where()#mul(323,768)]what():/'':select()mul(42,323)!select(),$mul(833,631)where(920,91));?select()mul(274,3)-]^^*~{/mul(195,31)~}#select()+[ why()mul(437,871)how()#where()$? what(265,149)[mul(53,447)@<-mul(182,3)}>#!/usr/bin/perlmul(836,288) -&/where(234,114)mul(230,255)(;{~*where()/+from())do()how(174,635)where()(>~(mul(547,383)how()(]( mul(394#when(217,999)[mul(520,655)@/} mul(883,280)(from()+#mul(993,6)@%,@}'*-mul(469,993)*})mul(329,69);<}}mul(94,7):{'mul(299,57)->where()who()><<@}mul(192,320);-< (mul(348,932)(+mul(565,629)/how(792,174)mul(994,456),&from()when()from()from()$select(){+mul(518,910)where()$mul(42,710)mul(447,192)what(); &mul(535,494)@&mul(39,121~where()>]@who()$mul(238,165)}{&how():)mul(293,498)@^ why(231,662)mul(91,213))@who()*when()mul(547,308):~~^how(179,495)(where()mul(334,412),!}}?,*what()mul(704,941)}:]^mul(215,465){~&!*@{where(719,643):[mul(653,594)who(){;-{}mul(307,823)^(?{><}+@mul^<]?,who()?mul(989,866)}when(881,287){)-who()::who()mul(642,431)@-mul(817,550)from()>'(when();!%&mul(315,78)%select()mulwhen()~(why()]mul(636,929)when()%->mul(53,720'](;!$mul(931,769)(---+[*>don't()+&when(88,906)*$where(),@mul(223,251)#]'<+,%mul(146,115)how()]mul(136,688),mul(222,174)#]mul(75,636)^who()mul(76,992]mul(280,202)]select()!>,when()when()#mul(68,678),:$$select()?why(302,488)>#what()mul(923,779)who())]>]mul(525,656)'%#mul(110,925)from()]$?>why()what()mul(485,123)?where()'!(@)/?%mul(62,61)#who()don't()'from()who()mul(863,433)])what()<{'[>{where()mul(955,358)+select()what()*from()from()how()mul(674,255)how():who()/[when()+mul(672,815)/{}mul(814,989)mul(522,617)][why();mul(938,866)?'mul(721,230),!how() %$^{^'mul(89,252)@how()!--what()@what()mul(66,916,;select()@from()>[mul(908,102)$how()[how()}/:mul(352,260):?where()how(418,410)<@*~why(){mul(288,873)^'}${+{when()select()mul(577,817);!<+)%#mul(398,599)?mul(410,933)![;~[(mul(372,736)-{^who(284,999);>$don't()~where()mul(946,342)',* >when()'from()~don't()>mul(48,678),-how()where()mul(521,176)*]mul(653,286)[what()';mul(527,517) :'%do()'how()when()why(638,246)~*&'mul(817,515)when():)^&;mul(902,760)when()who()+from() !&)/;mul(490,93)when()mul(999,859)?'mul(23,41) !where():>--']mul(529^who(824,944))/where(){mul(730,713)}~&**where()mul(783,314)when()![%@mul(192,618)mul(639,668)+from())&who()%*~ 'don't()*$from()-!when()]from()mul(176,706)< -#mul(985,33)$/,']mul(166,740)mul$)>!%]^-[mul(741,253),select()*mul(994,973){+$%%what(970,247)%#mul(569,793),where()$][-?&#:,mul(795,367)from()/~)mul(184,867)}where()when()^(mul(11,847)&mul(252,382)&how()what()*where()mul(42,377))select(451,494):^}*mul(519,853(]mul(645,935)[*,]-&]select()mul(205,327) ]),*)mul(411,698);^[[who(212,491)& -,mul(83,917):how()select()%((+&@mul(86,812)!%how()mul(555,734)(!#select()*'where()from()how()mul(815,589);~-^where()-select()mul(981,251)why()@what()]@*do(){what(874,233)mul(74<)'%[ )mul(461,683);]why()who()(when()*%-{mul(927,403)@/@~where(584,953)--mul(766,900)select()@['+:{)when()mul(919,825)mul(762,132),>%~from(364,888){who() )mul(783,336)where()~$?; ?!don't()mul(275,278)}what()mul(167,505)*^',;^from()mul(692,244)#'^>mul(835,721)!~what()',@mul(447,777){[from(133,514)what()mul(642,217)'(from()@/'how()<^{mul(831,368)@! what()why(434,98)@ don't() who()$]mul(40,963)mul(130,643))what()/select()mul(211,425)${mul(443,261)select()-<^ select()]where()!don't()}#!,where()how()mul(862,985) ,^!how()@don't()!:(what()mul(981,127)~'from()-mul(871,89) :]when()mul(467,236)mul(606,18)+!$:(mul(753<]who(){[how()from()#mul(986,891)#:when()mul(519,399)who()))#*mul(545,827)mul(638,830){select()mul(466,624) :)when() #mul(254,927)&what()where()why()}}#mul(827,465)};]what()>why()mul(242,606):';-/mul(404,75)mul(221,314)who()@who()*[select()>%mul(414,100)!what();why()~what():$ why()mul(315,402)]don't()!where()},from()#how():mul(286,647)+what()+why()%*!^when()-mul(902,822)when()>why()mul(7,343)select()where();},>&why()?&mul(564,706)()!*how(),why()>{mul(369,110)>,#mul(663,681*~@,@how()$mul(340,519)&)when()from()mul(590,642)*(/>'%$'where())mul(992,803)how()when()mul(863,400)@~from()>mul(708,294)>?@what())#$&mul(235,189)/~%-+)+&!~don't()>where()when())?mul(289,183)+$select()how()mul(597,749)why()mul(891,949)?mul(114,531) %+/,$from(493,501)-&^mul(591,30)}<@<[?;mul(91,804) -^%mul(449,407))mul(731,490)#+)(why()?:when()mul(666,844)mul* select()who()mul(930,953)+~@^-mul(739,539)@who()]?& when() mul(989,203)(:)?];where()$mul(862,477)mul(861,661)%~%~/!mul(224,714)[ mul(737,853,^from() mul(212,888)>mul(185,546);#'}%why(292,59)mul(428,503)where()#>from()>;mul(47,787)/,select()<;>?]where()mul(781,376){select()-}>mul(193,943)how(),how()-)from()$+-mul^^%#$from()>how()*why()%mul(760,582)mul(702,579)+:mul(640,791)what(47,178) &!^who()how()mul(649,839)/!^/why()mul(590,380)select()why()< >where()< mul(59,685)<+'when()#/select()!:mul(926,631)who()>how()}?}how()mul(766,724)*+]don't()/ >,~{who()[)mul(562,645)from()select()~where()why():mul(921,271)^where()where())mul(5,76)+;]select()+^>select()(^mul(327,476)-?<[who(665,286)where()mul(17,787)$/where()who()mul(797,991)*@when()]mul(288,945)!;%select()select(221,67)?where()(select()mul(103,613)>*$:#(<#mul(897,461),++'{:^mul(399,45)/[[$)what()?'mul(884,145)-<@ mul(907,419)$how()!mul(746,659)*%>why()}!do()-*why()where()mul(836,181@&>/@/)>#!;mul(511,857)what()^when(839,625)}why(642,188)mul(871,977)where()%where()select()#((when();,mul(996,95)<-from()}+mul(489,882)how()-]]&select()%~@select()mul(526,213)+where(){mul(196,64)>:#who()*(^why()(where()mul(305,841)^~&why(),@ )mul(33,152)%:+mul(276,813)?!how()-where()(>mul(166,466)mul(120,970)){+, #how()don't()<(select()/$from()!?mul(528,858),%%when()+#mul(582,880)[*how()what()-mul(880,694)why()-)how()mul(765,222)''how()'mul(568,629)'%mul(995,665)? ,};'[+mul(613,221)*)mul(90,933)how(){mul(873,519)#+how():*}#?^mul(568,189))mul(64,852)}from(101,629)!where()mul(883,789)mul(787,121)(who()'from()mul(904,116)(];[,?^mul(58,874)mul(825,942)-mul(966,765)mul(288,95)select()?where()%mul(362,992)]select()how()/select(){mul(731,806)&how(305,337)who()]when()}{why()where()mul(761,298)who()+{@;^?mul(261,9)who()mul(911,882)<;)who()/ mul(627,335)<+~-mul(975,402)what()]mul(952,216) why(),;:@when()how()mul(592,925)(!mul(12,402) mul(487,955)select():!~+>:who()@mul(777,428)^+what(385,392)'(:select()<'mul(492,807)@,mul(613,475): mul(787,127)&!,mul(289,109)?)*mul(863,691)!-/@$!mul(357,967)#:?' {?what()mul(824,697){&from()+how()mul(600,525)@mul(783,413):&*$>select()&mul(192,535)?select()who()when()@ - diff --git a/src/day1.rs b/src/day1.rs index bd305c4..fac5b79 100644 --- a/src/day1.rs +++ b/src/day1.rs @@ -1,6 +1,7 @@ pub fn day1() { - let puzzle_input = std::fs::read_to_string("res/puzzle_1.txt").unwrap(); - let (mut left, mut right): (Vec, Vec) = puzzle_input + let input = crate::input(1); + + let (mut left, mut right): (Vec, Vec) = input .lines() .filter(|line| !line.is_empty()) .map(|line| { diff --git a/src/day2.rs b/src/day2.rs index 3eb7633..cb7cf1c 100644 --- a/src/day2.rs +++ b/src/day2.rs @@ -1,9 +1,9 @@ const DAMPENING: bool = true; pub fn day2() { - let puzzle_input = std::fs::read_to_string("res/puzzle_2.txt").unwrap(); + let input = crate::input(2); - let lines: Vec> = puzzle_input + let lines: Vec> = input .lines() .filter(|line| !line.is_empty()) .map(|line| { diff --git a/src/day3.rs b/src/day3.rs index f60e70b..ed26928 100644 --- a/src/day3.rs +++ b/src/day3.rs @@ -1,14 +1,13 @@ -use std::fs; use regex::Regex; const READ_ALL: bool = false; pub fn day3() { - let input_text = fs::read_to_string("res/puzzle_3.txt").unwrap(); + let input = crate::input(3); let mut total: u64 = 0; let mut enabled = true; - for statement in Regex::new(r"(?:mul\((?\d{1,3}),(?\d{1,3})\))|(?do\(\))|(?don't\(\))").unwrap().captures_iter(&input_text) { + for statement in Regex::new(r"(?:mul\((?\d{1,3}),(?\d{1,3})\))|(?do\(\))|(?don't\(\))").unwrap().captures_iter(&input) { if statement.name("do").is_some() { enabled = true; } else if statement.name("dont").is_some() { diff --git a/src/day4.rs b/src/day4.rs new file mode 100644 index 0000000..4b8e1f7 --- /dev/null +++ b/src/day4.rs @@ -0,0 +1,53 @@ +const DIRECTIONS: [(i64, i64); 8] = [ + (1, 0), + (-1, 0), + (0, 1), + (0, -1), + (1, 1), + (-1, -1), + (1, -1), + (-1, 1), +]; + +pub fn day4() { + let input = crate::input(4); + let grid: Vec> = input.lines().map(|line| line.chars().collect()).collect(); + + let mut total: usize = 0; + for y in 0..grid.len() { + for x in 0..grid[y].len() { + total += DIRECTIONS + .iter() + .filter(|(dx, dy)| check_word("XMAS", &grid, x, y, *dx, *dy)) + .count(); + } + } + + println!("Total: {}", total); + + let mut total_crossed: usize = 0; + for y in 1..(grid.len() - 1) { + for x in 1..(grid[y].len() - 1) { + let a = check_word("MAS", &grid, x - 1, y - 1, 1, 1) + || check_word("MAS", &grid, x + 1, y + 1, -1, -1); + let b = check_word("MAS", &grid, x - 1, y + 1, 1, -1) + || check_word("MAS", &grid, x + 1, y - 1, -1, 1); + if a && b { + total_crossed += 1; + } + } + } + + println!("Total Crossed: {}", total_crossed); +} + +fn check_word(word: &str, grid: &Vec>, x: usize, y: usize, dx: i64, dy: i64) -> bool { + for d in 0..word.len() { + let a = (x as i64 + (d as i64 * dx)) as usize; + let b = (y as i64 + (d as i64 * dy)) as usize; + if grid.get(b).map(|it| it.get(a).copied()) != Some(word.chars().nth(d)) { + return false; + } + } + true +} diff --git a/src/main.rs b/src/main.rs index 6b616dc..c5d3d2c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,7 +1,21 @@ mod day1; mod day2; mod day3; +mod day4; fn main() { - day3::day3(); + day4::day4(); +} + +pub fn input(day: u8) -> String { + dotenvy::dotenv().ok(); + let token = std::env::var("AOC_TOKEN").expect("AOC_TOKEN must be set in .env file"); + + let client = reqwest::blocking::Client::new(); + client.get(format!("https://adventofcode.com/2024/day/{}/input", day)) + .header("cookie", format!("session={}", token)) + .send() + .expect("Failed to get input") + .text() + .expect("Failed to read response text") }