Compare commits
No commits in common. "190fc928426384117ea7444da78dcbbab7226808" and "512b05f62453453194dbf0e7c40730cc337e85cb" have entirely different histories.
190fc92842
...
512b05f624
465
21/Cargo.lock
generated
465
21/Cargo.lock
generated
@ -1,465 +0,0 @@
|
|||||||
# This file is automatically @generated by Cargo.
|
|
||||||
# It is not intended for manual editing.
|
|
||||||
version = 3
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "approx"
|
|
||||||
version = "0.5.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6"
|
|
||||||
dependencies = [
|
|
||||||
"num-traits",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "autocfg"
|
|
||||||
version = "1.1.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "bytemuck"
|
|
||||||
version = "1.14.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "cfg-if"
|
|
||||||
version = "1.0.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "console"
|
|
||||||
version = "0.15.7"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8"
|
|
||||||
dependencies = [
|
|
||||||
"encode_unicode",
|
|
||||||
"lazy_static",
|
|
||||||
"libc",
|
|
||||||
"unicode-width",
|
|
||||||
"windows-sys",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "crossbeam-deque"
|
|
||||||
version = "0.8.4"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "fca89a0e215bab21874660c67903c5f143333cab1da83d041c7ded6053774751"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if",
|
|
||||||
"crossbeam-epoch",
|
|
||||||
"crossbeam-utils",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "crossbeam-epoch"
|
|
||||||
version = "0.9.16"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "2d2fe95351b870527a5d09bf563ed3c97c0cffb87cf1c78a591bf48bb218d9aa"
|
|
||||||
dependencies = [
|
|
||||||
"autocfg",
|
|
||||||
"cfg-if",
|
|
||||||
"crossbeam-utils",
|
|
||||||
"memoffset",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "crossbeam-utils"
|
|
||||||
version = "0.8.17"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "c06d96137f14f244c37f989d9fff8f95e6c18b918e71f36638f8c49112e4c78f"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "day21"
|
|
||||||
version = "0.1.0"
|
|
||||||
dependencies = [
|
|
||||||
"indicatif",
|
|
||||||
"polyfit-rs",
|
|
||||||
"primes",
|
|
||||||
"rayon",
|
|
||||||
"test-case",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "either"
|
|
||||||
version = "1.9.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "encode_unicode"
|
|
||||||
version = "0.3.6"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "indicatif"
|
|
||||||
version = "0.17.7"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "fb28741c9db9a713d93deb3bb9515c20788cef5815265bee4980e87bde7e0f25"
|
|
||||||
dependencies = [
|
|
||||||
"console",
|
|
||||||
"instant",
|
|
||||||
"number_prefix",
|
|
||||||
"portable-atomic",
|
|
||||||
"unicode-width",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "instant"
|
|
||||||
version = "0.1.12"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "lazy_static"
|
|
||||||
version = "1.4.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "libc"
|
|
||||||
version = "0.2.151"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "matrixmultiply"
|
|
||||||
version = "0.3.8"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "7574c1cf36da4798ab73da5b215bbf444f50718207754cb522201d78d1cd0ff2"
|
|
||||||
dependencies = [
|
|
||||||
"autocfg",
|
|
||||||
"rawpointer",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "memoffset"
|
|
||||||
version = "0.9.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
|
|
||||||
dependencies = [
|
|
||||||
"autocfg",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "nalgebra"
|
|
||||||
version = "0.31.4"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "20bd243ab3dbb395b39ee730402d2e5405e448c75133ec49cc977762c4cba3d1"
|
|
||||||
dependencies = [
|
|
||||||
"approx",
|
|
||||||
"matrixmultiply",
|
|
||||||
"nalgebra-macros",
|
|
||||||
"num-complex",
|
|
||||||
"num-rational",
|
|
||||||
"num-traits",
|
|
||||||
"simba",
|
|
||||||
"typenum",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "nalgebra-macros"
|
|
||||||
version = "0.1.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "01fcc0b8149b4632adc89ac3b7b31a12fb6099a0317a4eb2ebff574ef7de7218"
|
|
||||||
dependencies = [
|
|
||||||
"proc-macro2",
|
|
||||||
"quote",
|
|
||||||
"syn 1.0.109",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "num-complex"
|
|
||||||
version = "0.4.4"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214"
|
|
||||||
dependencies = [
|
|
||||||
"num-traits",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "num-integer"
|
|
||||||
version = "0.1.45"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
|
|
||||||
dependencies = [
|
|
||||||
"autocfg",
|
|
||||||
"num-traits",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "num-rational"
|
|
||||||
version = "0.4.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0"
|
|
||||||
dependencies = [
|
|
||||||
"autocfg",
|
|
||||||
"num-integer",
|
|
||||||
"num-traits",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "num-traits"
|
|
||||||
version = "0.2.17"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c"
|
|
||||||
dependencies = [
|
|
||||||
"autocfg",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "number_prefix"
|
|
||||||
version = "0.4.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "paste"
|
|
||||||
version = "1.0.14"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "polyfit-rs"
|
|
||||||
version = "0.2.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "ab98d9704c7300e37472a6790a447eaf501d664a1889737faa53c26790d2b697"
|
|
||||||
dependencies = [
|
|
||||||
"nalgebra",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "portable-atomic"
|
|
||||||
version = "1.6.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "primes"
|
|
||||||
version = "0.3.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "68a61082d8bceecd71a3870e9162002bb75f7ba9c7aa8b76227e887782fef9c8"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "proc-macro2"
|
|
||||||
version = "1.0.70"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b"
|
|
||||||
dependencies = [
|
|
||||||
"unicode-ident",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "quote"
|
|
||||||
version = "1.0.33"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
|
|
||||||
dependencies = [
|
|
||||||
"proc-macro2",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "rawpointer"
|
|
||||||
version = "0.2.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "rayon"
|
|
||||||
version = "1.8.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1"
|
|
||||||
dependencies = [
|
|
||||||
"either",
|
|
||||||
"rayon-core",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "rayon-core"
|
|
||||||
version = "1.12.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed"
|
|
||||||
dependencies = [
|
|
||||||
"crossbeam-deque",
|
|
||||||
"crossbeam-utils",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "safe_arch"
|
|
||||||
version = "0.7.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "f398075ce1e6a179b46f51bd88d0598b92b00d3551f1a2d4ac49e771b56ac354"
|
|
||||||
dependencies = [
|
|
||||||
"bytemuck",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "simba"
|
|
||||||
version = "0.7.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "2f3fd720c48c53cace224ae62bef1bbff363a70c68c4802a78b5cc6159618176"
|
|
||||||
dependencies = [
|
|
||||||
"approx",
|
|
||||||
"num-complex",
|
|
||||||
"num-traits",
|
|
||||||
"paste",
|
|
||||||
"wide",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "syn"
|
|
||||||
version = "1.0.109"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
|
|
||||||
dependencies = [
|
|
||||||
"proc-macro2",
|
|
||||||
"quote",
|
|
||||||
"unicode-ident",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "syn"
|
|
||||||
version = "2.0.42"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "5b7d0a2c048d661a1a59fcd7355baa232f7ed34e0ee4df2eef3c1c1c0d3852d8"
|
|
||||||
dependencies = [
|
|
||||||
"proc-macro2",
|
|
||||||
"quote",
|
|
||||||
"unicode-ident",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "test-case"
|
|
||||||
version = "3.3.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "eb2550dd13afcd286853192af8601920d959b14c401fcece38071d53bf0768a8"
|
|
||||||
dependencies = [
|
|
||||||
"test-case-macros",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "test-case-core"
|
|
||||||
version = "3.3.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "adcb7fd841cd518e279be3d5a3eb0636409487998a4aff22f3de87b81e88384f"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if",
|
|
||||||
"proc-macro2",
|
|
||||||
"quote",
|
|
||||||
"syn 2.0.42",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "test-case-macros"
|
|
||||||
version = "3.3.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb"
|
|
||||||
dependencies = [
|
|
||||||
"proc-macro2",
|
|
||||||
"quote",
|
|
||||||
"syn 2.0.42",
|
|
||||||
"test-case-core",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "typenum"
|
|
||||||
version = "1.17.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "unicode-ident"
|
|
||||||
version = "1.0.12"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "unicode-width"
|
|
||||||
version = "0.1.11"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "wide"
|
|
||||||
version = "0.7.13"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "c68938b57b33da363195412cfc5fc37c9ed49aa9cfe2156fde64b8d2c9498242"
|
|
||||||
dependencies = [
|
|
||||||
"bytemuck",
|
|
||||||
"safe_arch",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "windows-sys"
|
|
||||||
version = "0.45.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
|
|
||||||
dependencies = [
|
|
||||||
"windows-targets",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "windows-targets"
|
|
||||||
version = "0.42.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
|
|
||||||
dependencies = [
|
|
||||||
"windows_aarch64_gnullvm",
|
|
||||||
"windows_aarch64_msvc",
|
|
||||||
"windows_i686_gnu",
|
|
||||||
"windows_i686_msvc",
|
|
||||||
"windows_x86_64_gnu",
|
|
||||||
"windows_x86_64_gnullvm",
|
|
||||||
"windows_x86_64_msvc",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "windows_aarch64_gnullvm"
|
|
||||||
version = "0.42.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "windows_aarch64_msvc"
|
|
||||||
version = "0.42.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "windows_i686_gnu"
|
|
||||||
version = "0.42.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "windows_i686_msvc"
|
|
||||||
version = "0.42.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "windows_x86_64_gnu"
|
|
||||||
version = "0.42.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "windows_x86_64_gnullvm"
|
|
||||||
version = "0.42.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "windows_x86_64_msvc"
|
|
||||||
version = "0.42.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
|
|
@ -1,13 +0,0 @@
|
|||||||
[package]
|
|
||||||
name = "day21"
|
|
||||||
version = "0.1.0"
|
|
||||||
edition = "2021"
|
|
||||||
|
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
||||||
|
|
||||||
[dependencies]
|
|
||||||
indicatif = "0.17.7"
|
|
||||||
polyfit-rs = "0.2.1"
|
|
||||||
primes = "0.3.0"
|
|
||||||
rayon = "1.8.0"
|
|
||||||
test-case = "3.3.1"
|
|
131
21/input
131
21/input
@ -1,131 +0,0 @@
|
|||||||
...................................................................................................................................
|
|
||||||
..............#...#........#...............#.#.......#....##...........#.#..#......#.....#.........#..##...........................
|
|
||||||
.#..##..##..#......#.#.#...##......###...##......#.#..#...................#.....#..........#..#................#...#..........#....
|
|
||||||
.....................#..#.......#.....##.........#.......................................#........#....#.#..........#.#......#.#...
|
|
||||||
......##...#.....#.......#...#..###..........#..........#......................#........#.............#.....#........#....#........
|
|
||||||
.................##.................#...#.........#................................#........#...........#............#........#....
|
|
||||||
..............#.#....#........##.....##..........#.............##.............#...#......#..##..........#.........#.....#...#..#...
|
|
||||||
..#....#.......#...##..#......#.........#.#..#....#.#..............#........#...#...#...............#.#.....#..#..##......#...#....
|
|
||||||
...#......##...##..#...#..........#...#..........#..............#...#..........#..#..#..#........#.#.#.#.#...........###...........
|
|
||||||
.#.#.#...#.#...##............................................#......................#...#......#......##.#.........................
|
|
||||||
.##.#.........#...#..................##...........#............#..................###...#...........#.................#....#.......
|
|
||||||
.....................#...#.#................#................#.#........................#...#...##....##....#.#...#.........#...#..
|
|
||||||
...#.......#...#.........................#.#..................#........##..........................#......##....##............#....
|
|
||||||
......................#.....................#...............#.......#.#...................#...............#...#........#.##......#.
|
|
||||||
............................#..........................#........#....#.##..#.......#.##..#...#.#..#...............#.#..#....#......
|
|
||||||
.......................................................#.#..#.#....#......................#............#....#..#.......#.........#.
|
|
||||||
.....##........#...............#.......#...............#.#..........##..#...................#................#..#...#.#....#...###.
|
|
||||||
....#.....................##................#.......#.......#...#.#...#...............#................#...............##..........
|
|
||||||
....#........#..#.......#.#.#........................#.#...........#.......#..#.........#....#.......#........#.#.#................
|
|
||||||
......###.....#..#...........#.....#..#..#........#......#.#........###.....##............#..#...........#.........................
|
|
||||||
.....#...........#...................#..#..........#..#...###.#.........#.##...............#..##..........#.........#..............
|
|
||||||
.#.........#....#............#.##..........................##.....#........#....#.............#.......#...#..............##.#......
|
|
||||||
.#..#...#.......#...#.......##.......#.#.............................#...#...#.#...........#...#.................#.........#.#.#...
|
|
||||||
...#....................#.....##..............#.................#.................#............#......#....#.......#.........#.....
|
|
||||||
.......#...#.............#.##...#.#...................#.....#..#........#................................#.............#..#...##...
|
|
||||||
...#.###..............#....#........................#......#...#.........#......#.#....................#........#...#...#.......#..
|
|
||||||
............#.#...#...........................#....###.###...#........#..#........#...................##.....###......#........#...
|
|
||||||
.....#...#................#.##..##..................#....#.........#............##...................##................#.....#.....
|
|
||||||
.#....#..............##...#..................#......#..........##.#....#......##.#...............#....##..............#....#.......
|
|
||||||
....#.#.##...........##.....#...........#.........#...#........#..#.......#......#................#.#...#....#...#.................
|
|
||||||
.......#...#...#...#..#.......#..........#..................#..#........#..#.#.....#.#.....................##......................
|
|
||||||
.....##.........#.......##...#.............#.##.#.#...#.##.#...#......#...#....#.......#..#.........#...........#.##.###.#.....#...
|
|
||||||
...................#.#.......................#.....#.#......#.....##...#.#....#..#..........#...........#..##....#...#.......#.#...
|
|
||||||
.....#..#..#.........#...#.#.........#...#.#...##...#......##........#...............#.......#................#.....#...#.#........
|
|
||||||
........#.....###.....................#.........#.........#.........#....##............#..##.............#.........#..#.......#....
|
|
||||||
.#.........#....##..##.................#...#................................#...#.....#.........#.......#............#....#......#.
|
|
||||||
..#.........#.......#..................#..#.#...#........#.#.......#...##.#........#..........#.#..........#..#.....#.........#....
|
|
||||||
..#...............#...................##.#.......#...#..........#....................##.........#.................#..#......##..#..
|
|
||||||
.#........#.......#............##...........##........#.......................#................#....................#...###......#.
|
|
||||||
........###..........#..............#.............#..#.#.#............##...............#........#...#........#...................#.
|
|
||||||
...#............................#...##.##........#......#..#...................#.#.....#...#.##...............#........#...#.......
|
|
||||||
..#...##....................#.....##......#.......#..........#......#.........#...#..............#..............#..................
|
|
||||||
.....#..#....................#....###.....#..#.............#...#....#................#.....#.....................#........#........
|
|
||||||
.....#.#...#.....#..............##............#....##.#....#.#........##...........#....#.........................#....#......##...
|
|
||||||
....#..#.....##...........#.#.#.#............#....#.....#.........#........................##.......#.#..............##...#........
|
|
||||||
...............#..............#................................#....#........#.......#.......##......#.#............#......#....#..
|
|
||||||
.#......#....##........#.............#..#.#.............#...#..#.........#.........#................#..................#...........
|
|
||||||
.........#..............#....#......#.....##......#............#....#.........#....#...................#....#.........#......#..#..
|
|
||||||
..............................#....#.#........#.#.....#..#.................#....#...#..........#............##.......#.#.#....#....
|
|
||||||
.#..................#....#..#.......#.##..............#...#.......#................#...............................................
|
|
||||||
.#..##.........................#.....###......#....#......#.....#............#.#......##......##......##....#..........##.....#....
|
|
||||||
..........................##.#.....#..........................................#.#..#....#..#..................#...........#........
|
|
||||||
..##.....#.......#....#.........#..........#....................#.........#........###........................#..........#.........
|
|
||||||
.#.#...............#..........#.......#.....#....##.#..#.##...............#...#...#.#......#.......#.......#.#.............#....##.
|
|
||||||
..................#...............##.........##..#........#..#..........#.....................#............................#.......
|
|
||||||
.....#................#...##.......##.........#.....#.#....#.#........#...#..#....#..............#..#....#....#....#...............
|
|
||||||
..##.#........#...............#.#..#...................##...#......#.#...#..#.....##.................##...#.#...................#..
|
|
||||||
...#...............#......#.....#.......#......#.........#...#......#...#..#....#..#......#.......#.......#...#.##.#...........##..
|
|
||||||
..............##..........##..........#..##...............#...........##..#..#..#.#.......#...#.............#......................
|
|
||||||
..........#.#........................#...#.#..#.#...##..#.#.#.#.......#....#.#.#..............#...#...#........###..##...........#.
|
|
||||||
......................#...#.#..##.....#....#.....###.#..#.....#..........#........#...........##...#..#...........##..#............
|
|
||||||
..................................####.#..............#.................#........#.#............##......#.#..........#.............
|
|
||||||
..................#..........#.............................#...........#..#..#......#................#.......##...##..#............
|
|
||||||
....................#...#....#.#.#.##......#................#.................#...........#....#..........#....#...##.###..........
|
|
||||||
.................#.......#...#............###.###..#.......#......#.......#..##......#.#.....#.....................#...............
|
|
||||||
.................................................................S.................................................................
|
|
||||||
.......##...........#.........###.......#....###.#.#....#.#....#....#........#.......#...#...#.#.........#...................#.....
|
|
||||||
.......#...............#............#...#..#.......##...#...#.#............#.............#......##..........#..............#.......
|
|
||||||
.......##.........#.....................##...#...#.................#...#.......#..####......#.....#..............#..##.............
|
|
||||||
........#..#.............#.#..##..............#...#.............#.....#......#...#.#.......#...............##...##.................
|
|
||||||
.........#..#...#..#.#..#..#...................##......#.....#..#...##..............#......#..........#.##...#.#.##.#..............
|
|
||||||
..............#..........#....................................#.........#.......#..#............##................#................
|
|
||||||
...........#...#.....#.........#....#..###....#...#.......#....#...............##.....#.......#.#.....#.#....#.#..#................
|
|
||||||
..#...................#........###..............#.#................#...###...##.............#.###......#...#...#.....#..........#..
|
|
||||||
.#.#............#.....#....###......................................#..........................#..................#................
|
|
||||||
................#..#...#................#.................##.................##..........#.......#...#.............#...............
|
|
||||||
.....##...........#....#.......#......#.#.....#.....#................#.....#.........#..#.................#........#........#......
|
|
||||||
.#.#.............#..#.#..............#.....#..#.#.....#..#......#.........#.....#.#......#..#.......#.#......##............#..#....
|
|
||||||
...................#............#....#...........#........#...................#.....##..............#........###...............#...
|
|
||||||
......###..........###.#.......#.................................................#..#.........#.#...#.........#.#..........#.#.....
|
|
||||||
..#.................#..#..#...#............#...#...#..##.#....##..#..................##.....#......#.........................#...#.
|
|
||||||
......................#.#.....#.#...#.......##...........#...#....#.............#.......#.............#.#.#.#......................
|
|
||||||
......#..#.#..........#....#.........#......#................#.........##.#....#.......#........#.#....................#......#....
|
|
||||||
..#....#....#...............#..........#...#.#......#...................#.........#..#.#......#..#.........................##....#.
|
|
||||||
..............#..........##......#.##...#...#.#................#...#..#.......#.#.....#........#...###..##.........#..##.........#.
|
|
||||||
........##...........................##.......#.#..................#........#.......#.#........#.........................##....#...
|
|
||||||
..#.#...........#.......................#.#.....#....#.....#...............####...#..............#...#....................#.#......
|
|
||||||
.......#...#....#.#.......#####...##.....#.#.......#....#.#........#................................#.##..........##....#..#.......
|
|
||||||
.........#.....#................##.#..................#.....................#...#................#.###.#.......###....#............
|
|
||||||
............#.#....#........#....#..................#...##.............#............#.......#.....#..#............##...............
|
|
||||||
....#.....#..........#..............#...#...#........##.....#.#....#....#........##.............................#.#.......#........
|
|
||||||
..#..#.#.......#.................#................................#......##.#..#..............#.#................#...#.#...........
|
|
||||||
.....#.....#........................#..#................#......#.......#.........###.#.#.........#.........#.....#.......#.........
|
|
||||||
.......#.......................................#.......#...............#.#..###...#.#.##.......#...........#.#.....#.##........#...
|
|
||||||
......##.........#.................................#.........#........##.#................#.#...#.............#...#..#........#....
|
|
||||||
......#.....#.#.......#...........#..#...........#.........#..#.#.......#.........##.....#....#.#...............#...#...#....#...#.
|
|
||||||
..#...#.#....#....#..............................#..#...#.......#.#.#..##..................#...............#......#..###..#.#......
|
|
||||||
.....#...#..#......#.....##...............#..........#..#.#####.......#...........#...................#.....#...#.........#..#.#...
|
|
||||||
.................#.......#..................#........#.......##...##.#....#.#.............#.............#....#....#................
|
|
||||||
...........####..#.....#....#.............#.......#...#..#.....#.............#...#....#.............#.#....#.#.............#.......
|
|
||||||
...#..#..#...#...#.#.....#.......................#....#..###.###.....#.........#....................#....#..#............#.....#...
|
|
||||||
.#.##....##...#......#.#.....#......................#.##..................#........#..#................#.#.......#.............#...
|
|
||||||
....##........#.......#..#..#............#..#..#..#...#......###..#..#..#...##...............................#.#........#......#.#.
|
|
||||||
..#..#..........#..........#..#.#.............#.....#...........#.##.......#............................#...........#...#..........
|
|
||||||
..#.#..#...#....#.....#.....#...#................#.....#.....#....#..#...#..#....#....#.....................#....#.................
|
|
||||||
.......#........#...#.............#.................#...#.#.....#.#....#..........#......................#..#............#.........
|
|
||||||
....#........#........#..............#.........................#...................#..........#.........#..#.........#.............
|
|
||||||
................#........#.........#............................#.#.............#..##.......#......#..#.................#......#.#.
|
|
||||||
..#.....#.........#...#..#.#.........................#...#...#...........#.....#...........#........#.............#.....#........#.
|
|
||||||
....#...#....#......#....#...#..#.................#...##.....#.#............................##...#...#..##.#.....................#.
|
|
||||||
...#..##...............#............................#...........#......#.#.....#............#........#.##................#.........
|
|
||||||
................#..#.............#..#..............#.#....#...#.#...#...#.#.##.............................#..#...........#........
|
|
||||||
.......#.......#....###............#.#.#.....................#.#..#....#.................##.....#.#..........##..#......#..........
|
|
||||||
.......#..........##.#.......#.##...#...............##.....#..........#................#............#...#........#........#........
|
|
||||||
...###.#.............................#.....#.#............##..#...#.....###..........#...............................#.....#....#..
|
|
||||||
....###.#...#.......#.##........#......#..##.#..........#.#...#.#....#.#..............##....#..#...#...........#...#.#..#..........
|
|
||||||
.....#....#.#..##.....#..........#..#...##..............#.......#.......#.............#..#.....#.......#.....#...##...###.......#..
|
|
||||||
........##...#...##..#.#.....#..........................#.#.#..#..#...................#....#....#..#....#..........#....##.........
|
|
||||||
...........##.....#...#........##..#........#....#..........#..#...............................................#......#.#.......#..
|
|
||||||
...#..##.........##....#...........##...#.......##.........#........#...........#........#.#.##...........#....#.....###...#.......
|
|
||||||
...#...#........................#..#...#..#........................................#......#..#...#.#....#...........#..............
|
|
||||||
...#..#.......#..#......##...................#...............#.....#.#.............#.....#.........#.#..##.....#..........#..#.....
|
|
||||||
....###....#..#.....#.#........#.##.......##...#...............#...............###.###.#...#............##.....#.................#.
|
|
||||||
....#...#.........#.##............#.....#........#............................................##.#......#..##.........#....###..#..
|
|
||||||
............#...##..#..........#........#.......#.#..........................#..#.#.......#......#.......................##.#..#...
|
|
||||||
....#......#....#....#..#.....#........#......#....#..#.#..............................#..#....#............#....#.................
|
|
||||||
..#.............#...#......#...#.....................#.##...............................##...#.......#........................#.##.
|
|
||||||
....#....##........#..............#....#.......#.....................................#........#........#...##..........#...........
|
|
||||||
....#.#.##..#..#....................#.................#.##.............#....#....#.............###...#...#..##....#.....##.........
|
|
||||||
.............#.......#...............#........#.#.....#..#.#................#.....#..##.....#....#...............#....#......#...#.
|
|
||||||
...................................................................................................................................
|
|
230
21/src/main.rs
230
21/src/main.rs
@ -1,230 +0,0 @@
|
|||||||
use core::panic;
|
|
||||||
use indicatif::{ProgressBar, ProgressStyle};
|
|
||||||
use rayon::prelude::*;
|
|
||||||
use std::collections::HashSet;
|
|
||||||
use std::fs::File;
|
|
||||||
use std::io::{BufRead, BufReader, Lines};
|
|
||||||
use std::time::Instant;
|
|
||||||
|
|
||||||
// BOILERPLATE
|
|
||||||
type InputIter = Lines<BufReader<File>>;
|
|
||||||
|
|
||||||
fn get_input() -> InputIter {
|
|
||||||
let f = File::open("input").unwrap();
|
|
||||||
let br = BufReader::new(f);
|
|
||||||
br.lines()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn main() {
|
|
||||||
let start = Instant::now();
|
|
||||||
let ans1 = problem1(get_input());
|
|
||||||
let duration = start.elapsed();
|
|
||||||
println!("Problem 1 solution: {} [{}s]", ans1, duration.as_secs_f64());
|
|
||||||
|
|
||||||
let start = Instant::now();
|
|
||||||
let ans2 = problem2(get_input());
|
|
||||||
let duration = start.elapsed();
|
|
||||||
println!("Problem 2 solution: {} [{}s]", ans2, duration.as_secs_f64());
|
|
||||||
}
|
|
||||||
|
|
||||||
// PARSE
|
|
||||||
|
|
||||||
type Position = (isize, isize);
|
|
||||||
type WrappedPosition = (usize, usize);
|
|
||||||
type Offset = (isize, isize);
|
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
|
||||||
struct MapTile {
|
|
||||||
c: char,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl MapTile {
|
|
||||||
fn new(c: char) -> Self {
|
|
||||||
Self { c }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
struct GardenMap {
|
|
||||||
map: Vec<Vec<MapTile>>,
|
|
||||||
start: Position,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<T: BufRead> From<Lines<T>> for GardenMap {
|
|
||||||
fn from(lines: Lines<T>) -> Self {
|
|
||||||
let map = lines
|
|
||||||
.map(|line| line.unwrap().chars().map(|c| MapTile::new(c)).collect())
|
|
||||||
.collect();
|
|
||||||
let mut new = Self { map, start: (0, 0) };
|
|
||||||
new.find_start();
|
|
||||||
new
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const ADJACENCIES: [Offset; 4] = [(-1, 0), (1, 0), (0, -1), (0, 1)];
|
|
||||||
|
|
||||||
impl GardenMap {
|
|
||||||
fn wrap_pos(&self, pos: &Position) -> WrappedPosition {
|
|
||||||
let (width, height) = (self.width() as isize, self.height() as isize);
|
|
||||||
(
|
|
||||||
if pos.0 < 0 {
|
|
||||||
(pos.0 + (-pos.0 / width + 1) * width) as usize % self.width()
|
|
||||||
} else {
|
|
||||||
pos.0 as usize % self.width()
|
|
||||||
},
|
|
||||||
if pos.1 < 0 {
|
|
||||||
(pos.1 + (-pos.1 / height + 1) * height) as usize % self.height()
|
|
||||||
} else {
|
|
||||||
pos.1 as usize % self.height()
|
|
||||||
},
|
|
||||||
)
|
|
||||||
}
|
|
||||||
fn width(&self) -> usize {
|
|
||||||
self.map[0].len()
|
|
||||||
}
|
|
||||||
fn height(&self) -> usize {
|
|
||||||
self.map.len()
|
|
||||||
}
|
|
||||||
fn at(&self, pos: &Position) -> &MapTile {
|
|
||||||
let pos = self.wrap_pos(pos);
|
|
||||||
&self.map[pos.1][pos.0]
|
|
||||||
}
|
|
||||||
// return the valid 'moves' from pos
|
|
||||||
fn adjacent_to(&self, pos: &Position) -> Vec<Position> {
|
|
||||||
ADJACENCIES
|
|
||||||
.iter()
|
|
||||||
.filter_map(|ofs| self.offset_pos(pos, ofs))
|
|
||||||
.filter(|pos| self.at(pos).c != '#')
|
|
||||||
.collect()
|
|
||||||
}
|
|
||||||
fn offset_pos(&self, pos: &Position, ofs: &Offset) -> Option<Position> {
|
|
||||||
let new_pos = (pos.0 as isize + ofs.0, pos.1 as isize + ofs.1);
|
|
||||||
return Some((new_pos.0, new_pos.1));
|
|
||||||
}
|
|
||||||
fn find_start(&mut self) {
|
|
||||||
for (y, row) in self.map.iter().enumerate() {
|
|
||||||
for (x, tile) in row.iter().enumerate() {
|
|
||||||
if tile.c == 'S' {
|
|
||||||
self.start = (x as isize, y as isize);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
panic!("didn't find the start square!");
|
|
||||||
}
|
|
||||||
fn reachable_after(&self, from: &Position, n: usize) -> u64 {
|
|
||||||
let bar = ProgressBar::new(n as u64).with_style(
|
|
||||||
ProgressStyle::with_template(
|
|
||||||
"[{elapsed_precise}/{eta_precise}] {bar:40.cyan/blue} {pos:>7}/{len:7} {per_sec}",
|
|
||||||
)
|
|
||||||
.unwrap(),
|
|
||||||
);
|
|
||||||
let mut visited_after: Vec<HashSet<Position>> = Vec::new();
|
|
||||||
visited_after.push(HashSet::from([*from]));
|
|
||||||
for i in 1..n+1 {
|
|
||||||
visited_after.push(
|
|
||||||
visited_after[i - 1]
|
|
||||||
.iter()
|
|
||||||
.flat_map(|last| self.adjacent_to(last))
|
|
||||||
.collect(),
|
|
||||||
);
|
|
||||||
bar.inc(1);
|
|
||||||
// if primes::is_prime(i as u64) {
|
|
||||||
// println!("count after {} steps: {}", i, visited_after[i].len());
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
|
|
||||||
visited_after[n].len() as u64
|
|
||||||
}
|
|
||||||
fn reachable_count_after(&self, from: &Position, n: usize) -> u64 {
|
|
||||||
let dim = self.width() as f64;
|
|
||||||
let target_mod = (n % self.width()) as f64;
|
|
||||||
let x_values:Vec<f64> = vec![target_mod, target_mod + dim, target_mod + 2.*dim];
|
|
||||||
let y_values:Vec<f64> = x_values.iter().map(|n| self.reachable_after(from, *n as usize) as f64).collect();
|
|
||||||
|
|
||||||
let coeffs = polyfit_rs::polyfit_rs::polyfit(
|
|
||||||
&x_values,
|
|
||||||
&y_values,
|
|
||||||
2,
|
|
||||||
).unwrap();
|
|
||||||
println!("values: x: {:?} y: {:?}", x_values, y_values);
|
|
||||||
println!("coefficients: {:?}", coeffs);
|
|
||||||
|
|
||||||
let f_n= n as f64;
|
|
||||||
let result = coeffs[0] + coeffs[1] * f_n + coeffs[2] * f_n.powf(2.0);
|
|
||||||
|
|
||||||
result.round() as u64
|
|
||||||
}
|
|
||||||
fn draw_with_bounds(&self, from: &Position, to: &Position) {
|
|
||||||
for row in from.1..to.1 + 1 {
|
|
||||||
for col in from.0..to.0 + 1 {
|
|
||||||
print!("{}", self.at(&(col, row)).c);
|
|
||||||
}
|
|
||||||
println!();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// fn print_visited(map: &GardenMap, visited: &Vec<Vec<bool>>) {
|
|
||||||
// for (y, row) in visited.iter().enumerate() {
|
|
||||||
// for (x, cell) in row.iter().enumerate() {
|
|
||||||
// print!("{}", if *cell { 'O' } else { map.at(&(x, y)).c });
|
|
||||||
// }
|
|
||||||
// println!();
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// PROBLEM 1 solution
|
|
||||||
|
|
||||||
fn problem1_impl<T: BufRead>(input: Lines<T>, n: usize) -> u64 {
|
|
||||||
let map = GardenMap::from(input);
|
|
||||||
// println!("map: {:?} start: {:?}", map.map, &map.start);
|
|
||||||
// map.draw_with_bounds(
|
|
||||||
// &(-(map.width() as isize), -(map.height() as isize)),
|
|
||||||
// &(map.width() as isize * 2 + 1, map.height() as isize * 2 + 1),
|
|
||||||
// );
|
|
||||||
map.reachable_count_after(&map.start, n)
|
|
||||||
}
|
|
||||||
|
|
||||||
fn problem1<T: BufRead>(input: Lines<T>) -> u64 {
|
|
||||||
problem1_impl(input, 64)
|
|
||||||
}
|
|
||||||
|
|
||||||
// PROBLEM 2 solution
|
|
||||||
fn problem2<T: BufRead>(input: Lines<T>) -> u64 {
|
|
||||||
problem1_impl(input, 26501365)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(test)]
|
|
||||||
mod tests {
|
|
||||||
use crate::*;
|
|
||||||
use std::io::Cursor;
|
|
||||||
use test_case::test_case;
|
|
||||||
|
|
||||||
const EXAMPLE: &str = &"...........
|
|
||||||
.....###.#.
|
|
||||||
.###.##..#.
|
|
||||||
..#.#...#..
|
|
||||||
....#.#....
|
|
||||||
.##..S####.
|
|
||||||
.##..#...#.
|
|
||||||
.......##..
|
|
||||||
.##.#.####.
|
|
||||||
.##..##.##.
|
|
||||||
...........";
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn problem1_example() {
|
|
||||||
let c = Cursor::new(EXAMPLE);
|
|
||||||
assert_eq!(problem1_impl(c.lines(), 6), 16);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test_case(6, 16)]
|
|
||||||
#[test_case(10, 50)]
|
|
||||||
#[test_case(50, 1594)]
|
|
||||||
#[test_case(100, 6536)]
|
|
||||||
#[test_case(500, 167004)]
|
|
||||||
fn problem2_example(n: usize, expect: u64) {
|
|
||||||
let c = Cursor::new(EXAMPLE);
|
|
||||||
assert_eq!(problem1_impl(c.lines(), n), expect);
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user