diff --git a/Cargo.lock b/Cargo.lock index 8f183dc..76b3828 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,28 +2,11 @@ # 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]] @@ -35,715 +18,12 @@ 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" @@ -772,737 +52,3 @@ 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 b7be0c2..3d2453e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,6 +4,4 @@ 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 new file mode 100644 index 0000000..bca7012 --- /dev/null +++ b/res/puzzle_1.txt @@ -0,0 +1,1001 @@ +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 new file mode 100644 index 0000000..18bf5b9 --- /dev/null +++ b/res/puzzle_2.txt @@ -0,0 +1,1001 @@ +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 new file mode 100644 index 0000000..9cb5570 --- /dev/null +++ b/res/puzzle_3.txt @@ -0,0 +1,7 @@ +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 fac5b79..bd305c4 100644 --- a/src/day1.rs +++ b/src/day1.rs @@ -1,7 +1,6 @@ pub fn day1() { - let input = crate::input(1); - - let (mut left, mut right): (Vec, Vec) = input + let puzzle_input = std::fs::read_to_string("res/puzzle_1.txt").unwrap(); + let (mut left, mut right): (Vec, Vec) = puzzle_input .lines() .filter(|line| !line.is_empty()) .map(|line| { diff --git a/src/day2.rs b/src/day2.rs index cb7cf1c..3eb7633 100644 --- a/src/day2.rs +++ b/src/day2.rs @@ -1,9 +1,9 @@ const DAMPENING: bool = true; pub fn day2() { - let input = crate::input(2); + let puzzle_input = std::fs::read_to_string("res/puzzle_2.txt").unwrap(); - let lines: Vec> = input + let lines: Vec> = puzzle_input .lines() .filter(|line| !line.is_empty()) .map(|line| { diff --git a/src/day3.rs b/src/day3.rs index ed26928..f60e70b 100644 --- a/src/day3.rs +++ b/src/day3.rs @@ -1,13 +1,14 @@ +use std::fs; use regex::Regex; const READ_ALL: bool = false; pub fn day3() { - let input = crate::input(3); + let input_text = fs::read_to_string("res/puzzle_3.txt").unwrap(); 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) { + for statement in Regex::new(r"(?:mul\((?\d{1,3}),(?\d{1,3})\))|(?do\(\))|(?don't\(\))").unwrap().captures_iter(&input_text) { 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 deleted file mode 100644 index 4b8e1f7..0000000 --- a/src/day4.rs +++ /dev/null @@ -1,53 +0,0 @@ -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/day5.rs b/src/day5.rs deleted file mode 100644 index 680f7e0..0000000 --- a/src/day5.rs +++ /dev/null @@ -1,47 +0,0 @@ -use std::{cmp::Ordering, collections::HashMap}; - -pub fn day5() { - let full_input = crate::input(5); - let input_parts: Vec<&str> = full_input.split("\n\n").collect(); - let order_rules: Vec> = input_parts[0] - .lines() - .filter(|line| !line.is_empty()) - .map(|line| line.split("|").map(|x| x.parse::().unwrap()).collect()) - .collect(); - let page_sets: Vec> = input_parts[1] - .lines() - .filter(|line| !line.is_empty()) - .map(|line| line.split(",").map(|x| x.parse::().unwrap()).collect()) - .collect(); - - let mut order_map: HashMap> = HashMap::new(); - for rule in order_rules.iter() { - let entry = order_map.entry(rule[0]).or_insert(Vec::new()); - entry.push(rule[1]); - } - - let sort = |a: &u64, b: &u64| { - if order_map.get(&a).unwrap_or(&vec![]).contains(&b) { - Ordering::Less - } else if order_map.get(&b).unwrap_or(&vec![]).contains(&a) { - Ordering::Greater - } else { - Ordering::Equal - } - }; - let is_sorted = |l: &Vec| { - l.windows(2) - .all(|w| (sort)(&w[0], &w[1]) != Ordering::Greater) - }; - - let (correct, mut incorrect): (Vec>, Vec>) = - page_sets.into_iter().partition(is_sorted); - - incorrect.iter_mut().for_each(|set| set.sort_by(sort)); - - let sum_correct: u64 = correct.iter().map(|set| set[set.len() / 2]).sum(); - let sum_fixed: u64 = incorrect.iter().map(|set| set[set.len() / 2]).sum(); - - println!("Sum of Correct Middle Pages: {}", sum_correct); - println!("Sum of Fixed Middle Pages: {}", sum_fixed); -} diff --git a/src/main.rs b/src/main.rs index 434db46..6b616dc 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,22 +1,7 @@ mod day1; mod day2; mod day3; -mod day4; -mod day5; fn main() { - day5::day5(); -} - -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") + day3::day3(); }