diff options
Diffstat (limited to '2020')
-rw-r--r-- | 2020/Cargo.lock | 3654 | ||||
-rw-r--r-- | 2020/Cargo.toml | 11 | ||||
-rw-r--r-- | 2020/inputs/day_1.txt | 200 | ||||
-rw-r--r-- | 2020/inputs/day_10.txt | 111 | ||||
-rw-r--r-- | 2020/inputs/day_11.txt | 90 | ||||
-rw-r--r-- | 2020/inputs/day_12.txt | 755 | ||||
-rw-r--r-- | 2020/inputs/day_2.txt | 1000 | ||||
-rw-r--r-- | 2020/inputs/day_3.txt | 323 | ||||
-rw-r--r-- | 2020/inputs/day_4.txt | 1023 | ||||
-rw-r--r-- | 2020/inputs/day_5.txt | 901 | ||||
-rw-r--r-- | 2020/inputs/day_6.txt | 2199 | ||||
-rw-r--r-- | 2020/inputs/day_7.txt | 594 | ||||
-rw-r--r-- | 2020/inputs/day_8.txt | 626 | ||||
-rw-r--r-- | 2020/inputs/day_9.txt | 1000 | ||||
-rw-r--r-- | 2020/src/bin/day_1.rs | 83 | ||||
-rw-r--r-- | 2020/src/bin/day_10.rs | 124 | ||||
-rw-r--r-- | 2020/src/bin/day_11.rs | 209 | ||||
-rw-r--r-- | 2020/src/bin/day_12.rs | 233 | ||||
-rw-r--r-- | 2020/src/bin/day_2.rs | 104 | ||||
-rw-r--r-- | 2020/src/bin/day_3.rs | 205 | ||||
-rw-r--r-- | 2020/src/bin/day_4.rs | 222 | ||||
-rw-r--r-- | 2020/src/bin/day_5.rs | 157 | ||||
-rw-r--r-- | 2020/src/bin/day_6.rs | 102 | ||||
-rw-r--r-- | 2020/src/bin/day_7.rs | 137 | ||||
-rw-r--r-- | 2020/src/bin/day_8.rs | 154 | ||||
-rw-r--r-- | 2020/src/bin/day_9.rs | 120 | ||||
-rw-r--r-- | 2020/src/lib.rs | 1 | ||||
-rw-r--r-- | 2020/src/main.rs | 3 |
28 files changed, 14341 insertions, 0 deletions
diff --git a/2020/Cargo.lock b/2020/Cargo.lock new file mode 100644 index 0000000..dcd07c3 --- /dev/null +++ b/2020/Cargo.lock @@ -0,0 +1,3654 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" + +[[package]] +name = "ab_glyph" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26a685fe66654266f321a8b572660953f4df36a2135706503a4c89981d76e1a2" +dependencies = [ + "ab_glyph_rasterizer", + "owned_ttf_parser", +] + +[[package]] +name = "ab_glyph_rasterizer" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9fe5e32de01730eb1f6b7f5b51c17e03e2325bf40a74f754f04f130043affff" + +[[package]] +name = "addr2line" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c0929d69e78dd9bf5408269919fcbcaeb2e35e5d43e5815517cdc6a8e11a423" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e" + +[[package]] +name = "adler32" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" + +[[package]] +name = "advent-of-code-2020" +version = "0.1.0" +dependencies = [ + "bevy", + "thiserror", +] + +[[package]] +name = "ahash" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eb6ec8807cd25b59e6b8100815afc73f54e294f1a425a2e555971969889a8f8" +dependencies = [ + "getrandom 0.2.0", + "lazy_static", +] + +[[package]] +name = "aho-corasick" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7404febffaa47dac81aa44dba71523c9d069b1bdc50a77db41195149e17f68e5" +dependencies = [ + "memchr", +] + +[[package]] +name = "alsa" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb213f6b3e4b1480a60931ca2035794aa67b73103d254715b1db7b70dcb3c934" +dependencies = [ + "alsa-sys", + "bitflags", + "libc", + "nix 0.15.0", +] + +[[package]] +name = "alsa-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5a0559bcd3f7a482690d98be41c08a43e92f669b179433e95ddf5e8b8fd36a3" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "android_log-sys" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8052e2d8aabbb8d556d6abbcce2a22b9590996c5f849b9c7ce4544a2e3b984e" + +[[package]] +name = "android_log-sys" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85965b6739a430150bdd138e2374a98af0c3ee0d030b3bb7fc3bddff58d0102e" + +[[package]] +name = "android_logger" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cbd542dd180566fad88fd2729a53a62a734843c626638006a9d63ec0688484e" +dependencies = [ + "android_log-sys 0.1.2", + "env_logger", + "lazy_static", + "log", +] + +[[package]] +name = "android_logger" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5027a747b8132dc36dc894415a300aab31d6489ee788e9ba07bc99558b1278ca" +dependencies = [ + "android_log-sys 0.2.0", + "env_logger", + "lazy_static", + "log", +] + +[[package]] +name = "anyhow" +version = "1.0.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf8dcb5b4bbaa28653b647d8c77bd4ed40183b48882e130c1f1ffb73de069fd7" + +[[package]] +name = "anymap" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33954243bd79057c2de7338850b85983a44588021f8a5fee574a8888c6de4344" + +[[package]] +name = "arrayvec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" + +[[package]] +name = "ascii" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" + +[[package]] +name = "ash" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c69a8137596e84c22d57f3da1b5de1d4230b1742a710091c85f4d7ce50f00f38" +dependencies = [ + "libloading 0.6.5", +] + +[[package]] +name = "async-channel" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59740d83946db6a5af71ae25ddf9562c2b176b2ca42cf99a455f09f4a220d6b9" +dependencies = [ + "concurrent-queue", + "event-listener", + "futures-core", +] + +[[package]] +name = "async-executor" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb877970c7b440ead138f6321a3b5395d6061183af779340b65e20c0fede9146" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "once_cell", + "vec-arena", +] + +[[package]] +name = "async-task" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91831deabf0d6d7ec49552e489aed63b7456a7a3c46cff62adad428110b0af0" + +[[package]] +name = "autocfg" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" + +[[package]] +name = "backtrace" +version = "0.3.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2baad346b2d4e94a24347adeee9c7a93f412ee94b9cc26e5b59dea23848e9f28" +dependencies = [ + "addr2line", + "cfg-if 1.0.0", + "libc", + "miniz_oxide 0.4.3", + "object", + "rustc-demangle", +] + +[[package]] +name = "base-x" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b" + +[[package]] +name = "base64" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" +dependencies = [ + "byteorder", +] + +[[package]] +name = "base64" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" + +[[package]] +name = "base64" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" + +[[package]] +name = "bevy" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8de175e156277bf382d5212e4f580e74caaa62917b5554e12ab2addd87ae789" +dependencies = [ + "android_logger 0.9.0", + "bevy_app", + "bevy_asset", + "bevy_audio", + "bevy_core", + "bevy_diagnostic", + "bevy_dynamic_plugin", + "bevy_ecs", + "bevy_gilrs", + "bevy_gltf", + "bevy_input", + "bevy_math", + "bevy_pbr", + "bevy_property", + "bevy_render", + "bevy_scene", + "bevy_sprite", + "bevy_tasks", + "bevy_text", + "bevy_transform", + "bevy_type_registry", + "bevy_ui", + "bevy_utils", + "bevy_wgpu", + "bevy_window", + "bevy_winit", + "ndk-glue", +] + +[[package]] +name = "bevy-glsl-to-spirv" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d5f2f58f0aec3c50a20799792c3705e80dd7df327e79791cacec197e84e5e61" + +[[package]] +name = "bevy_app" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93cdf694a6d588bf46a2a7ae5623f176fc5c4ee4d0d71281fdc25bd263136a14" +dependencies = [ + "bevy_derive", + "bevy_ecs", + "bevy_utils", + "instant", + "log", + "serde", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "bevy_asset" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76ed5c0dcf4262387a3917dcf4cd1a7bf9539bac843a6c9653bb56e9d5ef723c" +dependencies = [ + "anyhow", + "bevy_app", + "bevy_ecs", + "bevy_property", + "bevy_tasks", + "bevy_type_registry", + "bevy_utils", + "crossbeam-channel", + "downcast-rs", + "js-sys", + "log", + "ndk-glue", + "notify", + "parking_lot", + "rand", + "ron", + "serde", + "thiserror", + "uuid", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "bevy_audio" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6198d842cc25f77dc828d0ba0ae9b313fd864e18af29f60e9d5319d056f8166" +dependencies = [ + "anyhow", + "bevy_app", + "bevy_asset", + "bevy_ecs", + "bevy_type_registry", + "bevy_utils", + "parking_lot", + "rodio", +] + +[[package]] +name = "bevy_core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bbe690bd67ba93067651604a3da5b314ec4de5417547ad0f1fbd93da541ea30" +dependencies = [ + "bevy_app", + "bevy_derive", + "bevy_ecs", + "bevy_math", + "bevy_property", + "bevy_tasks", + "bevy_type_registry", + "bevy_utils", + "instant", + "log", +] + +[[package]] +name = "bevy_derive" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c18d8de3b2f1c66dbac70fbf82bce0dcbeceecf2356eb1b542c735d5c17e0a0" +dependencies = [ + "Inflector", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", + "uuid", +] + +[[package]] +name = "bevy_diagnostic" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e98868df99533447a6ad202e6826fe24cecab80c163c1dcac56b811ea69a9f7" +dependencies = [ + "bevy_app", + "bevy_core", + "bevy_ecs", + "bevy_utils", + "instant", + "parking_lot", + "uuid", +] + +[[package]] +name = "bevy_dynamic_plugin" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc5672a27be1e38e11b6f2f1e1290fde2aa4f074628aad33303953ce881a5a78" +dependencies = [ + "bevy_app", + "libloading 0.6.5", + "log", +] + +[[package]] +name = "bevy_ecs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad8a73ad248ed6c16b1ca53eaedd76ae5aa284aa5c4527f8cf3526b5e3a7fce" +dependencies = [ + "bevy_hecs", + "bevy_tasks", + "bevy_utils", + "downcast-rs", + "fixedbitset", + "log", + "parking_lot", + "rand", + "thiserror", +] + +[[package]] +name = "bevy_gilrs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "255ceb467ab2982a0bd1ef0c49ae557704f99fe11ab990a11492cea2e6d7fd7f" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_input", + "gilrs", + "log", +] + +[[package]] +name = "bevy_gltf" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44dfa912e7fb0ac140b46e2cdf4f6f5e66e6def8049dc8cee69de9a9bafd1836" +dependencies = [ + "anyhow", + "base64 0.12.3", + "bevy_app", + "bevy_asset", + "bevy_ecs", + "bevy_math", + "bevy_pbr", + "bevy_render", + "bevy_scene", + "bevy_transform", + "bevy_type_registry", + "gltf", + "image", + "thiserror", +] + +[[package]] +name = "bevy_hecs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18661dc92bcb6cc1f2f5ad630f3f3eae7b23942860ea6845a2a775b5a1f7564f" +dependencies = [ + "bevy_hecs_macros", + "bevy_utils", + "lazy_static", + "serde", +] + +[[package]] +name = "bevy_hecs_macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a85e43b7043183821aa62f09c91164a0aa6de771c5397a7a0d0eaf754cc042a" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "bevy_input" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "069dc814211aaf691c9aca9ce97210d3238c19e599dfc2bc50b183fe925f0a00" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_math", + "bevy_utils", +] + +[[package]] +name = "bevy_math" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71ff845326919ef68a796ae4740e33356683020756bc1d23b552b9b31a106fd3" +dependencies = [ + "glam", +] + +[[package]] +name = "bevy_pbr" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34e4185bf49b2cfd31a0aec90722b3e898b37de5d61ec4cc53e5df9ecae19d71" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_derive", + "bevy_ecs", + "bevy_math", + "bevy_property", + "bevy_render", + "bevy_transform", + "bevy_type_registry", + "bevy_window", +] + +[[package]] +name = "bevy_property" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bd127fa915b12581aab82cf77ade4a29c1a7b00c19672b88c187c14d111227c" +dependencies = [ + "bevy_ecs", + "bevy_math", + "bevy_property_derive", + "bevy_utils", + "erased-serde", + "ron", + "serde", + "smallvec", +] + +[[package]] +name = "bevy_property_derive" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3c7a3bc30a90561dc05e662597d595d29a9a7171fb7e5fc34fdb09e4c60c10f" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "bevy_render" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c1e99851a90fba39994aa26887da114cb53388e1ba7324b60cea4156351ad23" +dependencies = [ + "anyhow", + "bevy-glsl-to-spirv", + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_derive", + "bevy_ecs", + "bevy_math", + "bevy_property", + "bevy_transform", + "bevy_type_registry", + "bevy_utils", + "bevy_window", + "bitflags", + "downcast-rs", + "hex", + "hexasphere", + "image", + "log", + "once_cell", + "parking_lot", + "serde", + "shaderc", + "smallvec", + "spirv-reflect", + "thiserror", + "uuid", +] + +[[package]] +name = "bevy_scene" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d00a586fa10ea919800eda837f98396b49b99a84ee1fc8d6ad4ede151d3b9e4" +dependencies = [ + "anyhow", + "bevy_app", + "bevy_asset", + "bevy_ecs", + "bevy_property", + "bevy_type_registry", + "bevy_utils", + "parking_lot", + "ron", + "serde", + "thiserror", + "uuid", +] + +[[package]] +name = "bevy_sprite" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15eb21af28740fcaf9bd4cec1df90a3015ffab1d33d51022ebc9f106f55210d8" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_ecs", + "bevy_math", + "bevy_render", + "bevy_transform", + "bevy_type_registry", + "bevy_utils", + "guillotiere", + "rectangle-pack", + "thiserror", +] + +[[package]] +name = "bevy_tasks" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c39e34a30611a1c4a80a30d252f0c53afa27e9500fa73dae1dca2e41c85c765" +dependencies = [ + "async-channel", + "async-executor", + "event-listener", + "futures-lite", + "num_cpus", + "wasm-bindgen-futures", +] + +[[package]] +name = "bevy_text" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61b128707cbbc841fa8aa3b41e29362d4a7ba38fb4450b7766d3ff9884389766" +dependencies = [ + "ab_glyph", + "anyhow", + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_math", + "bevy_render", + "bevy_sprite", + "bevy_type_registry", + "bevy_utils", +] + +[[package]] +name = "bevy_transform" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf4b3c44fc53eb744fc16edc923655a50a01fd0e8e6edfe6f3b3065997e913f5" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_math", + "bevy_property", + "bevy_type_registry", + "bevy_utils", + "log", + "smallvec", +] + +[[package]] +name = "bevy_type_registry" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4aac65e5c297e547844cb5986da14975181a352f532c8d6fe95f7b62e5a40d32" +dependencies = [ + "bevy_app", + "bevy_derive", + "bevy_ecs", + "bevy_property", + "bevy_utils", + "parking_lot", + "serde", + "uuid", +] + +[[package]] +name = "bevy_ui" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2994737dd6413028a2bcda7315ab6cbe8c30c1dab809fb3de4b1e1a8e2fbfabc" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_derive", + "bevy_ecs", + "bevy_input", + "bevy_math", + "bevy_render", + "bevy_sprite", + "bevy_text", + "bevy_transform", + "bevy_type_registry", + "bevy_utils", + "bevy_window", + "stretch", +] + +[[package]] +name = "bevy_utils" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "554cd4eba4b278f6cc0fe5da0b7dbe8deba51613e6769f93b0d5a8a32eac54b6" +dependencies = [ + "ahash", + "getrandom 0.2.0", +] + +[[package]] +name = "bevy_wgpu" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ba8d9ae1409735ddc2b83426849ba819699288d0ff1166b9caa352511300a1d" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_diagnostic", + "bevy_ecs", + "bevy_render", + "bevy_utils", + "bevy_window", + "bevy_winit", + "crossbeam-channel", + "crossbeam-utils", + "futures-lite", + "log", + "parking_lot", + "wgpu", +] + +[[package]] +name = "bevy_window" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f15434d9c46bfc96d449a121e01139489ddc9e79b879edee73c58f90b6b2bbb3" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_math", + "bevy_utils", + "uuid", + "web-sys", +] + +[[package]] +name = "bevy_winit" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fd72a8a4b42e975c2cac508500471b468568f042d6bbaf6f200844eba3192b0" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_input", + "bevy_math", + "bevy_utils", + "bevy_window", + "log", + "wasm-bindgen", + "web-sys", + "winit", +] + +[[package]] +name = "bindgen" +version = "0.53.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c72a978d268b1d70b0e963217e60fdabd9523a941457a6c42a7315d15c7e89e5" +dependencies = [ + "bitflags", + "cexpr", + "cfg-if 0.1.10", + "clang-sys", + "lazy_static", + "lazycell", + "peeking_take_while", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", +] + +[[package]] +name = "bit-set" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e11e16035ea35e4e5997b393eacbf6f63983188f7a2ad25bfb13465f5ad59de" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0dc55f2d8a1a85650ac47858bb001b4c0dd73d79e3c455a842925e68d29cd3" + +[[package]] +name = "bitflags" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "bumpalo" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e8c087f005730276d1096a652e92a8bacee2e2472bcc9715a74d2bec38b5820" + +[[package]] +name = "bytemuck" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41aa2ec95ca3b5c54cf73c91acf06d24f4495d5f1b1c12506ae3483d646177ac" + +[[package]] +name = "byteorder" +version = "1.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" + +[[package]] +name = "bytes" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" + +[[package]] +name = "cache-padded" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "631ae5198c9be5e753e5cc215e1bd73c2b466a3565173db433f52bb9d3e66dba" + +[[package]] +name = "cc" +version = "1.0.62" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1770ced377336a88a67c473594ccc14eca6f4559217c34f64aac8f83d641b40" +dependencies = [ + "jobserver", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cexpr" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4aedb84272dbe89af497cf81375129abda4fc0a9e7c5d317498c15cc30c0d27" +dependencies = [ + "nom", +] + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chunked_transfer" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7477065d45a8fe57167bf3cf8bcd3729b54cfcb81cca49bda2d038ea89ae82ca" + +[[package]] +name = "clang-sys" +version = "0.29.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe6837df1d5cba2397b835c8530f51723267e16abbf83892e9e5af4f0e5dd10a" +dependencies = [ + "glob", + "libc", + "libloading 0.5.2", +] + +[[package]] +name = "cloudabi" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4344512281c643ae7638bbabc3af17a11307803ec8f0fcad9fae512a8bf36467" +dependencies = [ + "bitflags", +] + +[[package]] +name = "cmake" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb6210b637171dfba4cda12e579ac6dc73f5165ad56133e5d72ef3131f320855" +dependencies = [ + "cc", +] + +[[package]] +name = "cocoa" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c54201c07dcf3a5ca33fececb8042aed767ee4bfd5a0235a8ceabcda956044b2" +dependencies = [ + "bitflags", + "block", + "cocoa-foundation", + "core-foundation 0.9.1", + "core-graphics 0.22.1", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "cocoa-foundation" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ade49b65d560ca58c403a479bb396592b155c0185eada742ee323d1d68d6318" +dependencies = [ + "bitflags", + "block", + "core-foundation 0.9.1", + "core-graphics-types", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] +name = "combine" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" +dependencies = [ + "ascii", + "byteorder", + "either", + "memchr", + "unreachable", +] + +[[package]] +name = "combine" +version = "4.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9417a0c314565e2abffaece67e95a8cb51f9238cd39f3764d9dfdf09e72b20c" +dependencies = [ + "bytes", + "memchr", + "pin-project-lite", +] + +[[package]] +name = "concurrent-queue" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30ed07550be01594c6026cff2a1d7fe9c8f683caa798e12b68694ac9e88286a3" +dependencies = [ + "cache-padded", +] + +[[package]] +name = "cookie" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "888604f00b3db336d2af898ec3c1d5d0ddf5e6d462220f2ededc33a87ac4bbd5" +dependencies = [ + "time", + "url 1.7.2", +] + +[[package]] +name = "copyless" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2df960f5d869b2dd8532793fde43eb5427cceb126c929747a26823ab0eeb536" + +[[package]] +name = "core-foundation" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25b9e03f145fd4f2bf705e07b900cd41fc636598fe5dc452fd0db1441c3f496d" +dependencies = [ + "core-foundation-sys 0.6.2", + "libc", +] + +[[package]] +name = "core-foundation" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57d24c7a13c43e870e37c1556b74555437870a04514f7685f5b354e090567171" +dependencies = [ + "core-foundation-sys 0.7.0", + "libc", +] + +[[package]] +name = "core-foundation" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a89e2ae426ea83155dccf10c0fa6b1463ef6d5fcb44cee0b224a408fa640a62" +dependencies = [ + "core-foundation-sys 0.8.2", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b" + +[[package]] +name = "core-foundation-sys" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac" + +[[package]] +name = "core-foundation-sys" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea221b5284a47e40033bf9b66f35f984ec0ea2931eb03505246cd27a963f981b" + +[[package]] +name = "core-graphics" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3889374e6ea6ab25dba90bb5d96202f61108058361f6dc72e8b03e6f8bbe923" +dependencies = [ + "bitflags", + "core-foundation 0.7.0", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc239bba52bab96649441699533a68de294a101533b0270b2d65aa402b29a7f9" +dependencies = [ + "bitflags", + "core-foundation 0.9.1", + "core-graphics-types", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" +dependencies = [ + "bitflags", + "core-foundation 0.9.1", + "foreign-types", + "libc", +] + +[[package]] +name = "core-video-sys" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34ecad23610ad9757664d644e369246edde1803fcb43ed72876565098a5d3828" +dependencies = [ + "cfg-if 0.1.10", + "core-foundation-sys 0.7.0", + "core-graphics 0.19.2", + "libc", + "objc", +] + +[[package]] +name = "coreaudio-rs" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f229761965dad3e9b11081668a6ea00f1def7aa46062321b5ec245b834f6e491" +dependencies = [ + "bitflags", + "coreaudio-sys", +] + +[[package]] +name = "coreaudio-sys" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17f73df0f29f4c3c374854f076c47dc018f19acaa63538880dba0937ad4fa8d7" +dependencies = [ + "bindgen", +] + +[[package]] +name = "cpal" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05631e2089dfa5d3b6ea1cfbbfd092e2ee5deeb69698911bc976b28b746d3657" +dependencies = [ + "alsa", + "core-foundation-sys 0.6.2", + "coreaudio-rs", + "jni 0.17.0", + "js-sys", + "lazy_static", + "libc", + "mach 0.3.2", + "ndk", + "ndk-glue", + "nix 0.15.0", + "oboe", + "parking_lot", + "stdweb 0.1.3", + "thiserror", + "web-sys", + "winapi 0.3.9", +] + +[[package]] +name = "crc32fast" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "crossbeam-channel" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87" +dependencies = [ + "crossbeam-utils", + "maybe-uninit", +] + +[[package]] +name = "crossbeam-utils" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" +dependencies = [ + "autocfg", + "cfg-if 0.1.10", + "lazy_static", +] + +[[package]] +name = "d3d12" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a60cceb22c7c53035f8980524fdc7f17cf49681a3c154e6757d30afbec6ec4" +dependencies = [ + "bitflags", + "libloading 0.6.5", + "winapi 0.3.9", +] + +[[package]] +name = "darling" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d706e75d87e35569db781a9b5e2416cff1236a47ed380831f959382ccd5f858" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0c960ae2da4de88a91b2d920c2a7233b400bc33cb28453a2987822d8392519b" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72" +dependencies = [ + "darling_core", + "quote", + "syn", +] + +[[package]] +name = "deflate" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73770f8e1fe7d64df17ca66ad28994a0a623ea497fa69486e14984e715c5d174" +dependencies = [ + "adler32", + "byteorder", +] + +[[package]] +name = "derivative" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb582b60359da160a9477ee80f15c8d784c477e69c217ef2cdd4169c24ea380f" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "discard" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "downcast-rs" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" + +[[package]] +name = "either" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" + +[[package]] +name = "env_logger" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" +dependencies = [ + "log", + "regex", +] + +[[package]] +name = "erased-serde" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ca8b296792113e1500fd935ae487be6e00ce318952a6880555554824d6ebf38" +dependencies = [ + "serde", +] + +[[package]] +name = "error-chain" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc" +dependencies = [ + "backtrace", + "version_check", +] + +[[package]] +name = "euclid" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5337024b8293bdce5265dc9570ef6e608a34bfacbbc87fe1a5dcb5f1dac2f4e2" +dependencies = [ + "num-traits", +] + +[[package]] +name = "event-listener" +version = "2.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7531096570974c3a9dcf9e4b8e1cede1ec26cf5046219fb3b9d897503b9be59" + +[[package]] +name = "fastrand" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca5faf057445ce5c9d4329e382b2ce7ca38550ef3b73a5348362d5f24e0c7fe3" +dependencies = [ + "instant", +] + +[[package]] +name = "fetch_unroll" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5c55005e95bbe15f5f72a73b6597d0dc82ddc97ffe2ca097a99dcd591fefbca" +dependencies = [ + "libflate", + "tar", + "ureq", +] + +[[package]] +name = "filetime" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c122a393ea57648015bf06fbd3d372378992e86b9ff5a7a497b076a28c79efe" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall", + "winapi 0.3.9", +] + +[[package]] +name = "fixedbitset" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e08c8bc7575d7e091fe0706963bd22e2a4be6a64da995f03b2a5a57d66ad015" + +[[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.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ece68d15c92e84fa4f19d3780f1294e5ca82a78a6d515f1efaabcc144688be00" +dependencies = [ + "matches", + "percent-encoding 2.1.0", +] + +[[package]] +name = "fsevent" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97f347202c95c98805c216f9e1df210e8ebaec9fdb2365700a43c10797a35e63" +dependencies = [ + "bitflags", + "fsevent-sys", +] + +[[package]] +name = "fsevent-sys" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a29c77f1ca394c3e73a9a5d24cfcabb734682d9634fc398f2204a63c994120" +dependencies = [ + "libc", +] + +[[package]] +name = "fuchsia-zircon" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" +dependencies = [ + "bitflags", + "fuchsia-zircon-sys", +] + +[[package]] +name = "fuchsia-zircon-sys" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" + +[[package]] +name = "futures" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b3b0c040a1fe6529d30b3c5944b280c7f0dcb2930d2c3062bca967b602583d0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b7109687aa4e177ef6fe84553af6280ef2778bdb7783ba44c9dc3399110fe64" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "847ce131b72ffb13b6109a221da9ad97a64cbe48feb1028356b836b47b8f1748" + +[[package]] +name = "futures-executor" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4caa2b2b68b880003057c1dd49f1ed937e38f22fcf6c212188a121f08cf40a65" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "611834ce18aaa1bd13c4b374f5d653e1027cf99b6b502584ff8c9a64413b30bb" + +[[package]] +name = "futures-lite" +version = "1.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6c079abfac3ab269e2927ec048dabc89d009ebfdda6b8ee86624f30c689658" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", +] + +[[package]] +name = "futures-macro" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77408a692f1f97bcc61dc001d752e00643408fbc922e4d634c655df50d595556" +dependencies = [ + "proc-macro-hack", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f878195a49cee50e006b02b93cf7e0a95a38ac7b776b4c4d9cc1207cd20fcb3d" + +[[package]] +name = "futures-task" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c554eb5bf48b2426c4771ab68c6b14468b6e76cc90996f528c3338d761a4d0d" +dependencies = [ + "once_cell", +] + +[[package]] +name = "futures-util" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d304cff4a7b99cfb7986f7d43fbe93d175e72e704a8860787cc95e9ffd85cbd2" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project", + "pin-utils", + "proc-macro-hack", + "proc-macro-nested", + "slab", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "getrandom" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6" +dependencies = [ + "cfg-if 0.1.10", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee8025cf36f917e6a52cce185b7c7177689b838b7ec138364e50cc2277a56cf4" +dependencies = [ + "cfg-if 0.1.10", + "libc", + "stdweb 0.4.20", + "wasi 0.9.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "gfx-auxil" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07cd956b592970f08545b9325b87580eb95a51843b6f39da27b8667fec1a1216" +dependencies = [ + "fxhash", + "gfx-hal", + "spirv_cross", +] + +[[package]] +name = "gfx-backend-dx11" +version = "0.6.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52b0c3b8b2e0a60c1380a7c27652cd86b791e5d8312fb9592a7a59bd437e9532" +dependencies = [ + "arrayvec", + "bitflags", + "gfx-auxil", + "gfx-hal", + "libloading 0.6.5", + "log", + "parking_lot", + "range-alloc", + "raw-window-handle", + "smallvec", + "spirv_cross", + "thunderdome", + "winapi 0.3.9", + "wio", +] + +[[package]] +name = "gfx-backend-dx12" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "375014deed24d76b03604736dd899f0925158a1a96db90cbefb9cce070f71af7" +dependencies = [ + "arrayvec", + "bit-set", + "bitflags", + "d3d12", + "gfx-auxil", + "gfx-hal", + "log", + "range-alloc", + "raw-window-handle", + "smallvec", + "spirv_cross", + "winapi 0.3.9", +] + +[[package]] +name = "gfx-backend-empty" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2085227c12b78f6657a900c829f2d0deb46a9be3eaf86844fde263cdc218f77c" +dependencies = [ + "gfx-hal", + "log", + "raw-window-handle", +] + +[[package]] +name = "gfx-backend-metal" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60ba1c77c112e7d35786dbd49ed26f2a76ce53a44bc09fe964935e4e35ed7f2b" +dependencies = [ + "arrayvec", + "bitflags", + "block", + "cocoa-foundation", + "copyless", + "foreign-types", + "gfx-auxil", + "gfx-hal", + "lazy_static", + "log", + "metal", + "objc", + "parking_lot", + "range-alloc", + "raw-window-handle", + "smallvec", + "spirv_cross", + "storage-map", +] + +[[package]] +name = "gfx-backend-vulkan" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a3a63cf61067a09b7d1ac480af3cb2ae0c5ede5bed294607bbd814cb1666c45" +dependencies = [ + "arrayvec", + "ash", + "byteorder", + "core-graphics-types", + "gfx-hal", + "inplace_it", + "lazy_static", + "log", + "objc", + "raw-window-handle", + "smallvec", + "winapi 0.3.9", + "x11", +] + +[[package]] +name = "gfx-descriptor" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd8c7afcd000f279d541a490e27117e61037537279b9342279abf4938fe60c6b" +dependencies = [ + "arrayvec", + "fxhash", + "gfx-hal", + "log", +] + +[[package]] +name = "gfx-hal" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d0754f5b7a43915fd7466883b2d1bb0800d7cc4609178d0b27bf143b9e5123" +dependencies = [ + "bitflags", + "raw-window-handle", +] + +[[package]] +name = "gfx-memory" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dccdda5d2b39412f4ca2cb15c70b5a82783a86b0606f5e985342754c8ed88f05" +dependencies = [ + "bit-set", + "fxhash", + "gfx-hal", + "log", + "slab", +] + +[[package]] +name = "gilrs" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b64ac678e1174eb012be1cfd409ff2483f23cb79bc880ce4737147245b0fbff" +dependencies = [ + "fnv", + "gilrs-core", + "log", + "stdweb 0.4.20", + "uuid", + "vec_map", +] + +[[package]] +name = "gilrs-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1024d4046c5c67d2adb8c90f6ed235163b58e05d35a63bf699b53f0cceeba2c6" +dependencies = [ + "core-foundation 0.6.4", + "io-kit-sys", + "libc", + "libudev-sys", + "log", + "nix 0.18.0", + "rusty-xinput", + "stdweb 0.4.20", + "uuid", + "vec_map", + "winapi 0.3.9", +] + +[[package]] +name = "gimli" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce" + +[[package]] +name = "glam" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8637c7ec4fd0776c51eeab3e0d5d1aa7e440ece3fc2ee7d674e13c957287bfc1" +dependencies = [ + "serde", +] + +[[package]] +name = "glob" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" + +[[package]] +name = "gltf" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6fb0d1d772daf10ea74528c3aeb12215f6d5b820adf2ecfc93a6578d6779c3c" +dependencies = [ + "byteorder", + "gltf-json", + "lazy_static", +] + +[[package]] +name = "gltf-derive" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6636de7bf52227363554f1ca2d9cd180fc666129ddd0933097e1f227dfa7293" +dependencies = [ + "inflections", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "gltf-json" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3fc3deb81e6fa04bf808f6be7c3983229552a95b77f687ad96af00f6d3e7d6c" +dependencies = [ + "gltf-derive", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "guillotiere" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc7cccefbf418f663e11e9500326f46a44273dc598210bbedc8bbe95e696531f" +dependencies = [ + "euclid", + "svg_fmt", +] + +[[package]] +name = "hermit-abi" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aca5565f760fb5b220e499d72710ed156fdb74e631659e99377d9ebfbd13ae8" +dependencies = [ + "libc", +] + +[[package]] +name = "hex" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "644f9158b2f133fd50f5fb3242878846d9eb792e445c893805ff0e3824006e35" + +[[package]] +name = "hexasphere" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00ad921775e70efb68429688766ca130de39af65d5201db760b0e6558bfa8175" +dependencies = [ + "glam", + "lazy_static", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" +dependencies = [ + "matches", + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "idna" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" +dependencies = [ + "matches", + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "image" +version = "0.23.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4f0a8345b33b082aedec2f4d7d4a926b845cee184cbe78b703413066564431b" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "num-iter", + "num-rational", + "num-traits", + "png", + "scoped_threadpool", +] + +[[package]] +name = "inflections" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a257582fdcde896fd96463bf2d40eefea0580021c0712a0e2b028b60b47a837a" + +[[package]] +name = "inotify" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46dd0a94b393c730779ccfd2a872b67b1eb67be3fc33082e733bdb38b5fde4d4" +dependencies = [ + "bitflags", + "inotify-sys", + "libc", +] + +[[package]] +name = "inotify-sys" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4563555856585ab3180a5bf0b2f9f8d301a728462afffc8195b3f5394229c55" +dependencies = [ + "libc", +] + +[[package]] +name = "inplace_it" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd01a2a73f2f399df96b22dc88ea687ef4d76226284e7531ae3c7ee1dc5cb534" + +[[package]] +name = "instant" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb1fc4429a33e1f80d41dc9fea4d108a88bec1de8053878898ae448a0b52f613" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "io-kit-sys" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f21dcc74995dd4cd090b147e79789f8d65959cbfb5f0b118002db869ea3bd0a0" +dependencies = [ + "core-foundation-sys 0.6.2", + "mach 0.2.3", +] + +[[package]] +name = "iovec" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" +dependencies = [ + "libc", +] + +[[package]] +name = "itoa" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6" + +[[package]] +name = "jni" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1981310da491a4f0f815238097d0d43d8072732b5ae5f8bd0d8eadf5bf245402" +dependencies = [ + "cesu8", + "combine 3.8.1", + "error-chain", + "jni-sys", + "log", + "walkdir", +] + +[[package]] +name = "jni" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36bcc950632e48b86da402c5c077590583da5ac0d480103611d5374e7c967a3c" +dependencies = [ + "cesu8", + "combine 4.4.0", + "error-chain", + "jni-sys", + "log", + "walkdir", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "jobserver" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c71313ebb9439f74b00d9d2dcec36440beaf57a6aa0623068441dd7cd81a7f2" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca059e81d9486668f12d455a4ea6daa600bd408134cd17e3d3fb5a32d1f016f8" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "kernel32-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" +dependencies = [ + "winapi 0.2.8", + "winapi-build", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +dependencies = [ + "spin", +] + +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + +[[package]] +name = "libc" +version = "0.2.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58d1b70b004888f764dfbf6a26a3b0342a1632d33968e4a179d8011c760614" + +[[package]] +name = "libflate" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9135df43b1f5d0e333385cb6e7897ecd1a43d7d11b91ac003f4d2c2d2401fdd" +dependencies = [ + "adler32", + "crc32fast", + "rle-decode-fast", + "take_mut", +] + +[[package]] +name = "libloading" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753" +dependencies = [ + "cc", + "winapi 0.3.9", +] + +[[package]] +name = "libloading" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1090080fe06ec2648d0da3881d9453d97e71a45f00eb179af7fdd7e3f686fdb0" +dependencies = [ + "cfg-if 1.0.0", + "winapi 0.3.9", +] + +[[package]] +name = "libm" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fc7aa29613bd6a620df431842069224d8bc9011086b1db4c0e0cd47fa03ec9a" + +[[package]] +name = "libudev-sys" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c8469b4a23b962c1396b9b451dda50ef5b283e8dd309d69033475fa9b334324" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "lock_api" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd96ffd135b2fd7b973ac026d28085defbe8983df057ced3eb4f2130b0831312" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b" +dependencies = [ + "cfg-if 0.1.10", +] + +[[package]] +name = "mach" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86dd2487cdfea56def77b88438a2c915fb45113c5319bfe7e14306ca4cd0b0e1" +dependencies = [ + "libc", +] + +[[package]] +name = "mach" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" +dependencies = [ + "libc", +] + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "matches" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" + +[[package]] +name = "maybe-uninit" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" + +[[package]] +name = "memchr" +version = "2.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525" + +[[package]] +name = "metal" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c4e8a431536529327e28c9ba6992f2cb0c15d4222f0602a16e6d7695ff3bccf" +dependencies = [ + "bitflags", + "block", + "cocoa-foundation", + "foreign-types", + "log", + "objc", +] + +[[package]] +name = "minimp3" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9684a8c55935322fdab159b5d7a6163b33f6e7d32c4a8a54fe53d1bcfad738db" +dependencies = [ + "minimp3-sys", + "slice-deque", +] + +[[package]] +name = "minimp3-sys" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e21c73734c69dc95696c9ed8926a2b393171d98b3f5f5935686a26a487ab9b90" +dependencies = [ + "cc", +] + +[[package]] +name = "miniz_oxide" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "791daaae1ed6889560f8c4359194f56648355540573244a5448a83ba1ecc7435" +dependencies = [ + "adler32", +] + +[[package]] +name = "miniz_oxide" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f2d26ec3309788e423cfbf68ad1800f061638098d76a83681af979dc4eda19d" +dependencies = [ + "adler", + "autocfg", +] + +[[package]] +name = "mio" +version = "0.6.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fce347092656428bc8eaf6201042cb551b8d67855af7374542a92a0fbfcac430" +dependencies = [ + "cfg-if 0.1.10", + "fuchsia-zircon", + "fuchsia-zircon-sys", + "iovec", + "kernel32-sys", + "libc", + "log", + "miow", + "net2", + "slab", + "winapi 0.2.8", +] + +[[package]] +name = "mio-extras" +version = "2.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" +dependencies = [ + "lazycell", + "log", + "mio", + "slab", +] + +[[package]] +name = "miow" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" +dependencies = [ + "kernel32-sys", + "net2", + "winapi 0.2.8", + "ws2_32-sys", +] + +[[package]] +name = "naga" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0873deb76cf44b7454fba7b2ba6a89d3de70c08aceffd2c489379b3d9d08e661" +dependencies = [ + "bitflags", + "fxhash", + "log", + "num-traits", + "spirv_headers", + "thiserror", +] + +[[package]] +name = "ndk" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eb167c1febed0a496639034d0c76b3b74263636045db5489eee52143c246e73" +dependencies = [ + "jni-sys", + "ndk-sys", + "num_enum", + "thiserror", +] + +[[package]] +name = "ndk-glue" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdf399b8b7a39c6fb153c4ec32c72fd5fe789df24a647f229c239aa7adb15241" +dependencies = [ + "android_logger 0.8.6", + "lazy_static", + "libc", + "log", + "ndk", + "ndk-macro", + "ndk-sys", +] + +[[package]] +name = "ndk-macro" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05d1c6307dc424d0f65b9b06e94f88248e6305726b14729fd67a5e47b2dc481d" +dependencies = [ + "darling", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "ndk-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c44922cb3dbb1c70b5e5f443d63b64363a898564d739ba5198e3a9138442868d" + +[[package]] +name = "net2" +version = "0.2.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ebc3ec692ed7c9a255596c67808dee269f64655d8baf7b4f0638e51ba1d6853" +dependencies = [ + "cfg-if 0.1.10", + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "nix" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2e0b4f3320ed72aaedb9a5ac838690a8047c7b275da22711fddff4f8a14229" +dependencies = [ + "bitflags", + "cc", + "cfg-if 0.1.10", + "libc", + "void", +] + +[[package]] +name = "nix" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83450fe6a6142ddd95fb064b746083fc4ef1705fe81f64a64e1d4b39f54a1055" +dependencies = [ + "bitflags", + "cc", + "cfg-if 0.1.10", + "libc", +] + +[[package]] +name = "nom" +version = "5.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af" +dependencies = [ + "memchr", + "version_check", +] + +[[package]] +name = "notify" +version = "5.0.0-pre.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8b946889dfdad884379cd56367d93b6d0ce8889cc027d26a69a3a31c0a03bb5" +dependencies = [ + "anymap", + "bitflags", + "crossbeam-channel", + "filetime", + "fsevent", + "fsevent-sys", + "inotify", + "libc", + "mio", + "mio-extras", + "walkdir", + "winapi 0.3.9", +] + +[[package]] +name = "num-derive" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "num-integer" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2021c8337a54d21aca0d59a92577a029af9431cb59b909b03252b9c164fad59" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca565a7df06f3d4b485494f25ba05da1435950f4dc263440eda7a6fa9b8e36e4" +dependencies = [ + "derivative", + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffa5a33ddddfee04c0283a7653987d634e880347e96b5b2ed64de07efb59db9d" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", + "objc_exception", +] + +[[package]] +name = "objc_exception" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" +dependencies = [ + "cc", +] + +[[package]] +name = "object" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d3b63360ec3cb337817c2dbd47ab4a0f170d285d8e5a2064600f3def1402397" + +[[package]] +name = "oboe" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6a13c9fe73346ff3cee5530b8dd9da1ce3e13cb663be210af3938a2a1dd3eab" +dependencies = [ + "jni 0.14.0", + "ndk", + "ndk-glue", + "num-derive", + "num-traits", + "oboe-sys", +] + +[[package]] +name = "oboe-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68ff7a51600eabe34e189eec5c995a62f151d8d97e5fbca39e87ca738bb99b82" +dependencies = [ + "fetch_unroll", +] + +[[package]] +name = "once_cell" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13bd41f508810a131401606d54ac32a467c97172d74ba7662562ebba5ad07fa0" + +[[package]] +name = "owned_ttf_parser" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb477c7fd2a3a6e04e1dc6ca2e4e9b04f2df702021dc5a5d1cf078c587dc59f7" +dependencies = [ + "ttf-parser", +] + +[[package]] +name = "parking" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" + +[[package]] +name = "parking_lot" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c361aa727dd08437f2f1447be8b59a33b0edd15e0fcee698f935613d9efbca9b" +dependencies = [ + "cfg-if 0.1.10", + "cloudabi", + "instant", + "libc", + "redox_syscall", + "smallvec", + "winapi 0.3.9", +] + +[[package]] +name = "peeking_take_while" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" + +[[package]] +name = "percent-encoding" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" + +[[package]] +name = "percent-encoding" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" + +[[package]] +name = "pin-project" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee41d838744f60d959d7074e3afb6b35c7456d0f61cad38a24e35e6553f73841" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81a4ffa594b66bff340084d4081df649a7dc049ac8d7fc458d8e628bfbbb2f86" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-lite" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c917123afa01924fc84bb20c4c03f004d9c38e5127e3c039bbf7f4b9c76a2f6b" + +[[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.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" + +[[package]] +name = "png" +version = "0.16.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfe7f9f1c730833200b134370e1d5098964231af8450bce9b78ee3ab5278b970" +dependencies = [ + "bitflags", + "crc32fast", + "deflate", + "miniz_oxide 0.3.7", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" + +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml", +] + +[[package]] +name = "proc-macro-hack" +version = "0.5.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" + +[[package]] +name = "proc-macro-nested" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eba180dafb9038b050a4c280019bbedf9f2467b61e5d892dcad585bb57aadc5a" + +[[package]] +name = "proc-macro2" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" +dependencies = [ + "unicode-xid", +] + +[[package]] +name = "qstring" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e" +dependencies = [ + "percent-encoding 2.1.0", +] + +[[package]] +name = "quote" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.15", + "libc", + "rand_chacha", + "rand_core", + "rand_hc", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.15", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core", +] + +[[package]] +name = "range-alloc" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a871f1e45a3a3f0c73fb60343c811238bb5143a81642e27c2ac7aac27ff01a63" + +[[package]] +name = "raw-window-handle" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a441a7a6c80ad6473bd4b74ec1c9a4c951794285bf941c2126f607c72e48211" +dependencies = [ + "libc", +] + +[[package]] +name = "rectangle-pack" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e509b8eba9ca1884760ad1e2161cece724d4fd2b4cb47ddc01706920c6500cd7" + +[[package]] +name = "redox_syscall" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" + +[[package]] +name = "regex" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38cf2c13ed4745de91a5eb834e11c00bcc3709e773173b2ce4c56c9fbde04b9c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", + "thread_local", +] + +[[package]] +name = "regex-syntax" +version = "0.6.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b181ba2dcf07aaccad5448e8ead58db5b742cf85dfe035e2227f137a539a189" + +[[package]] +name = "ring" +version = "0.16.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b72b84d47e8ec5a4f2872e8262b8f8256c5be1c938a7d6d3a867a3ba8f722f74" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin", + "untrusted", + "web-sys", + "winapi 0.3.9", +] + +[[package]] +name = "rle-decode-fast" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cabe4fa914dec5870285fa7f71f602645da47c486e68486d2b4ceb4a343e90ac" + +[[package]] +name = "rodio" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9683532495146e98878d4948fa1a1953f584cd923f2a5f5c26b7a8701b56943" +dependencies = [ + "cpal", + "minimp3", +] + +[[package]] +name = "ron" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8a58080b7bb83b2ea28c3b7a9a994fd5e310330b7c8ca5258d99b98128ecfe4" +dependencies = [ + "base64 0.12.3", + "bitflags", + "serde", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e3bad0ee36814ca07d7968269dd4b7ec89ec2da10c4bb613928d3077083c232" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver", +] + +[[package]] +name = "rustls" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b25a18b1bf7387f0145e7f8324e700805aade3842dd3db2e74e4cdeb4677c09e" +dependencies = [ + "base64 0.10.1", + "log", + "ring", + "sct", + "webpki", +] + +[[package]] +name = "rusty-xinput" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2aa654bc32eb9ca14cce1a084abc9dfe43949a4547c35269a094c39272db3bb" +dependencies = [ + "lazy_static", + "log", + "winapi 0.3.9", +] + +[[package]] +name = "ryu" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scoped_threadpool" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8" + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "sct" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3042af939fca8c3453b7af0f1c66e533a15a86169e39de2657310ade8f98d3c" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + +[[package]] +name = "serde" +version = "1.0.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b88fa983de7720629c9387e9f517353ed404164b1e482c970a90c1a4aaf7dc1a" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbd1ae72adb44aab48f325a02444a5fc079349a8d804c1fc922aed3f7454c74e" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.59" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcac07dbffa1c65e7f816ab9eba78eb142c6d44410f4eeba1e26e4f5dfa56b95" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" + +[[package]] +name = "shaderc" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50b8aeaae10b9bda5cba66736a7e265f67698e912e1cc6a4678acba286e22be9" +dependencies = [ + "libc", + "shaderc-sys", +] + +[[package]] +name = "shaderc-sys" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b12d7c62d6732884c9dfab587503fa3a795b108df152415a89da23812d4737e" +dependencies = [ + "cmake", + "libc", +] + +[[package]] +name = "shlex" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2" + +[[package]] +name = "slab" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" + +[[package]] +name = "slice-deque" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31ef6ee280cdefba6d2d0b4b78a84a1c1a3f3a4cec98c2d4231c8bc225de0f25" +dependencies = [ + "libc", + "mach 0.3.2", + "winapi 0.3.9", +] + +[[package]] +name = "smallvec" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7acad6f34eb9e8a259d3283d1e8c1d34d7415943d4895f65cc73813c7396fc85" +dependencies = [ + "serde", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spirv-reflect" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cecc7af6a7d3ca6d15f4d6b5077df89c77ad1f4b314d0cabee221656d041dad7" +dependencies = [ + "bitflags", + "cc", + "num-traits", + "serde", + "serde_derive", + "spirv_headers", +] + +[[package]] +name = "spirv_cross" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea964c42ce40326fe96111918abe71fa45076da1ea85769f3f1ab1cda9a1d496" +dependencies = [ + "cc", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "spirv_headers" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f5b132530b1ac069df335577e3581765995cba5a13995cdbbdbc8fb057c532c" +dependencies = [ + "bitflags", + "num-traits", +] + +[[package]] +name = "stdweb" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef5430c8e36b713e13b48a9f709cc21e046723fe44ce34587b73a830203b533e" + +[[package]] +name = "stdweb" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5" +dependencies = [ + "discard", + "rustc_version", + "serde", + "serde_json", + "stdweb-derive", + "stdweb-internal-macros", + "stdweb-internal-runtime", + "wasm-bindgen", +] + +[[package]] +name = "stdweb-derive" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "serde_derive", + "syn", +] + +[[package]] +name = "stdweb-internal-macros" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11" +dependencies = [ + "base-x", + "proc-macro2", + "quote", + "serde", + "serde_derive", + "serde_json", + "sha1", + "syn", +] + +[[package]] +name = "stdweb-internal-runtime" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" + +[[package]] +name = "storage-map" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418bb14643aa55a7841d5303f72cf512cfb323b8cc221d51580500a1ca75206c" +dependencies = [ + "lock_api", +] + +[[package]] +name = "stretch" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b0dc6d20ce137f302edf90f9cd3d278866fd7fb139efca6f246161222ad6d87" +dependencies = [ + "lazy_static", + "libm", +] + +[[package]] +name = "strsim" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" + +[[package]] +name = "svg_fmt" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fb1df15f412ee2e9dfc1c504260fa695c1c3f10fe9f4a6ee2d2184d7d6450e2" + +[[package]] +name = "syn" +version = "1.0.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc371affeffc477f42a221a1e4297aedcea33d47d19b61455588bd9d8f6b19ac" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "take_mut" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" + +[[package]] +name = "tar" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "489997b7557e9a43e192c527face4feacc78bfbe6eed67fd55c4c9e381cba290" +dependencies = [ + "filetime", + "libc", + "redox_syscall", + "xattr", +] + +[[package]] +name = "thiserror" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e9ae34b84616eedaaf1e9dd6026dbe00dcafa92aa0c8077cb69df1fcfe5e53e" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ba20f23e85b10754cd195504aebf6a27e2e6cbe28c17778a0c930724628dd56" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thread_local" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "thunderdome" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7572415bd688d401c52f6e36f4c8e805b9ae1622619303b9fa835d531db0acae" + +[[package]] +name = "time" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" +dependencies = [ + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", + "winapi 0.3.9", +] + +[[package]] +name = "tinyvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b78a366903f506d2ad52ca8dc552102ffdd3e937ba8a227f024dc1d1eae28575" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" + +[[package]] +name = "toml" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75cf45bb0bef80604d001caaec0d09da99611b3c0fd39d3080468875cdb65645" +dependencies = [ + "serde", +] + +[[package]] +name = "tracing" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0987850db3733619253fe60e17cb59b82d37c7e6c0236bb81e4d6b87c879f27" +dependencies = [ + "cfg-if 0.1.10", + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f50de3927f93d202783f4513cda820ab47ef17f624b03c096e86ef00c67e6b5f" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "ttf-parser" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7622061403fd00f0820df288e5a580e87d3ce15a1c4313c59fd1ffb77129903f" + +[[package]] +name = "typed-arena" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0685c84d5d54d1c26f7d3eb96cd41550adb97baed141a761cf335d3d33bcd0ae" + +[[package]] +name = "unicode-bidi" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" +dependencies = [ + "matches", +] + +[[package]] +name = "unicode-normalization" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1e9a0b71dba18b6fa17c7b3dcf1440bb3522552deb2f84bf47dabd9fb7e5570" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-xid" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" + +[[package]] +name = "unreachable" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" +dependencies = [ + "void", +] + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "ureq" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "801125e6d1ba6864cf3a5a92cfb2f0b0a3ee73e40602a0cd206ad2f3c040aa96" +dependencies = [ + "base64 0.11.0", + "chunked_transfer", + "cookie", + "lazy_static", + "qstring", + "rustls", + "url 2.2.0", + "webpki", + "webpki-roots", +] + +[[package]] +name = "url" +version = "1.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" +dependencies = [ + "idna 0.1.5", + "matches", + "percent-encoding 1.0.1", +] + +[[package]] +name = "url" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5909f2b0817350449ed73e8bcd81c8c3c8d9a7a5d8acba4b27db277f1868976e" +dependencies = [ + "form_urlencoded", + "idna 0.2.0", + "matches", + "percent-encoding 2.1.0", +] + +[[package]] +name = "uuid" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fde2f6a4bea1d6e007c4ad38c6839fa71cbb63b6dbf5b595aa38dc9b1093c11" +dependencies = [ + "rand", + "serde", +] + +[[package]] +name = "vec-arena" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eafc1b9b2dfc6f5529177b62cf806484db55b32dc7c9658a118e11bbeb33061d" + +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" + +[[package]] +name = "version_check" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" + +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" + +[[package]] +name = "waker-fn" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" + +[[package]] +name = "walkdir" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "777182bc735b6424e1a57516d35ed72cb8019d85c8c9bf536dccb3445c1a2f7d" +dependencies = [ + "same-file", + "winapi 0.3.9", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.10.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" + +[[package]] +name = "wasm-bindgen" +version = "0.2.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ac64ead5ea5f05873d7c12b545865ca2b8d28adfc50a49b84770a3a97265d42" +dependencies = [ + "cfg-if 0.1.10", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f22b422e2a757c35a73774860af8e112bff612ce6cb604224e8e47641a9e4f68" +dependencies = [ + "bumpalo", + "lazy_static", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7866cab0aa01de1edf8b5d7936938a7e397ee50ce24119aef3e1eaa3b6171da" +dependencies = [ + "cfg-if 0.1.10", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b13312a745c08c469f0b292dd2fcd6411dba5f7160f593da6ef69b64e407038" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f249f06ef7ee334cc3b8ff031bfc11ec99d00f34d86da7498396dc1e3b1498fe" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d649a3145108d7d3fbcde896a468d1bd636791823c9921135218ad89be08307" + +[[package]] +name = "web-sys" +version = "0.3.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bf6ef87ad7ae8008e15a355ce696bed26012b7caa21605188cfd8214ab51e2d" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab146130f5f790d45f82aeeb09e55a256573373ec64409fc19a6fb82fb1032ae" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "webpki-roots" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91cd5736df7f12a964a5067a12c62fa38e1bd8080aff1f80bc29be7c80d19ab4" +dependencies = [ + "webpki", +] + +[[package]] +name = "wgpu" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "549160f188eef412ac978499ddf0ceadad4c9159bb1160f9e6b9d4cc8ee977dc" +dependencies = [ + "arrayvec", + "futures", + "gfx-backend-vulkan", + "js-sys", + "objc", + "parking_lot", + "raw-window-handle", + "smallvec", + "tracing", + "typed-arena", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "wgpu-core", + "wgpu-types", +] + +[[package]] +name = "wgpu-core" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea487deeae90e06d77eb8e6cef945247774e7c0a0a226d238b31e90633594365" +dependencies = [ + "arrayvec", + "bitflags", + "copyless", + "fxhash", + "gfx-backend-dx11", + "gfx-backend-dx12", + "gfx-backend-empty", + "gfx-backend-metal", + "gfx-backend-vulkan", + "gfx-descriptor", + "gfx-hal", + "gfx-memory", + "naga", + "parking_lot", + "raw-window-handle", + "smallvec", + "thiserror", + "tracing", + "wgpu-types", +] + +[[package]] +name = "wgpu-types" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e3529528e608b54838ee618c3923b0f46e6db0334cfc6c42a16cf4ceb3bdb57" +dependencies = [ + "bitflags", +] + +[[package]] +name = "winapi" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-build" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "winit" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5bc559da567d8aa671bbcd08304d49e982c7bf2cb91e10288b9188931c1b772" +dependencies = [ + "bitflags", + "cocoa", + "core-foundation 0.9.1", + "core-graphics 0.22.1", + "core-video-sys", + "dispatch", + "instant", + "lazy_static", + "libc", + "log", + "mio", + "mio-extras", + "ndk", + "ndk-glue", + "ndk-sys", + "objc", + "parking_lot", + "percent-encoding 2.1.0", + "raw-window-handle", + "wasm-bindgen", + "web-sys", + "winapi 0.3.9", + "x11-dl", +] + +[[package]] +name = "wio" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d129932f4644ac2396cb456385cbf9e63b5b30c6e8dc4820bdca4eb082037a5" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "ws2_32-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" +dependencies = [ + "winapi 0.2.8", + "winapi-build", +] + +[[package]] +name = "x11" +version = "2.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ecd092546cb16f25783a5451538e73afc8d32e242648d54f4ae5459ba1e773" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "x11-dl" +version = "2.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf981e3a5b3301209754218f962052d4d9ee97e478f4d26d4a6eced34c1fef8" +dependencies = [ + "lazy_static", + "libc", + "maybe-uninit", + "pkg-config", +] + +[[package]] +name = "xattr" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "244c3741f4240ef46274860397c7c74e50eb23624996930e484c16679633a54c" +dependencies = [ + "libc", +] diff --git a/2020/Cargo.toml b/2020/Cargo.toml new file mode 100644 index 0000000..8a7f35d --- /dev/null +++ b/2020/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "advent-of-code-2020" +version = "0.1.0" +authors = ["Justin Wernick <justin@worthe-it.co.za>"] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +bevy = "0.3.0" +thiserror = "1.0.22"
\ No newline at end of file diff --git a/2020/inputs/day_1.txt b/2020/inputs/day_1.txt new file mode 100644 index 0000000..fbbfa17 --- /dev/null +++ b/2020/inputs/day_1.txt @@ -0,0 +1,200 @@ +1337 +1906 +2007 +1939 +818 +1556 +2005 +1722 +1484 +1381 +1682 +1253 +1967 +1718 +2002 +1398 +1439 +1689 +1746 +1979 +1985 +1387 +1509 +1566 +1276 +1625 +1853 +882 +1750 +1390 +1731 +1555 +1860 +1675 +1457 +1554 +1506 +1639 +1543 +1849 +1062 +1869 +1769 +1858 +1916 +1504 +1747 +1925 +1275 +1273 +1383 +1816 +1814 +1481 +1649 +1993 +1759 +1949 +1499 +1374 +1613 +1424 +783 +1765 +1576 +1933 +1270 +1844 +1856 +1634 +1261 +1293 +1741 +668 +1573 +1599 +1877 +1474 +1918 +476 +1515 +1029 +202 +1589 +1867 +1503 +1582 +1605 +1557 +587 +1462 +1955 +1806 +1834 +1739 +1343 +1594 +1622 +1972 +1527 +1798 +1719 +1866 +134 +2000 +1992 +1966 +1909 +1340 +1621 +1921 +1256 +1365 +1314 +1748 +1963 +1379 +1627 +1848 +1977 +1917 +1826 +1716 +1631 +1404 +1936 +1677 +1661 +1986 +1997 +1603 +1932 +1780 +1902 +2009 +1257 +1871 +1362 +1662 +1507 +1255 +1539 +1962 +1886 +1513 +1264 +1873 +1700 +807 +1426 +1697 +1698 +1519 +1791 +1240 +1542 +1497 +1761 +1640 +1502 +1770 +1437 +1333 +1805 +1591 +1644 +1420 +1809 +1587 +1421 +1540 +1942 +470 +1940 +1831 +1247 +1632 +1975 +1774 +1919 +1829 +1944 +1553 +1361 +1483 +1995 +1868 +1601 +1552 +1854 +1490 +1855 +1987 +1538 +1389 +1454 +1427 +1686 +1456 +1974 diff --git a/2020/inputs/day_10.txt b/2020/inputs/day_10.txt new file mode 100644 index 0000000..fa8ea01 --- /dev/null +++ b/2020/inputs/day_10.txt @@ -0,0 +1,111 @@ +71 +183 +111 +89 +92 +142 +25 +101 +52 +86 +18 +22 +70 +2 +135 +163 +34 +143 +153 +35 +144 +24 +23 +94 +100 +102 +17 +57 +76 +182 +134 +38 +7 +103 +66 +31 +11 +121 +77 +113 +128 +82 +99 +148 +137 +41 +32 +48 +131 +60 +127 +138 +73 +28 +10 +84 +180 +63 +125 +53 +176 +165 +114 +145 +152 +72 +107 +167 +59 +164 +78 +126 +118 +136 +83 +79 +58 +14 +106 +69 +51 +39 +157 +42 +177 +173 +93 +141 +3 +33 +13 +19 +45 +154 +95 +170 +54 +181 +6 +151 +1 +112 +96 +115 +85 +108 +166 +160 +40 +122 +12 diff --git a/2020/inputs/day_11.txt b/2020/inputs/day_11.txt new file mode 100644 index 0000000..977ae5f --- /dev/null +++ b/2020/inputs/day_11.txt @@ -0,0 +1,90 @@ +LLLLL.LLLLLL.LLLLLLLLL.LLL.LL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLL.LLLLLLLLLL.LLLLLLL +LLLLL.LLLLLL.LLLLLLLLLLLLLLL.LLLLLLLL.LLLLL.LLL.LLLLLL.LLLL.LLLLL.LLLLLLLLLLL.LLLLLLLL.LLLLLLLLL +LLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLLLL +LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLL.LLLL.L.LLLLLLLLLLLLLLLLLLLLLLLLL.LLL.LLLL +LLLLL.L.LLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLL.LLLL.L.LLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLLLL +LLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLLLL.LLLLLLLLL.LLLLLLLL +L.LL.L.L.LL.....L.L..L.LL.L.L.L.....L..LLL.L.....L.L...LL..L.....L...L..L.LLLL..L.LL......L.L.L. +LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLL +LLLLL.LLLLLLLLLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLL.LLLLLLLLLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLL +LLLLL.LLLLLL.LLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLL.LLLLLL.LLLL.LLLLLLLLL.LLLLLLLL +LLLLL.LLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.L.LLLLLLLLL.LLLLL.LLLLLLLLLLL.LLLLLLLLL.LLLLLLL. +LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLL.LLLL.LLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLL +......LL..LLLL.L...LL.....L.L.......L..L.LL....L.LLL........L.L.L.LL.....L.........L....L......L +LLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLL.LL.LLLLL.LLLLLLLLLLL.LLLLLLLLL.LLLLLLLL +LLLLL.LLLLLL..LLLLLLL..LLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLL.LLL.LLLL.LLLLLLLLLLLLLLLLLL +LLLLL.LLLLLL.LLLLLLLLL.L.LLLL.LLLLLLLLLLLLLLLLL.LLLLLL.LLLL.L.LLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLLLL +LLLLL.LLLLLLLLLLLLLLLLLLLLLLL.LLLLLL..LLLLL.LLL.LLLLLL.LLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLL.LLLLLLLL +LLLLL.LLLLLL.LLLLLLLLL.LLLL.L.LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLL.LLLLLLLLLLL.LLLLLLLLL.LLLLLLLL +LLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLL.LLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLL +.L...L...L.....L...L....L.LL.LLL.LL...LL.L..L...L......L..LL..L..LL..L.L......L.L.LLL......L.L.. +LLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLLLL +LLLLL.LLLLL.LLLLLLLLLLLLLLLLL.L.LLLLL.LLLLLLLLLLLLLLLL.LLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLL +LLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LLLL.LLL.L.LLLLLL.LLLLLLLLLLLLLL.LLLLLLLL +LLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLL.LLLLLLL.LLL.LLLLL.LLLLLL.LLLL.LLLLLLLLL.LLLLLLLL +LLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLL.LLLLLLLLLLL.LL.LL.LLLLLL.LLLL.LLLLLLLLL.LLLLLLLL +...........LLL.....LLL.....LL.L..........L..L.L.L...L.L.....L........L......L..L..L...LL....L.L. +LLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLL.LLLLL.LLLLL.LLLLL.LLLLLLLLL.LLLLLLLL +LLLLL.LLLLLL.LLLLLLLLL.LLLLL.LLLL.L.LLLL.LLLLLL.LLLLLL.LLLL.LLLLL.LLLLLL.LLLL.LLLLLLLLL.LLLLLLLL +LLLLL.LLLLLLLLLLLL.LLL.LLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLL.LLLLLLLLLLLL.LLLL.LLLLLLL.L.LLLLLLLL +LLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLL.LLLL.LLLLLLLLLLLLLLLLLL +LLLLL.LLLLLL.L.LLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLLLLLLLLL.LLLL.LLLLLLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLL +.LLLL.LLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLL.LLLLLL.LLLL.LLLLL.LLLLLL.LLLL.LLLL.LLLLLLLLLLLLL +L.......LL...LL...L..L.....L..LL..L.L.LLL.L.L..L.LL.L.........L....LLLL..LL..L.L..L..LLLL..LL.L. +LLLLL.LLLLLL.LLL.LLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLL.LLLLLL..LLL.LLLLLLLLL.LLLLLLLL +LLLLL.LLLLLL.LLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLL +LLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLL.LLLLLLLLLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLL.LLLLLLLL +LLLLL.LLLLLL.LLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LLLL.LLLLL.LLLLLL.LLLL.LLLLLLLLL.LLLLLLLL +LLLLL.LLLLLLLLLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LL.LLLLLLLL +LLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLL.LLLLLLLLLLL.LLLLLLLLL.LLLLLLLL +....LLL.LL....L.L.........L.L............L..L...L.LLLL......L...L.L..L....L.......L..L.......... +LLLLLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLL..LLLLLLLL.LLLLLL.LL.L.LLLLL.LLLLLL.LLLLLL.LLLLLLL.LLLLLLLL +LLLLLLLLLLLL.LL.L.LLLL.LLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLL.LLLLLL.LLLL.LLLLLLLLL.LLLLLLLL +LLLLL.LLLLLL.LLLLLLLLLLLLLLLL.L..LLL..LLLLLLLLL.LLLLLL.LLLL.L.LLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLL +LLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLL.LLLLLL.LLLL.LLLLL..LLLLL.LLLLLLLLL.LLLL.LLLLLLLL +LLLLL.LLLLLL.LLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLL +.L..LLLL..L.L.LLL.......LL.LL.LL......L.L....L.LLL.......L...L.L.LL...LL.....L.L....L.L...L.L... +LLLLL.LLLLLL.LLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLL.LLLL.LLLLLLLLL.LLLLLLLL +LLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLLLLLL.LLLL +LLLLL.LL.LLL.LLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLL.LLLL..LLLLLL.LLLLLLLLLLLLLLLLLLLLLLL +LLLLL.LLLLLL..LLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLL.LLLL.LLLLLLLLL.LLLLL.LL +LLL.LLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLLLLLLLL +LLLL.LLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLL.LLLL.LLLLL.LLLLLLLLLL.LLLLLLLLLLLLLLLLLLL +.L..L..LLL....LL......LL.L.L..LL..LL....L...L..L.L.L...L..L..L.LLLL.L....L.....L..L...L...LLL... +LLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLL.LLLLL.LLLLLLLLLLL.LLLLLLLLL.LLLLLLLL +LLLLLLLLLLLLL.LLLLLLLL.LLLLLL.LLLLLLLLLLLLLLL.L.LLLLLL.LLLL.LLL.LLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLL +LLLLLLLLLLLL.LLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL +LLLLL.LLLLLL.LLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.LL.LLL.LLLLLLLLLL.LLLLLL.LLLL.LLLLLLLLLLLLLLLLLL +LLLLL.LLLLLLLLLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLLLLLLLLL.LLLL.LLLLLLLLLLLL.LLLLLLLL.LLLLL.LLLLLLLL +LLLLL.LLLLLLLLLLLLLLL..LLLLLLLLLLLLLL.LLLLLL.LL.LLLLLLLLLLL.L.LLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLL +..LL.LL.L.LL.L...L..L..L..L...LL........L......LL.LLLL.......L..LLL.L.L....L.....L..LL..L.LL.LL. +LLLLL.LLLL.L.LLLLL.LLL.LLLLLL.LLLLLLL.LL.LLLLLL.LLLLLL.LLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLL.LLLLLLLL +LLLLL.LLLLLL.LLLLLLLLL..LLLLL.LLLLLLL.LLLL.LLLLLLLLLLL.LLLL..LLLL.LLLLLLLLLLL.LLLLLLLLLLLLL.LLLL +LLLLL.LLLLLLLLLLLLLLL.L.LLLLL.LLLLLLLLLLLLLLLLL.LLLLLL.LLLL.LLLLLLLLL.LL.LLLL.LLLLLLLLL.LLLLLLLL +LLLLL.LLLLLL.LLLLLLLLL.LLLLL..LLLLLLLLLLLLLLL.L.LLLLLLLLLLL.LLLLLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLL +LLLLL.LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLL.LLLL.LL.LL.LLL.LL.LLLLLLLLLLLLLL.LLLLLLLL +LLLLL.LLLLLL.LLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLL.LLLL.LLLLLLLLL.LLLLLLLL +LLLLL..LLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLL..LLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL +.LL..LL.L.LL......L.L.LL...L..LL..LL...L..L.L..LL...L.L..L.....L.LLL..L..LL.L..L.......L..LLL... +LLLLL.LLLLLL.LLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLLLL +LLLLLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLL.LLLLL.LLLLLLLLLLLLLLLLL +LLLLL.LLLLLLLLLLLLLLLL.LLLLLLLL.LLLLL.LLLLLLLLL.LLLLLL.LLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLL +LLLLL..LLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLL..LLLL.LLLLLLLLL.LLLLLLLL +LLLLL.LLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLL.LLLLLLLLLLLLLL.LLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLL +LLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLL.LLLLLLLLL.LLLL.LLL.L.LLLLLL.LLLLLLLLLLLLLL.LLLLLLLL +LLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLL.LLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLL +LLLLL.LLL.LL.LLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLL.LL.LLL.LLLL.LLLLL.LLLLLL.LL.L.LLLLLLLLL.LLLLLLLL +LLLLL.LLLLLL.LLLLLLLLL.L.LLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLL.LLLL.LLLLLLLLL.LLLLLLLL +.L.L....LLL.L.L........L..L....L..L...LL..L..LLL..L.L....L..L.LL....LL.L.L.....L........L..L.L.. +LLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLL.LLLLLL.LLLL.LLLLLLLLL.LLLLLLLL +LLLLLLLLLL.LLLLLLLLLLL.LLLLLLLLLLLLLL.LL.LLLLLLLLLLLLL.LLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLL.LLLLLLLL +LLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLL.LLLLL.LLLLLLLLLLL.LLLLLLLLLLLLLL.LLL +LLLLL.LLLLLL.LLLLLLLLLLLLLL.L.LLLLLLL.LLLLLLLL.LLLLLLL.LLLL.LLLLL.LLLLLL.LLLL.LLLLL.LL..LLLLLLLL +LLLLL.LLLLLL.LLLLLLLLL.L.LLLL.LLLLLLL.LLLLLLLLL.LLLLLLLLLLL.LLLLL.LLLLLLLLLLL.LLLLLLLLL.LLLLLLLL +LLLLLLLLLLLL.LLLLLLLLLLLLL.LL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLL +LLLLL.LLLLLLLLLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLL.LLLLLLLLL.LLLLLLLL +LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLLL.LLLLL.LLLLLL.LLLL.LLLLLLLLLLLLLLLLLL +LLLL..L.LLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLLLLLLLLL.LLLL.LLLLL.LLLLLLLLLLL.LLLLLLLLL.LLLLLLLL +LLLLL..LLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLL.LLLLLLLLL.LLLLLL..LLLLLLLLL.LLLLLLLL +LLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLL.LLLLLLLLLLLLLLLLLLL.L.LL..LLLLLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLL diff --git a/2020/inputs/day_12.txt b/2020/inputs/day_12.txt new file mode 100644 index 0000000..d7bc269 --- /dev/null +++ b/2020/inputs/day_12.txt @@ -0,0 +1,755 @@ +F93 +R90 +F81 +E3 +F80 +R90 +W4 +R90 +F64 +N1 +R90 +W4 +F11 +W1 +L180 +F28 +R90 +W4 +L180 +F95 +N3 +F71 +L90 +W1 +F1 +E2 +L90 +F85 +W3 +L90 +F28 +E3 +N5 +F47 +S2 +R90 +N2 +L90 +W4 +L180 +W3 +F51 +F77 +L90 +W5 +N5 +W3 +S5 +W5 +R180 +N1 +W3 +S5 +F36 +W1 +F34 +N4 +F40 +E2 +S3 +R90 +W5 +S2 +N4 +R90 +S2 +L90 +N4 +L90 +S2 +E1 +F2 +N4 +F65 +N1 +F46 +R180 +F60 +N4 +F45 +R90 +S3 +L90 +F70 +W4 +L270 +N4 +F49 +E3 +F52 +R180 +F5 +E5 +R90 +F43 +L90 +S4 +F54 +N1 +F7 +S2 +F91 +S4 +N3 +E3 +S4 +L180 +F15 +S2 +F90 +W5 +S2 +F80 +N4 +L90 +R90 +N4 +E2 +R180 +E5 +F62 +L90 +N5 +F77 +N5 +F75 +E2 +L90 +S4 +F55 +E1 +N5 +F57 +R90 +F6 +L90 +N3 +E5 +L180 +N2 +L270 +N5 +F8 +E2 +F88 +E3 +N3 +E4 +R90 +N1 +W5 +R90 +N4 +E3 +S3 +R90 +N1 +E2 +F4 +N4 +R90 +N3 +W5 +L180 +E1 +F2 +N4 +W5 +F80 +S4 +F7 +L180 +F96 +L90 +F16 +L90 +E4 +F78 +W2 +R90 +S3 +F29 +W4 +R90 +E4 +F39 +N1 +F48 +E4 +L180 +E1 +R180 +E2 +R90 +N3 +R180 +W2 +N5 +W5 +E3 +F25 +E1 +L180 +N5 +F44 +L90 +N4 +W4 +L90 +F72 +L90 +S1 +E5 +N5 +R90 +N1 +W3 +S5 +R90 +W1 +F14 +L90 +W2 +R90 +W3 +F76 +S5 +W5 +F93 +W4 +R90 +F57 +E3 +R90 +S3 +W1 +R90 +S3 +F8 +R90 +N2 +F46 +W4 +S1 +L90 +E4 +W5 +L90 +W2 +F69 +N5 +W5 +F80 +N3 +E4 +L90 +E4 +F25 +S3 +R180 +F77 +R90 +W2 +F19 +E4 +L180 +W2 +F37 +S2 +F68 +L90 +E2 +F66 +S1 +R90 +F66 +E2 +L180 +F97 +N3 +W4 +F43 +S4 +R180 +N1 +R270 +E3 +N2 +N3 +F65 +L90 +S2 +L90 +N3 +L90 +S3 +F23 +L270 +W3 +S5 +E2 +R90 +S1 +F85 +N3 +R90 +W4 +F58 +E1 +L90 +N3 +L90 +E2 +S1 +F14 +E2 +N5 +W1 +N3 +E1 +L90 +E3 +F43 +E3 +N3 +F21 +E4 +F53 +E2 +L180 +E4 +F20 +E2 +N2 +E5 +L90 +N4 +W3 +N4 +S2 +L90 +W3 +F96 +L90 +S3 +R90 +N1 +E3 +S5 +L270 +F41 +N5 +W5 +S1 +W5 +R90 +F79 +W3 +L90 +E3 +F22 +N1 +L90 +E2 +L90 +R90 +F20 +L90 +W3 +R90 +W2 +L180 +W4 +F57 +R180 +N3 +L90 +F36 +L90 +E2 +R90 +N2 +E3 +N1 +W4 +W4 +N3 +E5 +F54 +R180 +F98 +W1 +R90 +F21 +S1 +L90 +S2 +L90 +S2 +F90 +E4 +S2 +R90 +N5 +F25 +N4 +W3 +N2 +F27 +S3 +E3 +N3 +F15 +L180 +S4 +F62 +W2 +L180 +E2 +N2 +L90 +R90 +F97 +R90 +S1 +R90 +E2 +F16 +W2 +E1 +F89 +W1 +L180 +S3 +W2 +S3 +E1 +F92 +F30 +N1 +E2 +S1 +F76 +E1 +S5 +W5 +F28 +W4 +L90 +F44 +E4 +N5 +F25 +R90 +F59 +S4 +F58 +S2 +F19 +W5 +S4 +E5 +N3 +F37 +E1 +L90 +F40 +E5 +F56 +S2 +W5 +F73 +N5 +F2 +L90 +F18 +E2 +N5 +L90 +F56 +R90 +F18 +W1 +S5 +E1 +N1 +L90 +W2 +E4 +N4 +E1 +W4 +N4 +L90 +N3 +R90 +W5 +S5 +F2 +R180 +F96 +R90 +W3 +F26 +L90 +S4 +E2 +F43 +S2 +R90 +F61 +W5 +F93 +R90 +F95 +L90 +E4 +R90 +N4 +F47 +R90 +W5 +L90 +F42 +L90 +W5 +F87 +R90 +N1 +N2 +E4 +F64 +S5 +L270 +F86 +S4 +W3 +S1 +L90 +F72 +R270 +W1 +F17 +S1 +E2 +R90 +W1 +N1 +F42 +N5 +L90 +F87 +F66 +L90 +N2 +W2 +L90 +S5 +F7 +R90 +N4 +L270 +F2 +W1 +N4 +F94 +W5 +R180 +S4 +F15 +E4 +F76 +N1 +E2 +F68 +S3 +F50 +R270 +E5 +F77 +R90 +S3 +E2 +N3 +S4 +F39 +S1 +E5 +S3 +L90 +E4 +S2 +W3 +F54 +R90 +F44 +L90 +W3 +F59 +R90 +N3 +F37 +E1 +F75 +R90 +F31 +W3 +F70 +S5 +L90 +E1 +F67 +W4 +L90 +S1 +W5 +S1 +S4 +W2 +E2 +S3 +R90 +S2 +E5 +L90 +F43 +R90 +E1 +S5 +F42 +L90 +W1 +N2 +E1 +L180 +S4 +W1 +L90 +F81 +E1 +R180 +N5 +R180 +N5 +L180 +F65 +R90 +F64 +W4 +S4 +R90 +F70 +E1 +S1 +F50 +E2 +S4 +E4 +N2 +S1 +R90 +E4 +R90 +F70 +R90 +N4 +F71 +R180 +F80 +S3 +L90 +N5 +L180 +F11 +N1 +R90 +W2 +N1 +R90 +W4 +R90 +F67 +W3 +R90 +W5 +L90 +E4 +F90 +L90 +N4 +L180 +F48 +R90 +W2 +F94 +R90 +N4 +L90 +W2 +F2 +L90 +W1 +E5 +S2 +W5 +S5 +E2 +N3 +W5 +N1 +F98 +S3 +W3 +L90 +S3 +W4 +R90 +W1 +F64 +N5 +R90 +S5 +W5 +F84 +S1 +E3 +L90 +S3 +E5 +F6 +N4 +W1 +R90 +E4 +F14 +N1 +R90 +F31 +L90 +F24 +F4 +N4 +F54 +S3 +R270 +F98 +E1 +L180 +F2 +E4 +F70 +W1 +R180 +N5 +F23 diff --git a/2020/inputs/day_2.txt b/2020/inputs/day_2.txt new file mode 100644 index 0000000..3a0963f --- /dev/null +++ b/2020/inputs/day_2.txt @@ -0,0 +1,1000 @@ +15-16 l: klfbblslvjclmlnqklvg +6-13 h: pghjchdxhnjhjd +4-13 n: nnznntzznqnzbtzj +10-16 r: nrrrrkrjtxwrrrwx +1-6 t: rttftttttttttmdttttt +4-12 l: zhllfxlmvqtnhx +6-8 d: wxpwgdbjtffddkb +7-9 q: rqcqxjqhsm +6-8 x: xxxfxdxxx +5-9 d: dwnwnbsddfmc +2-6 j: jvdrrjchml +8-10 x: xxxcxxxzxxxxx +15-16 f: ffffffffffffffnfc +3-12 v: vgvvvvvvvvfqvvvv +2-5 p: tknppm +11-12 r: frrnrfqtshrgw +13-16 f: rfjmkrqkqrxmfnqj +3-5 f: ffffxffn +2-4 f: fffwf +11-13 s: srslssshssssx +1-6 c: cccdcn +2-6 t: tthhnc +12-17 w: wwwwwwwwwwwmwwwwg +5-6 k: kqkksskkp +4-5 p: ppppx +5-12 h: hbjhqhdwnqxhhsh +6-8 p: ppgzpppw +3-4 z: zzcz +6-15 x: hfvxxsqbfxxlhpxtb +4-7 m: qmxzhgt +18-20 b: fvzbbrbcvskxrpkwnmwb +1-11 c: ccccccccccggccc +1-3 p: dppp +2-6 j: fjbmljmdb +2-4 l: slpmqpk +3-5 b: stbpbbndtgzxlsnbdk +6-11 h: hlzkdhhhrhchmhbhl +1-4 w: wwpv +10-12 p: pmpppkpppgph +11-14 f: fbdxffpffffffkfffjvf +4-9 v: vkvfhfvvrvvv +16-17 t: tmtbztrptdlvttvkt +2-6 w: wwwwphwwwwnwwj +6-11 x: xxxxxxxxxxkxx +9-10 t: ttftchttnd +2-9 w: wkwwwwwwlww +2-4 g: ggvcgggggggggg +5-6 d: dldddsddddddd +5-8 j: jddjjnld +9-12 l: xldxlklvlkll +2-3 w: xwnrwdwndlvl +16-18 m: mmmmrmmmmmrvvmmvmm +3-4 t: ctts +11-12 b: ndgjdbppcdbhhssw +2-11 s: nssksssnssxvq +2-5 g: qggwcvf +10-14 l: llxlllrjlmlllwllll +8-9 w: wwwwfpwtvtjwjw +8-10 m: mmmmmmmmmmm +1-11 z: rldjzzzpzzs +16-17 v: qvsrnvvvwxgmvjjcvhcx +14-18 k: kkkkkkkkkkkkkkkkklk +2-3 q: qqrqqqxqqqq +4-9 c: lclckhcgn +2-3 b: nbbbbldlbbb +15-18 v: vtvvrvxvvnvxhvnvvv +4-7 q: qqqnqqqq +3-13 j: svjjdcnkwnbpl +4-11 q: blnqvqsngwj +3-4 j: dxdkj +5-7 c: dzxbsctqwclcgc +3-4 f: jfhffff +3-5 t: sttwk +7-8 t: tnqtvsztqwpvtftknt +1-12 r: grrrrrrrrrrrrrrr +7-8 k: kkkkkkqkk +3-4 l: llls +1-14 h: khhhjhhhhhhhhh +3-5 d: ttcdddd +1-7 w: dqwhwkww +4-5 p: pppqppppp +10-14 l: lqlltwlllllllzjk +15-17 d: ddddddddddddddddcdd +1-8 z: xpbbjxrzlzznxlz +1-2 v: vrvv +7-11 l: llllllclllslll +3-14 h: hhvhhhhhhhhhhhh +6-7 m: mmgpbjmgqmm +9-13 h: hhhhhhhhhhhhfnhhhhwh +12-17 c: cccpfcccccnccccqscc +6-12 x: kqfxbhxbdxxxl +6-8 z: zqkbtzzb +6-8 l: llllllllllllll +6-13 d: wdzdxdddddlzdtbd +3-8 h: gzcknrxkjgtggnqwqjs +1-6 t: tttttvtt +5-8 x: fjxnxrtn +6-9 z: zzzzzzzzszzz +2-4 v: vpvvtv +1-7 w: wcwrxgf +2-3 t: vxftld +1-2 n: nnxmntsqzk +5-11 l: nmvllllnlckl +7-13 c: cwchccjcrfsccc +2-3 z: dzdz +7-8 s: sddgbhws +3-11 w: qqsqrgmwwmwgfdhpsct +16-17 q: qqqqzqqqqqqqqqqqh +7-15 h: thqthdphmbhhjphhh +6-10 k: gcflljjwkk +9-17 f: ffffffffffffffffdf +10-12 q: qqqqbqlpqqfdqq +3-16 x: dbxmwtlqdmvldxlgxdhk +1-2 x: xxjxh +10-11 p: ppqpppkpptp +3-5 w: wwwwwwwww +10-11 j: xjmhqgdznjf +9-11 n: dxnnnnnnnnmnnn +1-5 l: mlllvllwlrblllll +14-16 q: tqqqqqqwqqqqqmqqqqq +2-3 b: nvbbbcf +5-8 x: xmkxxgxq +1-4 x: xxxfx +1-6 n: nnnrnm +9-17 p: pppppppppppppppppp +2-4 d: ddqd +13-14 p: fmpkxpprppppzhpp +5-6 t: tttttgrttt +10-12 r: rrrrrrrrrlrrrrrrrr +4-7 h: gnmqvqrhwhh +4-5 m: smsmmmm +4-5 q: qgzqb +6-12 c: rdnnsccnrjkcnm +4-16 k: gfkxktpwhxzkgcdnb +4-5 f: ffgvf +6-13 n: nfslcrnkksfmnmvcfnnz +15-18 s: sssqsssssmshmsmsss +1-15 v: vvvvwvvxvvvcvvwvvvvv +2-8 h: gphlnhph +4-13 t: vtjvrcxqwbsrk +2-10 t: tvttftzttttqttt +12-13 t: dvsbstlkfpztdqs +7-8 w: rvwncwww +13-16 v: vlqzjlvxljrvvjvvzp +12-13 w: wwwwwwwwnwdwwgwwwx +14-15 d: dcpdddddddddddmdbd +1-3 b: bbdbbbb +11-12 t: rkdtncbtkktzmvtghb +3-7 n: nzbfgbnnx +5-13 v: vsvbkvvvvvvvv +3-8 n: nltdrmbn +14-15 p: mzkmmqdfpcptzbzc +4-6 q: qtqkgqfmqwm +9-10 v: vvdvvxvvxvwd +5-7 m: mmmmmmkm +6-7 k: kkkkkgkk +8-9 h: shhhhhhhh +8-11 p: pppppppppczplbwcpb +11-17 k: kkkkkkkkkkkkkktkc +9-17 w: mwtfbvsfnhwxqqvxw +8-12 j: jhjjjjjrkjnjjjjjjjj +3-5 g: sgfgqgg +12-14 j: jjjjjjjjjjjjjjjjjjjj +1-11 f: jsffffzfffffxffftf +16-17 f: fffffffffftfffffff +2-4 k: klkwkk +5-8 g: gtjngzkhgb +4-7 b: bbbmbbbb +4-5 w: wwwdw +5-15 g: tplhhgmggbhggrllqg +9-13 v: jvvbqvsbvzhxvh +1-3 d: ddsddn +2-5 w: cfwds +7-11 x: xxxxjxvvxvxhxvml +5-6 v: jwqxvb +3-15 s: ssqsssssssssssss +5-9 d: dddddddddddddddd +5-8 l: vklnlclj +10-13 s: sltdlfbssxsss +11-18 j: hxjxjnjcpmkppnpjpjk +4-6 t: ttbzhvt +2-17 v: rzmhrssrjvpncwqwl +2-4 x: mtcxz +11-12 d: dddddddwddbd +2-13 h: whgpdxvkfxrhg +5-7 d: ddddddxdtddddddhdddq +4-8 b: lhcfbkbbdmb +8-15 l: lvtmkgwllqttgplbgjj +3-5 n: nqngjvw +12-19 m: mmmmmmmmmmmmmmmmmmgm +5-9 g: grhgsdcwgmdt +6-9 j: msgrcrfvzksfxxjq +6-10 s: xdssssssssssssssg +8-9 h: hhhnhhnfhh +12-15 f: fffffffffffffffwfff +3-7 p: pzzpbjkfcczbmnpkf +6-7 r: cnjlbhr +2-5 f: dwxcftrbljgstf +5-11 h: hhhhjhhhhhqh +16-18 r: rrrrrrrrrrrrrrrrrmrr +2-4 r: rxmrd +7-9 c: ccccczccccc +7-13 d: ddddddddddddfd +3-11 k: mmkspkltjwm +8-11 c: rvccccgtclc +1-3 v: vvhhv +4-7 t: jttnttgx +4-16 n: nnnjnfnnnnnnnnnnnn +5-6 m: mmmdmqmm +9-10 x: xxxxxxxkxrx +2-4 m: tmcmzjmvtcghlgm +6-7 q: lqqjqqnzqqmq +16-19 k: kjwkhkkjhkskskpnkfk +19-20 b: pbbpsbnbbmnntbnbbbbn +4-5 p: ppppmp +3-4 d: grlqndd +4-7 n: nnnnnnsn +9-12 k: kkkkkkkkfkkkkk +4-10 h: hfhhhxhfhd +4-9 t: ttttxbbbcdmxsrhjj +4-11 l: npxwbsmklbls +17-20 d: dddddwdhdkddjdddtfdd +3-4 s: nldssq +4-8 s: sssdsssgs +5-16 t: ttttprtcttttttzt +9-17 j: tjjtjjjjgljjjcjjfj +7-8 b: bbbbtbkbb +2-13 l: szllllllllxllll +8-11 n: bmpnwrnngnmsfw +1-5 d: jddqtdwddxddjd +10-11 s: hqgnvslssstqdnvs +14-16 p: ppppppppvpplpgpp +2-8 h: khhjfcqp +6-7 d: fxdpdwvdjkd +5-7 n: bnnprnf +9-13 f: vfffwfffffffkfxff +2-10 j: vjhcggzrjqt +5-7 g: gggfggzwgg +5-6 d: ddbsjddfsdnddxfpgdd +12-13 g: gggqjgxgzpgsggxggxk +1-8 l: hlslllllll +12-13 f: sbfftpvbjsmff +6-7 s: hqcthsb +5-11 s: qsstnssssqsrsskdss +2-6 x: hxrfnjfclx +1-2 w: swwwwwwwwwwwjwmwwwww +7-12 s: whsbkgsmvnfjnnkq +10-12 l: fllllllllsllll +8-9 s: lsssssssqs +1-7 p: pdpppghqppxpppppp +1-3 x: jhxmjhkdrxgd +1-7 b: lbxbbbvbwbbbbt +4-5 c: cdckcbcmqcc +5-9 k: kkmklhlmkkgkrld +12-18 x: dvjxqxxxxxdxxxzxhp +5-8 h: nhfhnfqx +15-16 k: kkkkktrkkkkkpkhqxkkd +1-13 j: dcnbwjxllpksj +11-13 v: wvqhznrrfgmnvz +2-5 m: bpjbmbrmfh +10-15 t: mgtttttqspthnttkktt +9-10 n: nnpnnnnpnh +8-10 b: bjbzhbbbcq +4-12 n: nnnvnnnnnnnnnn +13-14 v: zbkchmmvjvsgkvhcz +2-9 j: jdqjgnnjjjvjt +11-16 g: ggggxqglgglfhvgggn +1-2 b: bsbm +8-11 v: lvvvjhvmxvvvv +5-7 x: xxsxxxpr +2-15 t: stwqdkrqcwbmngtd +5-8 r: rcrrvndr +5-6 v: vvvvvr +4-5 x: qpxxr +1-2 k: nkkkkkd +10-13 r: znlqhvwdvrqbrrrfzwc +1-2 h: hwhhhchhhhhhhhhhhh +3-6 b: bbbbbvbbbvbb +13-14 s: ssssssssmssssdss +7-11 x: cwxhmnhzxrxdrzzxbw +5-16 m: rgjtmrqqmfmmckxm +17-18 b: bbbbbbbbbbbbbbbbbk +11-20 k: kppkqkftkgkkknbtglkb +13-14 t: rtcfrkjvtgnrtf +5-6 z: kdzjxzjgmd +2-3 p: rxppj +9-12 b: mtpbbbbbbbbgp +8-9 b: rbbbbbsbbbbxb +13-17 r: rxgbrrnrrrrrrkrrlrrr +8-11 w: pzqswqwcfln +3-4 x: xxxx +6-9 j: fjhkjjklc +6-7 m: ctmzmfm +8-9 l: lllllllgllpts +8-9 t: hgpwblqkvqtb +4-7 d: dddpddd +4-5 c: ccccwcccg +1-7 q: lvvtpqqvnsqbzqpr +8-15 q: qqqqqqqqqqpqqqlqqq +4-8 f: frfffffffxf +7-12 r: rrrrrrrrrrrkprrtrrrp +14-15 j: jsjjjjjjjjjjjjl +6-17 b: khgflbrbrjbgzjtjt +5-7 j: jjknjpw +2-9 h: rhlqbdklh +5-7 j: lrtvccjbzgjh +12-14 t: tltwtxtctttnttttft +8-9 q: qqqqqqqqx +4-15 p: ppppppppppppppc +2-3 v: vvvvv +5-7 h: djvplxb +11-12 g: gjxlvggsgggxsgfgp +5-6 g: gggggfg +1-6 x: wxtxxxxxxxxxx +1-4 r: rqrcrvrzbrxrwjr +9-10 w: wwwmwwwwpww +7-15 z: pzrbrxpzzzzzntzv +4-5 q: qjqwqqnlqhclq +12-16 g: ggccgzggggsggjgg +11-13 b: phbmbsgkvszbbrbb +2-3 l: xhlbhl +1-7 q: qwdqmtv +5-9 x: xxxxjxxxxx +6-8 p: kvpwqbdp +11-13 t: tqttttttttttmt +9-16 l: wzdxdmlxlkfjknnz +1-11 j: vjjjjjjjjjjj +2-18 t: tsttttttttttttttthtt +6-7 n: fnnncnl +3-5 s: lssvgfssgsshsvstsss +3-5 h: hhhbhhh +4-10 x: tsxxxxxxbls +2-4 n: nnjw +17-18 p: bptpftnxjchrwthtppk +14-15 d: dddddddddddddddd +10-14 m: mmmwnmmgmdmmmmmmmmm +8-9 k: pkpqffpkktbgkbk +7-11 l: lllllllllqplllllllll +11-15 n: nnnzngknbnzdnsnnn +2-4 l: vbqm +10-11 w: wwwwwwwwwwq +3-5 x: xxtxxxxx +3-15 b: spbcxjlbbbrbbbbb +4-5 n: nvfsn +13-16 n: bppjnncnbgjndnnntwgs +1-8 t: mttttttttt +6-9 d: jvmssdkdhxsd +9-10 d: gdrllcfdnd +7-11 c: cscxccccnztccccz +15-16 p: pppppkphpppppspg +2-4 n: vnkjlwwsswscmxktnj +9-11 r: rrrrrkrzslr +7-10 t: tttgqtnttttttttt +4-10 b: bbrzbzpbsbnbbjnbsb +7-8 j: jlljxtsj +5-15 z: lzzzfqzzzzzqzzzzzz +10-11 r: rrrrrrrrrrcrrrr +6-8 t: tztpbttttt +2-9 c: vcgtfxfbr +9-16 r: vgjrwcxhrrhbzxnj +17-18 r: bczjtmjwrtzwvmgbrl +5-6 d: dqgddvd +1-2 r: krzrkr +8-9 j: rxjjjjgbj +8-9 c: cjccccccc +13-14 b: bbbbgbbbbbbbbvb +5-6 p: hbhwtp +1-2 w: wfhrfsfbjtpkqcjrwdb +10-13 q: qqqqqqqnqrqqzqq +3-4 m: xcmcz +11-15 d: dldddcddddjddqd +4-10 h: khhlhhhhhhhhhhhh +2-4 d: bdfpmxzqzbzmxmmwg +4-5 l: lgrbl +9-13 s: ssssssssfsssss +7-8 p: pplkpmkppppppxp +3-8 j: jjjjjjjj +7-8 f: jfffffhzfff +2-5 p: pppppppp +8-9 l: tlclllmlz +4-5 m: mtrmx +13-16 x: xxxxsxmxxxxvwxxw +5-8 n: jknnngnv +4-7 p: ppptppgpppp +12-15 r: rrrrrrrrrrrxrrrhr +2-9 s: sssssssssss +5-6 z: zphzzr +13-17 m: mmlmmsmzmsddbxmkb +5-7 g: gggggggg +8-9 f: ndzfvfkfz +2-10 g: wtngwdkcxgrth +6-13 r: rrqrrqrrqrrrcrrrr +1-6 z: hfzzzz +10-13 j: jjjjjjjjjjjjdj +5-11 m: wfqvmhbjhhnmzdlmpjc +6-8 d: clddzxcdghn +8-12 n: qfqbbvkpjbznrz +3-6 r: rrbrrrrrrx +9-10 r: rrrrrrrrrrr +4-5 m: chltmcm +7-8 r: rrrnprrzrhr +3-4 j: jfcj +16-17 n: nnnnnnnnnnnnnnnnwnnn +7-8 r: rrrrrrnfr +4-12 n: nnnnspnlcnmsnnnn +11-12 v: vvvvvvfvvvhvvv +2-8 h: hlhhkhhchhhghh +4-5 t: stntztttmp +3-5 v: vvvmbvhvvvlvn +9-14 x: srxmtbtgxgmqxxxc +4-5 z: zrlgz +10-11 p: phxkvklpmdp +8-15 m: mmmmmmmpmmmmmmm +1-13 h: mzwqkhhhphsgh +17-19 s: qssssmssgfmssmmpssk +6-8 b: bbbbbbbjbb +3-4 l: rllr +2-4 j: kvjj +2-5 n: lnnkrm +15-16 w: wwwkwwwwwwwwwwwc +1-3 c: ccncc +2-5 s: bhppmsttzcscss +1-4 t: tttxtttt +1-9 r: rfrrrbhtxrrbrmrmr +12-13 s: qplrssssmfswrsswss +2-4 h: zrhhhhzhzhch +1-5 g: rgjgg +11-14 t: ttttvftttttqlsttt +3-4 s: sskss +5-15 m: mmmmnmmmmmvmmmm +1-8 j: sjjjjjjj +1-4 c: ccclcc +5-7 d: ddddhdd +2-8 z: tczzjzzzzzzzgz +1-5 s: qsqdz +8-11 z: zhzpzrvzhzkzzgm +5-9 g: nvdfgshgbgltlqggbp +1-12 r: rrrrrrrrrrrrr +3-4 m: xmmb +8-10 j: jjjjdjmjshqjzk +2-4 t: tptttftt +4-13 t: ggqscfggftnxgjpn +4-12 q: hvzjzqsqwqjlqx +7-8 q: qqqlqqqkqq +9-10 f: ffffffffdfff +2-7 k: kgkkkkkk +7-11 t: xbpdkrtplmfbtkwgp +4-7 c: ccccccccc +12-14 d: dddddddddddqdddddd +6-7 k: xhnntkpnbkfwlr +3-5 q: qqxxq +13-17 d: ddddddddddddvddddd +2-3 g: smglpgpflsrbwxcjctb +5-9 z: zjzzznfzf +7-13 l: lmrkvvxtltcnj +15-16 r: vjrrrkzxrrrqrtrpzv +2-7 x: xsxxxxxx +7-14 m: npmnmgdvnqmgrmm +2-4 x: pxxl +7-15 k: nkkkckgwdkffkmb +7-11 n: dznnmcnssmcn +8-10 s: skssgswssmsss +14-16 n: nnnnnnnncdnjnnhwnnn +4-7 g: kggmgggbggggwggcqgng +4-7 g: gggqggggg +1-2 c: cccc +4-8 j: mzzvwjgrbrv +11-12 x: pksjnwlltskxlj +1-9 k: zfkkkksrkkkkkkz +1-6 k: xkkkkknkk +1-6 c: gccccncbccccc +14-15 h: hhhhhrhhgkhhhmhh +7-8 f: qffgnfhf +2-6 m: vmqwxzgsm +5-8 k: kkzjkwkvk +3-4 s: dcsss +2-4 p: jjbps +2-11 z: zjzzzzzzzzzz +4-7 f: bnkhvjfff +13-16 m: mmmmmmmmmmmmjmmmmmm +5-10 t: kdwjmcgtvtdttmtvw +3-12 j: jjljwjfjjjjjnhjjjjc +13-14 f: fffffflffxfffbf +2-6 m: zmhmsm +4-18 n: nnnvnnnnnhnnnfnnnhnn +3-6 n: xznnsnn +7-11 g: ggggpgggggggsg +6-8 l: llllltllll +4-5 s: ssnttsrs +6-14 w: wwwwwwwwwwwpwlwwww +9-12 q: pxqvswnqqbsqvgsd +1-4 j: mjjjjz +9-19 f: fffffffflfffffffffff +2-6 t: rttqtstct +6-9 d: dddddtddddd +7-12 l: lllllllllllllll +1-12 p: gppppppplpppppp +1-4 s: fslssssssfcd +6-7 v: wvvzffggdfvbvvv +2-7 t: kkwgspt +6-16 n: nncbnnnntwrxlzzwdrsj +3-4 z: zzszzhrqwngprjt +4-5 v: vkvvvcfjc +4-5 j: hcjtj +2-4 k: kqkkkkkkkksk +7-9 g: gzgmgpgkv +5-9 s: kjnwsrjrzssssdlnsqs +2-8 j: jtjxxgmjkjx +5-12 r: bfrcrtjkzqffsjtvwj +1-2 v: xvvvmvvvv +5-9 v: vzrgdldfvx +3-5 m: mqsfmmlmvdfj +12-15 v: wswvvbqqhlvqvwx +6-7 b: bbmjdhb +2-4 b: hbjmjr +6-7 n: pnnnnln +13-15 z: zzlgzpmztfzqzzl +5-6 c: pcppscccccc +6-7 z: zzzzzzz +6-14 l: lllllllllllllqllqlll +13-16 r: rrrrrwrrrrrrhrrr +11-12 r: rrrrhrvhqmqrwr +15-19 w: wwwwwwwwwwwwwwwwwwdw +3-6 w: wwqxkw +17-18 z: zzzzzzzzszzzzzzczvz +3-4 g: lgxx +4-5 x: nsdxdskjxtrz +11-12 w: wvdgqppfwwdf +2-3 w: qgrz +7-8 w: wwrppwfwwrcwr +2-6 n: gtspnngz +3-7 j: jjpjjjzjjjjj +1-2 l: pllblvgmfjvv +15-18 r: rrlgctrrrcrqqgldpr +3-6 v: vvvvvt +2-10 s: vslltcxpbg +5-8 j: blvzjtjnfmjnjtsrzmc +9-13 b: bbbbbbbbbbbbsb +3-4 w: wwfjw +6-7 x: xxxxxxmx +7-15 g: ggggggrgggggggfggg +16-18 f: zffffffffffffffwfff +3-4 q: qcqn +3-4 k: kvzqk +4-18 z: wpclkbsxwbmbmkdpzzcm +1-8 z: zkzzzzzgzzzzz +7-16 x: xxxxxxxxxxxxxxjkxxx +3-6 t: xwcjztz +8-9 r: rdrprrtrs +1-7 v: dvvvvvcvvd +6-8 t: tttttkttt +1-5 w: xzwww +6-7 c: ctdjbwcc +3-4 t: ttnttt +9-10 q: qmcqqqsqqqvqqq +11-12 d: dpftdmdmdmld +7-8 j: tbjmbjlj +3-6 t: tttttqtt +6-8 t: tdttthbnqt +2-5 q: qqqqp +1-3 t: ttht +13-17 n: nnnnnnnnnnnnnnnndnn +4-6 j: ftkvjj +5-10 c: hvccfcsccb +7-11 v: vmqvqnnnvzglvvvv +5-8 k: kkkkkksckkk +1-12 z: rzzzzzzzzzzzzzzzvzz +17-18 t: tttttmtttmttttttpttt +16-17 z: xljjnngmjmhprcqzw +4-11 d: dtddbpddlhn +17-18 t: tptttttttttttttttbtt +9-12 w: wwwwwwwwwwwcw +3-4 z: zdzj +1-8 q: qlqqkqqhqtqhxqbbwcp +6-8 r: rkrrlrrmzrcnnrk +13-17 b: dbsbbbbbbbsbmkbbb +5-16 q: gqnvqwwgqshmtrdbplfb +7-9 c: mcvccccczc +10-11 p: pppxppppppc +1-6 v: vvvvvmvvvvv +5-6 s: ssssks +6-14 r: prgrbvrjrgrkrrr +2-11 c: qbnxcvxgldcvdd +11-15 d: ddddddddddsddddd +13-14 w: rwwwwwwwwwwwwsw +12-15 t: ttttttttttttttt +5-8 g: skjgxsjpgvsgr +5-11 g: ggddglggxgqgg +2-4 c: cccc +2-3 h: rvdg +9-13 r: rrrrrrrrsrrrjrrr +2-7 f: dflmgzsdftgkgc +1-5 f: jffffffnfcff +3-4 c: cccrqc +2-7 m: kblcghm +3-4 r: rscrnbbpfkr +2-3 d: wdtqpd +5-6 q: qqqpqnqq +13-15 d: ddddsdddddddddjd +3-4 c: cmcw +2-7 q: qqqqqqjqqqqbqfqq +11-14 x: txxxxpxdxxkxqcv +10-11 b: bbbbbbbbbkbb +7-11 p: ppppppppppmpv +5-6 r: dnxrcvrrr +1-4 d: rdddddd +5-9 f: lxgfvffdf +8-16 k: vmfksjkwkrkkkhkkvknk +15-16 v: vvvvvqvvvvvvvvgv +2-5 p: xpctr +11-15 w: wfwwwwwkwwwwwpr +11-13 x: xxxxxxxlxrfxxs +18-19 b: bbbbbbbbbbqbbbbbbbb +2-4 l: fgwl +8-11 m: xmjnmmmmnmh +4-6 g: lgvpksgq +5-7 t: jtgtvttjlfhpljtzzstd +7-11 p: mjcgvcmxgqpntxkpb +2-3 r: rrgrrnr +6-7 r: rrrrrcr +4-14 d: dddjdddddddddpdddd +5-7 q: qqqqkqqqq +1-4 t: qttqt +4-10 f: hbfjbzrfgvffq +16-17 j: wjjwjwpsjjdvfjnhv +3-4 v: vvtwv +5-6 s: ssdswspdss +1-2 r: rnrrmskrr +4-7 h: rqxbjjhsfh +4-9 l: llllllllhl +4-6 w: sgtwwmcpwd +4-11 l: fjdllznlllmdnll +4-5 k: kkklk +4-6 s: sszrssssssss +12-14 w: wwwwwwwwwwwvwww +2-4 b: vnzb +7-18 g: ggggggggggggggggggg +1-13 s: srjdvvpqnrsnnkzfj +14-15 g: bmhbclmqcgtqxgg +8-12 g: gggfhxgglgzb +3-5 c: scrkcshctccmhm +7-12 q: qklqqqhqvxqqqqw +1-6 m: mlmxzwkmm +3-16 r: rswggrrrrczxfpjt +14-16 l: llldlblllqllllns +2-5 w: wwwwmw +7-9 r: rrrhrprrr +2-3 j: zjmdfcth +3-8 w: xwgwwwwww +1-5 l: plllllll +2-4 b: fbqp +2-3 p: jwpmp +3-4 c: kscm +2-5 b: mbpbnfkvh +4-15 m: qrswmmmgmvmfqtmrrn +12-15 r: rxrrrrrdrhpfrrrrcrrr +10-13 j: jjljjjjjjnjjjjj +8-20 w: gjccptmwtrwxjtskrdfp +11-14 j: jjjjjxjjjjgjjk +1-4 g: gggzzgg +4-8 q: wqqqqblsmsk +1-11 h: lhhhfhhhhbvhhtjwrbh +4-8 x: xlxqxxtxxxxx +13-14 x: xxxxsxxxxxxxqxxx +12-16 b: bxvbbbqbbbbfzbblb +1-4 j: jzbd +5-6 q: qqqqwqkkqqq +2-5 x: xxxxgx +8-10 n: nnnnnnnnnhn +5-10 m: mmmmrmmmmmmmm +2-3 c: qwcz +3-5 n: cckvz +18-19 q: qqqqqqlqtqqqqqqqjqv +5-13 k: kkpkkkkkkkkklkkk +5-10 q: jfjgqllmqzv +15-17 l: llllllllllllllhll +4-10 b: pgqbfrsnvbhzfmtbtw +1-4 c: mccc +6-16 f: fffffpfffffffcfffff +4-9 j: qjbjlcsgljtbvv +11-12 z: dstqbtxxvdchsg +3-8 d: jvdpnvqs +2-3 n: nfvnnnn +6-12 r: zdbfdrvtmpkrjkr +1-15 k: kbdckwtkfhvrbjk +6-8 v: fvhsvgcv +2-3 p: ppkppp +2-14 r: drclhnrdhtcbmnr +7-10 p: vchpmlpjfxbfnwsdxjr +1-3 v: lvvv +1-3 b: bbjbb +2-12 q: qmxbbbgqlscqvdtpq +7-9 l: lllllkllqlllclll +16-17 r: hrrrrrrrrrrrrrrrr +8-9 g: gggggggfg +6-8 v: zvqffmkv +9-12 t: tttttznttjtfrtsjxtd +5-12 q: bqhbltqnjlhqqhtkq +8-9 d: ddddddddkd +2-8 q: tvpqmrrq +13-16 q: qqqgmqqqqqsqmqqpqqqs +7-9 p: pppppplppp +4-6 h: hhxhlhhhxhp +6-8 g: gggggdggggg +4-5 j: jjjkjj +4-5 x: xxxfg +2-13 x: xxhrhxwbrgrdskghtkj +12-19 x: cxxxxxxxxxxhxxxxxxx +1-4 m: tmmmm +5-11 x: mgqnkjxxscxdxr +3-4 t: tttctt +4-13 b: bfkbfbbwbcbpvcbkdqww +5-7 d: dwddddqd +4-15 l: lvvlfclwbssvsdl +9-14 d: ndkfnddtdddfjpvdqt +8-9 s: ssssssssk +9-13 l: dlljknlsllbslhlml +4-5 n: lnnwn +8-12 v: rlvbqlwvfhvv +6-7 f: rcpfwfvffqfcpf +10-11 g: rnqgxbtnxqfzgggtn +8-11 d: ntdzzddkbdhcdddrgdld +5-6 s: xkmssxscvbpwj +1-3 r: rrmr +9-14 p: pvppppppppppppppp +11-15 t: vhftnbtmwpgbcvt +2-7 t: pmbwnrj +10-11 c: cccccccdcvcc +9-14 s: ssksssssssssslsss +2-5 t: ctrtqpn +4-6 t: mttjftttt +4-5 z: zfbzz +2-3 x: xwxlwstzmvvt +4-5 b: vbsbjwpbsbbb +3-4 x: cwxxlmdf +5-6 z: zzzqszzzzzz +1-4 c: ncczc +3-6 k: kkkkkkk +2-3 z: rjzkpxxdvzlzxjzz +8-10 z: fzjzszzdnzbzkzzfz +1-9 c: ccccxccjpccccc +3-12 j: jjjjjjjjjjjcj +10-14 l: llplllvbllllsp +8-12 r: hnrcrxfzrkcjcprrzjbr +17-20 q: qqkqqqqqqqqqqqqbqqqh +6-9 l: lllljlrlpxllllll +8-9 v: vzzmtwfgv +3-7 v: fqdbsshw +12-13 f: fwffnjfbfffzzqfxfffx +1-3 m: zjmdvjjg +5-7 r: nrswrlbw +8-11 c: crzfvzpcbcbchgxbln +9-17 g: ggggggzgwwjpggpgvgrk +6-9 k: hhkrvkkqfhqwbdb +10-16 q: mzzjqfmtkqwvgdfttj +11-13 m: mmmmmmmmmmtmm +1-2 j: jjhrrj +3-12 h: hhhhhhhhhhhhh +8-11 w: zwkrwznrppw +7-14 d: dpxjnddbvdbcllqr +5-8 c: ccccfcccccc +12-16 p: tnptbppgwxxpppjb +1-14 t: qktttttttttttttt +9-12 t: tttttcttgjtt +3-5 p: tcpdgwhrkxkzjjhvsgqp +13-14 k: kkkkkkkkkkkkklk +11-13 x: xxxxxxsxxxxxt +5-12 n: nxxnnznnnnmlnnn +12-14 h: hhlhhhhhhhzcnnhhhhkh +8-10 j: jbjbjmjvjj +6-9 c: ccccccccsc +5-12 j: jjjjjjjjjjjcj +1-2 f: fhffff +13-17 x: xnlxxxxsxxxxxxxxp +2-5 d: sddzn +2-4 q: qqqt +2-6 p: fmxfxnkp +9-11 k: nkdgncqkkgwjp +2-5 p: hpmgcfcmz +1-3 f: ffczf +5-9 r: rtrrprrrrrr +2-4 p: pnpprdn +9-11 l: ltllbllvllc +4-5 x: xxxmxxx +5-9 x: xxxxxxxxxx +16-20 b: hgcbhbbhbgbbdxhdgjwb +10-15 c: qcccpcccdcccccfccwcf +10-11 x: xndsgkwqpxb +15-17 f: wwbqxrffgfvffdmdffw +5-6 q: qqqhqvqqqq +3-4 h: hhhchc +7-9 x: xxxxxxxxgx +7-8 f: fmfflfgf +12-13 v: vvvvvvvvvvvcvvvv +3-7 g: gggbggsgg +1-5 w: wpswsggtw +3-5 h: hhhhkhhhhhdhw +6-7 w: wwwwwmwwwww +5-11 m: mfdmcwmlvpmfc +14-15 j: jjjjjjjjjjjjjjrjj +3-5 v: rvtvkdvqv +3-6 p: frppxpdpg +3-5 t: ttttrt +2-7 x: xxwxxkfxxxxxxxxxxgxr +6-8 k: kkkkkpkgkkkk +10-11 f: fffffpfffkfdf +11-12 g: gggghgnggflg +1-7 x: xxnxxxxkxx +3-4 h: rhhx +6-8 r: bcwrrrrrhrxmqgrhrzm +2-6 l: mpdlnnp +2-4 j: jbjjdhx +2-15 d: dfdddddddnddddfzddjd +5-12 h: gbngwvffshph +1-2 t: txcpth +14-15 f: ffffkfflfffffgf +8-9 b: bbbbbbpbj +5-6 f: zffhfz +8-15 j: qjjfrtjllqfjjcj +3-5 l: llxllll +10-15 z: tpdzhnzkzrtzrzzzrfrz +3-5 q: qqlqq +3-4 d: vmzddpm +8-11 c: cmvzlxtqxcvckxqm +2-13 r: drpppdsqsmvnlkjb +7-9 w: wwwwwwkww +3-6 s: svfspfnpzq +3-4 b: fqpbbbbzpgqf +2-4 s: smssm +8-9 q: qqqqqlqbq +4-7 s: stcssbw +15-16 k: kkkkkkkkkkkkkkkk +10-13 x: xxsxxzxzxxsxphxxxxx +4-5 p: drpsx +7-11 v: vvvvvvvvvvvvv +14-15 n: nnnnnnnnnpnnnbnn +5-8 k: blgkkkkc +12-16 g: ggggggggggvggggggg +1-8 c: cccccccdc +3-9 p: ppqppppppp +7-9 q: cxqqqbhqqzhjqv +1-12 m: mrkvwmmsjmkmw +2-4 s: xrrj +2-4 w: mbww +7-14 v: vvvvvvvvvvvvvbv +3-8 p: kppjprpxppb +4-10 n: znncndnnjncnrnkn +5-7 k: kktnkks +10-13 r: rrrrrrrrrrrrnr +1-6 k: kkkkkrvk +3-5 k: jhjzkbqsjwkxsvd +5-8 p: pcqpprckrp +2-5 f: fsjwf +6-9 l: jxhtplclr +4-13 x: gdxdcdmmxlfxxs +2-10 v: vvvrvvvvvhvvvvvvvv +11-12 v: wqnwrlvjsxvs +1-4 m: mfqm +3-5 d: bmddv +8-10 h: hbhhdhfchh +4-5 s: sssdb +2-3 l: lsll +10-11 k: kkkkdcpnkkgkk +6-8 r: vrrrrxrrrrr +3-4 s: gxsbfr +17-18 p: ptppppppbbpbprpcqpp +16-17 s: gpgwvvnjbdqpksnsd +5-10 f: gfkfzqflfzffvf +6-18 m: kxxfrxjmwmltdvxwmmb +5-6 d: ddntbd +11-15 b: bbbrbhbgbbltbbhb +6-7 r: krbrrrp +5-6 q: qqqqqkqqqqq +3-6 k: kfkmjt +8-10 d: drbwtrdshdbg +13-15 n: tqnprfnndhplcjn +2-4 w: wjwg +10-11 p: xprpnpvhppp +9-10 r: rrrrrrrrqrrr +2-8 w: wjwnwhwwwwwww +12-13 g: gggggggggggwggg +1-6 s: sssssss +1-9 k: xkkkkkkkkkkkkkv +2-4 c: ccccc +3-7 s: ftssfrm +12-13 k: kkkkkkkkbkksk +9-16 q: qqqmqbbqhzqwtlwqb +7-9 p: ppppppppdppp +4-6 b: pcvbvkhb +9-10 g: qmchkfggmgpqgxxgxq +2-9 t: sthtnttthtlsq +3-4 x: xxxx +8-14 s: ssssssssdssssssss +1-3 m: gmbmvbmqbxvm +10-15 s: sgwkdvnsswsszwrn +3-4 s: gmgs +5-11 f: fffffffffffffffff +7-9 v: vvfvsvzdhvv +4-8 l: lllllllpllllllllll +11-16 x: xxxplxxxxxpxxxxxxxxx +9-13 t: tdtftttjdtttc +9-13 g: rknsckngkvdxg +3-4 d: sdqwddmr +1-3 l: lljl +7-17 r: trhrpmrqswrmnrbrrhb +7-8 g: ghkxwgttgk +5-7 b: fbnbtbndb +6-7 v: vnxlvgv +1-6 t: txtkttg +2-13 n: ljnnnnlpsnscfnnnnnnf +4-11 b: bbbbbbbbbbfb +6-9 x: wxdkxxnnnx +2-4 w: wswww +5-13 j: jjsjjjjjjjjjkjjjj +1-4 f: fszhf +5-9 z: wzgfpzzzzjszfvfpwz +5-9 x: xxxxhxxxsx +15-17 b: bbbbbbbbbbbbbbkbqb +2-7 x: xvdmgxxwgxx +3-4 q: qqqq +6-7 m: mqmlltc +8-10 k: kkkfkhkkkpkkkk +2-6 n: cnxnts +1-6 s: gsssssssssscssss +1-9 n: bbvkmnkdn +2-5 p: nmlhpv +4-6 g: vnggdpgm +7-12 b: bbbbbbvwsbbbbbbbbbbx +2-3 b: lgbjjr +7-12 n: chqccgnwsznngz +4-6 v: nntkvvv +2-5 g: qkrjgkqgljh +1-5 f: rffffsfzxfjfzffff +15-16 z: zpzzzzzzzzzhzzkszz +3-4 l: lmflkl +7-8 f: fffvzxff +2-4 r: rrrgrrrr +12-14 w: tjwgwkkwwwwwwwwww +2-12 m: mzmkmmmmmhmmcmmmrmf +5-7 q: nfqbgqqqpqqgjq +1-4 r: ktpr +5-6 j: jjjgbj +9-13 d: ddpbdddwbbdmd +8-9 r: rphfrrrsrr +10-12 f: fffffffffffbffpff +5-12 b: xhbbcbbbbxtbbb +9-10 j: jjjjjjjjqjjj +3-4 q: qqqn +3-9 r: srrtqqprjmqgnp +2-3 c: gcqc +3-4 c: bclc +3-6 n: jnxhshghnnqncgncn +2-4 h: ckhh +9-12 t: tdjjqcdbtkbtmb +11-13 x: cxxkxbxktxxxkxxxpxxh +4-14 m: hjqmqjvqgjdjzsssdkm +6-12 r: rrrrrlrrrrrrrr +14-16 g: gngggggkfglzgggv +9-13 h: hvhhdzhhmhhhh +3-15 x: xxjxxxxxxxxxxxbxx +10-12 z: zzzzzzzzzpzzz +3-4 h: dnhv +13-14 g: gggggggggggggg +7-11 r: rrrrrrrrrrr +6-9 x: czxxlsxxx +3-5 h: hhchh +1-9 j: jjjjjgdjjjjjjjf +7-10 b: ctsbpxrvwbkbjklghnbn +10-11 g: gggggggggglg +1-7 x: xnpsxfm +9-10 q: xxxzqbpdqj +4-10 q: pqsqbqcvllfn +11-12 x: xxxkxxxxxxgxxxx +3-12 s: pstrsssntsssssbssj +9-12 s: wnsdfrtssllsfbsssccb +1-6 r: nrrrrmrc +11-13 k: kkskkkbkkkzkkk +4-5 h: hhhhshh +5-19 f: ffffffffffffffffffcf +3-4 z: zczzz +5-8 l: ghlllsllfw +3-9 g: ggpngglkkf +7-9 b: xwbbbhhbmgjhbbbhnbb +4-5 c: cjmgczcccpzqr +15-16 j: jqfqsnnvffpjjjqj +5-6 z: zzzztvws +3-7 t: tftxtvfzs +1-5 l: tlllll +5-18 n: nnnngnnnnnnnnnnnnnn +5-6 m: bchzqm +9-10 p: lmpsbqgzpxggltl +2-9 h: hqdpjwpxhg +4-6 n: nqbnbnknnzd +2-7 q: qbqqqvq +7-8 c: cccccclc +8-12 r: rrkrrrprvrcqnr +14-15 j: jkpjjnjjjwjjjjjjhjwj +7-9 s: stsstspsn +8-11 h: hhhhbhhhhjhhhh +5-6 d: dddtpdd diff --git a/2020/inputs/day_3.txt b/2020/inputs/day_3.txt new file mode 100644 index 0000000..0fe60b0 --- /dev/null +++ b/2020/inputs/day_3.txt @@ -0,0 +1,323 @@ +...........#..............##... +...#....................#...... +.....####...........#.#..#.#... +....##.#....................... +.......#.##......#.###......... +.#.....#.......##.......#.....# +...........##....##.#....#..... +......#.........#....#......... +..###....#.........#....#.#.... +....#....#.#..#..#.........#.#. +..........................#...# +.##...........#...#.#.......#.. +#....##...#.#....#............. +....#..##......##..#.#....#.... +#..........#.............#..#.# +...#.####.....#..#.#.#..#...#.. +..........#......#........#..#. +............#.....#..#..#....#. +.................#...#......... +..#...#...................#.... +..............##...#........... +..........................#..#. +#...#...#............#...#..... +.................#..##.......#. +............#....#............. +.#......#.#...#....#...#....... +.....#.....##..##.....#.......# +.#..#..##...............#..#... +#...#...##............#........ +.......#....#.......#.......... +............................... +#................#...#......... +...#...#..#..#.............##.# +......#........#..............# +...#.....##.#...#...#.......... +.........#..#........##.#...##. +#.........##..#.......#........ +........##.#.#................. +.#....#............###....#.... +...#.##....#.....##..#..#....#. +....#..#........##..#...#..##.. +..........#............#....... +.........#........##....#..##.. +#....#.........#.#.......#..#.. +...#....#......##.#............ +........#..#...............#... +..............#.....#........#. +......#..#.#........#..#..#.##. +..#........###....#.#.......... +...#..#...#.#....##..#........# +........#..#..............#.... +#.####.................#....##. +.#................#............ +....#....#....#................ +#......#........##....#...#.... +......#..##..#..###...#.#.#.... +.#..........##................. +...#...#....#...#.....#.....#.. +............#......##.........# +..............##............... +##....#....#...#...#....#..###. +...................#.......##.. +#.....##........#....#......... +...#.......#...........#....... +...............##.............. +##.......#......#.....#........ +#....#..#..##..#.......#..#..#. +.....#.............#.......#... +......#..#........#.......#.#.. +..#...#...........#.##......... +..#................####.#..#... +......##....#.........#........ +..#..#.......#...##....#......# +#.#..........#..............#.# +.#.#..............#.##...#..... +................#.....#.#...... +##.........#.........#.....#... +....#.#.....................#.. +..#..#..#........#.......#..... +.....#..#.#....#....#.....#.... +..####....#.#.........#........ +#..##...##..#.#............#..# +.#........#..##.#.....#......## +.##.##.....##....#.#........... +....#..#.#..##............#.#.. +........#.#...#....#.........#. +.....#.#.#.....#....#.....##... +#...#..#....##..#.............. +..#...#....#...##..#.......#... +.#....##....................... +.........#............##.#..#.. +....#................#...#.#... +...................#..#...#.... +#..#...................#....... +..##..............#..........## +...#.##......#.............#... +.........#.#.........#......... +...###......#.................# +..........#....##.............. +.##..#....#.........#.#........ +.........#.......#.......#.#... +#........#............#......#. +....................#.......... +.......#...##..........#...#... +....#.#.......#.#...##..#.#.... +...#..........#..............#. +........##..............#...... +......#...##......#....##...... +....#.....#.#.##..............# +...#...........#.#............. +...........#......#.#.......... +...#.#......#......#...#...#... +..#.......................#.... +...#...#..#..................#. +##.....#.....#..#..#.....#...#. +.#..#.......##.#.#............. +......##.......##............#. +.......#..#..#.......#....#.#.. +......#.....##..##...#........# +.....#........#.##..........#.. +#....##............#........#.. +.....#..#...#............#...#. +##.#....#........#............. +.##...............##......#.#.. +###..#..#.......#.#..........#. +.....#...........#...##........ +..#.#.#.........#.....#....#... +.....#....##.......#..#.#...... +......#.....#...#..#...##..#... +.....#....#................#... +......#....#.#...##......##.#.# +.....###.............#......... +.................#......#####.. +.#.......#..........#.#....##.. +..#..#.......#.....#..#......## +..........#.#.##.......##....#. +##...#...##.##......#..###..... +..#..#..#......#....#.......... +..#...#....#......#....#....#.# +.#...#........#.....#......#..# +#.........#......#.##.##....... +#.##..#.............#.....#.... +....#.......#..#..##...##...... +...#.............#.#......#.... +#.....#..........##...##.....#. +...............#........#....#. +#.....#...#..#.............##.. +.#....##.#.......#.#..........# +....#....#.#.....#....#......#. +......#......#................. +.#.#..#.#.#...#...#..#.##.#..## +.............#.....#........... +............#...#..#..#.....#.. +.#..........#.......#....#..... +......#..###.#...#............. +......#..........#............. +....#.................#..#.#.#. +...##.##.#....##.##............ +####......#........###......#.. +..#.......#.#..#.##............ +.....#.....#.#.......#.....#... +.....#..........#.#............ +#.....#.............#......##.. +......##..........##....#...... +.#..............#..........#... +......#..#...#........#..#....# +.#......#.......#..#........... +..#..#....#.#.......#....##..#. +........#.#................#... +#.......#.##.#......#...#.....# +..#...#.#.....##............... +..........#.....##............. +.......#............#........#. +...#............#......#......# +.#..#.......#...#...#..#..#.... +#....#.#...#......#...#......#. +.#.......#..#.#...........#.... +...##.#...#.......#..........#. +.....#..............#..#...#... +...........................#... +.............#.....#........... +....#.#..#..#...#..#........... +.....#.#.#..#.#....#.#.#....... +.......#..............#.....##. +........#..#..#.#..#...#.#..... +.....#.#...#.#.#.....#..#...#.. +.....#....#.......#......#.#... +.#.#...........#........#...... +.##..##......#......#......#.#. +.....#.###.#.......##.#..#..... +#.......##..#.........#....#... +.#.............#.........#.#.#. +..........#..#..#....#....#.... +#....#...........##..#.....#..# +......#....#...###..#...#...... +.....#....#........#....#..#... +...##..............#.##...#.... +.#............#........##...... +..##........#.#...........#...# +..#.#...##...#..#..........##.. +.................#.......#..... +......#.....#............#..... +.#.....#.........#.#..#.#...... +.............#.#.#..#.......#.# +#......#.....#..##...#.......#. +.......#.#..#...#.........#.... +...#..##...#.........#.#....#.. +........................#..#... +....##..##................#.... +.......#..#.......#........##.. +.....#....#.##....#............ +.#....#............#.....#...#. +..##.....#......#......#.#....# +...#...........#...##....#..... +......#.##.#..##...##.#.#..##.. +.......##....#......#....#.#... +.....####..#............#..##.. +......##..##..##.........#...#. +.#.#...............#.........#. +......#......#...........#..... +.....#.......##.....#..#....... +.....##..#..#....#.#.......#... +...........###.###.##..#.#..#.. +.#...............##.........#.. +......##..........#..#.....##.# +.............#....#....#..##... +.#..............#........#..... +.#..#.........................# +.##..............#..........#.. +..#..#.#.#.#......#............ +....#...#.#.#....#........#..#. +.....#........#....#.....#..... +.#...#.#......#..#........#.##. +.......#.....#................# +.#.#........................#.. +............#..#.......#....... +....##.#........#...#.#.#.#.#.. +.....#.......##................ +...##...#....#.....#.#......... +#...#..............#.......#... +...#.#.#.#..##....##........... +.....##...#....#.....#......... +#......#.....#....#............ +....#..###....#.##.......#...#. +..................##.#......#.. +.....##..............##.#....#. +.........#...#........#..#....# +.##..#.........#....#..##...#.. +#.#.##................#.##..... +..#.#....#.#.......#....#...... +..#.#.##.#.......#............. +..#....#.#..##.#..........#.#.. +#.....#.....#.....#.........#.. +#.......##.....#....##.....#... +..#...#.........##.#..##....... +..#.#.........#.......#........ +#.....#.....##.#.#..#...#..#.## +.........................#.##.. +..#.#..#..#..#........#......#. +..#..............#............. +.....#.......##.##.....#....... +....#...#...............#..#... +....#......#.#........##.#..#.# +....................#..#....... +.....#.......#......#.##....... +#.......##..........#.....#.... +.#.......#....#.#......#....... +......#...#...............#.##. +....##.#.....#.............#.## +#..#................##...#..... +....###......#.#.........#..#.. +...#...#......#...##....#...#.# +..#...#.#.##.#................. +.....##......#..#.#....#....... +##.......#......#.#..#.#....... +.#.#.#.........#...#.#..#...... +#...#.#........#....#.#.....#.. +....#.......##....#......##.... +.....#..........#......#....#.. +#...#....#...#.....#.#......... +...#..##.....##....#.....#.#... +..................#.....##..... +.....#............#............ +...#.....#..#........#.#..##... +.......#.#..................... +......#...#.......#..#...#..#.. +.#..#...#.....##.....#.#.#....# +....##...#.#............#..#..# +...........#............#..#... +.......#.....#................# +..#......#.#.......#.#......... +.....#..#.#.##................. +.....#..#...................... +...#....#...#..#.#..#....#..... +.#............#.....#.......... +#.##..#..#.......#......#.....# +.#.........#....#....#......... +...#.#.#........#.#....#...#... +#........#..#..#..........#..#. +.....#..#.....##......##..##.#. +..............#.......#..#..#.. +....#........#.##.#...#........ +..#.#..#....#........##.....##. +...##.....#...#.......#.#....#. +#.....#..##.##.#...##.......#.. +.....#........#.#.#....#....... +.#................#####..#.#... +..........##..#..###....#...... +.....#.......#..........#..#... +..#....#....................#.. +#.....#..#.....#...##.#.....#.# +...#..##............#.....#.... +##.#..#.......##............... +........##...#.#.....#......#.. +........#...#.................. +#......#................#.#.... +...........#...#..#.........#.. +...#.##..#.##.................. +.....#......###......#..#...... +..#.#.....#...#..#.##........#. +....#..........#.#.....#....... +..#..........#..........#.#.... +..#.##.......#......#.......... diff --git a/2020/inputs/day_4.txt b/2020/inputs/day_4.txt new file mode 100644 index 0000000..b17cdcd --- /dev/null +++ b/2020/inputs/day_4.txt @@ -0,0 +1,1023 @@ +ecl:#eef340 eyr:2023 hcl:#c0946f pid:244684338 iyr:2020 cid:57 byr:1969 hgt:152cm + +pid:303807545 cid:213 ecl:gry hcl:#fffffd +eyr:2038 byr:1951 +hgt:171cm iyr:2011 + +hcl:#c0946f byr:1933 eyr:2025 pid:517067213 hgt:173cm +ecl:hzl +iyr:2018 + +pid:5253256652 byr:2009 hgt:152cm iyr:1989 eyr:1968 hcl:64cb63 ecl:hzl + +iyr:2013 +pid:862607211 eyr:2020 +hgt:174cm +byr:1990 +ecl:blu hcl:#888785 + +ecl:grn byr:1955 +pid:608098408 eyr:2027 iyr:2020 hcl:#b6652a cid:264 +hgt:181cm + +byr:1998 ecl:hzl eyr:2021 +hcl:#866857 hgt:189cm iyr:2030 +pid:013735467 + +pid:075417314 hcl:#b6652a byr:1957 +iyr:2011 +hgt:154cm +eyr:2025 +ecl:amb + +iyr:1993 hgt:74cm eyr:1960 +byr:2029 +hcl:293244 ecl:#3cb5e5 pid:4861232363 + +hgt:153cm hcl:#6b5442 pid:065240897 byr:1932 +cid:196 ecl:blu eyr:2028 iyr:2019 + +eyr:2024 ecl:amb +hcl:#866857 byr:1922 pid:496904942 hgt:164cm iyr:2020 + +pid:847705161 byr:1951 cid:124 iyr:1991 +eyr:2028 ecl:dne +hcl:6b2d28 hgt:172cm + +byr:2007 iyr:2029 ecl:hzl eyr:2026 hgt:168in +hcl:z +pid:63151612 + +iyr:2027 hgt:172in +cid:174 byr:2014 hcl:z eyr:1921 +ecl:grt pid:#cebdc2 + +ecl:amb hcl:#d09c0f +iyr:2015 hgt:156cm eyr:2026 byr:1962 +pid:086120872 + +cid:125 +pid:837849996 +byr:1958 ecl:brn hgt:166cm hcl:#ceb3a1 eyr:2028 iyr:2012 + +ecl:gry hgt:180cm +pid:939059935 eyr:2023 byr:1977 hcl:#b6652a + +hgt:190in byr:2029 eyr:1984 +ecl:gry hcl:z pid:055092916 iyr:2010 + +hgt:63in ecl:blu byr:1940 iyr:2012 eyr:2029 hcl:#7d3b0c +pid:163033394 + +eyr:2040 pid:181cm +iyr:1928 hgt:76cm hcl:d8aafb byr:1949 cid:275 ecl:xry + +hcl:#cfa07d ecl:oth byr:1948 eyr:2021 +pid:719690182 hgt:179cm iyr:2020 + +byr:1939 cid:266 +eyr:2026 iyr:2017 hcl:#f116d2 +ecl:hzl pid:522421825 +hgt:68in + +hcl:z hgt:61in +cid:115 pid:180cm iyr:2030 byr:2014 eyr:2032 ecl:hzl + +ecl:xry +eyr:2028 pid:191cm iyr:2015 hgt:150cm byr:2029 + +eyr:2027 +hcl:#a97842 pid:997937480 hgt:61in iyr:2019 +byr:1921 +ecl:grn + +hgt:163cm +pid:912318455 iyr:2016 byr:1988 ecl:brn hcl:#a97842 cid:221 eyr:2029 + +cid:333 hcl:#c0946f +hgt:163cm iyr:2018 eyr:2027 ecl:oth + +cid:70 hcl:#c0946f +pid:961507902 byr:1949 ecl:grn iyr:2017 eyr:2029 hgt:69in + +hgt:169cm ecl:amb +iyr:2013 pid:496169901 +byr:1943 eyr:2028 hcl:#ceb3a1 +cid:249 + +ecl:blu cid:343 +iyr:1998 hgt:154in hcl:#efcc98 byr:1972 + +pid:508213120 iyr:2012 eyr:2025 hcl:z hgt:70cm byr:1976 +ecl:brn + +iyr:1924 +eyr:2005 +hcl:z +hgt:167 pid:154cm +byr:2007 + +pid:761333244 hgt:180cm iyr:2017 hcl:#18171d eyr:2021 +byr:1983 +cid:67 ecl:oth + +eyr:1993 +byr:2003 +hcl:#602927 +ecl:grt +cid:84 hgt:178 +pid:1847086637 iyr:2026 + +hcl:#866857 hgt:162cm pid:483774485 iyr:2010 +byr:1946 eyr:2028 ecl:gry + +pid:726639691 eyr:2028 +hgt:171cm hcl:#ff65a6 +iyr:2011 byr:1989 + +hcl:z iyr:2026 ecl:xry +eyr:2037 byr:2005 pid:#f09a0f +hgt:68 cid:156 + +hgt:71in ecl:blu eyr:2026 hcl:#18171d +byr:1981 iyr:2017 +pid:698636544 + +eyr:2021 +byr:1957 ecl:brn pid:365378126 cid:93 iyr:2019 hcl:#18171d hgt:179cm + +byr:1996 iyr:2014 hgt:64cm +eyr:2034 +hcl:z + +pid:629486472 cid:140 +hgt:192cm eyr:2020 hcl:#b6652a iyr:1988 byr:2021 ecl:brn + +byr:1955 iyr:2015 eyr:2030 +ecl:gry hcl:z pid:6550198754 +hgt:158cm cid:305 + +ecl:gry hcl:#a97842 +hgt:176cm eyr:2022 pid:810146585 iyr:2020 + +byr:2027 hcl:#cfa07d +iyr:2011 ecl:#f07598 +cid:293 +hgt:150cm pid:#fa948d eyr:2029 + +eyr:2028 iyr:2013 hgt:69in ecl:gry pid:317170371 +cid:147 hcl:#bfe1f1 + +byr:1976 +pid:059341891 hgt:174cm +ecl:oth +eyr:2029 iyr:2017 hcl:#733820 + +iyr:2018 hcl:#ceb3a1 hgt:188cm cid:308 +pid:792826885 byr:1948 ecl:blu eyr:2028 + +iyr:2017 cid:94 hcl:#95c7dc +pid:231757803 eyr:2022 +byr:1992 hgt:153cm ecl:amb + +eyr:2027 +iyr:2011 hgt:186cm +ecl:brn pid:996347346 hcl:#866857 +byr:1960 + +eyr:2025 byr:2001 +ecl:blu pid:755715478 iyr:2019 hgt:61in + +ecl:gry +eyr:2038 +hgt:81 hcl:z iyr:2028 +cid:214 byr:1965 + +pid:412744447 byr:1979 hcl:#cfa07d ecl:blu +eyr:2029 cid:157 +hgt:180in iyr:1948 + +hgt:170cm +pid:623557081 byr:1924 eyr:2024 hcl:98d623 iyr:2012 ecl:amb + +cid:311 ecl:grn +iyr:2011 byr:1982 +eyr:2002 hcl:#ef318a +pid:0548169957 +hgt:87 + +eyr:2030 hcl:#733820 iyr:2016 pid:558470391 +byr:1936 ecl:oth hgt:185cm + +iyr:2019 +ecl:amb byr:1949 +pid:376468392 +hgt:178cm + +pid:019195245 +ecl:grn hgt:171cm +byr:1978 iyr:2011 eyr:2022 hcl:#733820 +cid:134 + +hcl:#623a2f hgt:192cm eyr:2026 byr:1977 +ecl:grn cid:308 + +ecl:hzl pid:715816358 hgt:69in iyr:2014 hcl:#623a2f +byr:1996 +eyr:2027 + +iyr:1947 +ecl:#39a697 +hgt:183cm byr:2029 +eyr:2022 pid:7951883913 +hcl:z + +ecl:gry byr:1950 +hcl:#18171d hgt:168cm iyr:2020 pid:677187333 eyr:2027 + +byr:1969 ecl:blu hcl:#18171d iyr:2011 +hgt:162cm +pid:701349891 + +cid:269 byr:1966 +iyr:2011 +pid:905940527 eyr:2023 hgt:190cm +ecl:brn hcl:#ceb3a1 + +eyr:2027 pid:454627395 ecl:brn +hcl:#ceb3a1 cid:302 hgt:184cm +byr:1959 +iyr:2015 + +iyr:2011 +eyr:2028 +hgt:166cm +hcl:#733820 byr:1938 ecl:blu pid:857984986 + +hcl:#c0946f ecl:brn pid:226877822 +hgt:182cm byr:1998 +cid:160 + +hgt:186in pid:26499164 byr:2017 +hcl:z +iyr:1998 eyr:2026 +cid:331 ecl:#236556 + +pid:328866543 +hgt:165cm eyr:2039 iyr:1987 ecl:amb byr:2018 hcl:z + +iyr:2016 eyr:2036 hcl:#888785 byr:1976 pid:160402352 hgt:76cm ecl:blu + +ecl:blu +hcl:#fffffd eyr:2025 hgt:66in pid:979788527 +byr:1957 iyr:2013 + +ecl:grn pid:279357265 iyr:2019 eyr:2021 byr:1953 +hgt:177cm hcl:#c0946f + +ecl:oth hcl:z eyr:2025 byr:1949 hgt:189cm iyr:2020 pid:901383503 + +byr:2019 hcl:#733820 +pid:31022828 eyr:1929 +hgt:75cm iyr:2012 ecl:grn + +pid:080462937 +ecl:blu hcl:#866857 +cid:102 +iyr:2013 eyr:2025 byr:1975 hgt:64in + +iyr:2016 +eyr:2028 +cid:125 +byr:1979 hcl:#866857 +ecl:brn hgt:173cm pid:814947616 + +hcl:z byr:2020 pid:#c3b54b hgt:174in eyr:2038 +iyr:2016 +ecl:gmt + +cid:132 +iyr:1958 +pid:61543452 hcl:z +ecl:zzz eyr:2039 byr:2006 + +cid:55 eyr:2022 byr:1954 iyr:2015 +hgt:188cm hcl:#a97842 pid:49143631 ecl:amb + +hgt:152cm +byr:1982 +iyr:2013 ecl:blu +hcl:#341e13 +eyr:2026 pid:440841976 + +iyr:2019 ecl:blu pid:553456616 hcl:#733820 hgt:160cm byr:1932 eyr:2030 + +byr:1980 hgt:169cm hcl:#7d3b0c cid:312 iyr:2010 +eyr:2026 pid:028550304 ecl:grn + +ecl:amb eyr:2021 iyr:2014 hgt:71in pid:986053283 byr:1981 + +ecl:oth +eyr:2023 hcl:#888785 +byr:1949 +iyr:2016 pid:699325656 + +hgt:63cm cid:297 eyr:2020 pid:990390922 +hcl:#602927 ecl:lzr +iyr:2012 byr:2016 + +hcl:9ea2fa eyr:2023 pid:088680493 +byr:1998 iyr:2017 ecl:utc hgt:170cm cid:175 + +cid:316 iyr:2016 eyr:2026 hcl:#79ff1d hgt:65in +byr:1997 pid:215466710 ecl:oth + +cid:213 byr:1983 hcl:#888785 iyr:2016 pid:767747981 eyr:2025 +ecl:hzl hgt:168cm + +eyr:2030 byr:1972 +cid:282 +ecl:gry hgt:178cm +hcl:#a97842 +iyr:2018 + +hcl:#6b5442 ecl:amb +eyr:2028 cid:104 hgt:159cm pid:446429120 iyr:2012 +byr:1938 + +byr:1940 hgt:178cm ecl:oth +hcl:#ceb3a1 +pid:845683663 iyr:2015 eyr:2024 + +byr:1940 pid:496262233 +hgt:184cm hcl:#b6652a +ecl:grn cid:152 iyr:2012 eyr:2029 + +hgt:185cm pid:455744229 byr:1954 eyr:2022 ecl:gry hcl:#6b5442 iyr:2012 + +hgt:182cm byr:1966 eyr:2028 ecl:#a5b7fc +iyr:2029 + +pid:343591896 +cid:58 +ecl:hzl +eyr:2022 hgt:180in byr:2021 +hcl:#6b5442 + +ecl:utc hcl:#b6652a +pid:635147657 byr:2020 +eyr:2022 hgt:157cm iyr:2018 + +ecl:grt cid:312 iyr:1959 pid:154262836 +hgt:171cm +hcl:#fffffd +eyr:2024 +byr:1982 + +hcl:#7a12b4 pid:223424149 ecl:hzl hgt:175cm +byr:1930 iyr:2010 eyr:2028 + +hcl:#c0946f pid:633476454 eyr:2026 iyr:2011 +byr:1934 +hgt:186cm +cid:289 ecl:gry + +hcl:#fffffd pid:376300524 hgt:155cm byr:1964 iyr:2017 eyr:2021 ecl:grn + +hcl:a5d4dc byr:2006 cid:165 ecl:#db800f iyr:2029 pid:0199789970 eyr:1961 hgt:61cm + +eyr:2027 hgt:170cm iyr:2010 +hcl:#c0946f +ecl:grn pid:415726530 +byr:1985 + +cid:197 byr:1957 hgt:192in hcl:#a97842 ecl:hzl eyr:2029 pid:958973455 iyr:2011 + +iyr:2015 pid:933689314 hgt:162cm ecl:amb +cid:122 eyr:2021 +hcl:#6b5442 byr:1973 + +eyr:2026 hgt:172cm +iyr:2012 +ecl:brn hcl:#733820 pid:004474632 +byr:2000 + +hgt:191cm eyr:2030 byr:1999 pid:9155071477 iyr:2026 hcl:#602927 cid:315 +ecl:grn + +iyr:2010 pid:182884251 hcl:#18171d hgt:154cm +eyr:2020 +byr:1926 ecl:oth + +iyr:2019 eyr:1920 pid:132839546 +cid:283 hgt:188in hcl:#efcc98 byr:2027 + +iyr:2011 hgt:177cm +cid:117 byr:1976 +ecl:gry +hcl:#623a2f eyr:2030 pid:134592046 + +byr:1968 hgt:146 +iyr:2013 hcl:eefdc4 eyr:2028 +ecl:xry pid:722120008 + +iyr:2016 byr:1941 hgt:67cm cid:51 hcl:#b6652a ecl:hzl eyr:2034 pid:994005715 + +hcl:#cfa07d ecl:oth +hgt:182cm eyr:2021 pid:612583941 +byr:1983 +iyr:2019 + +byr:1922 +hcl:#602927 hgt:161cm ecl:gry eyr:2020 pid:190170808 iyr:2013 + +hgt:63cm cid:136 +iyr:1999 +pid:8235748647 hcl:z +byr:2022 eyr:1933 +ecl:#304383 + +cid:273 ecl:blu hcl:z +iyr:2011 byr:2007 +eyr:2020 +pid:942473857 hgt:178in + +ecl:grt byr:2029 hgt:187in eyr:2030 cid:160 +hcl:#efcc98 pid:#39f22b +iyr:1966 + +byr:1978 ecl:oth iyr:2011 hgt:164cm eyr:2027 hcl:#cfa07d + +hgt:75cm hcl:#1e8137 byr:1986 ecl:blu eyr:2022 pid:796688423 +iyr:2012 + +eyr:2026 +ecl:#3013af hcl:z pid:#e8597f hgt:123 iyr:2025 byr:1942 + +hcl:z hgt:177in +iyr:1993 pid:#4c9348 byr:2008 eyr:1989 + +pid:123524366 byr:1935 +hgt:156cm hcl:#7d3b0c +iyr:2020 ecl:brn eyr:2020 + +hcl:z eyr:2038 pid:7663741757 ecl:gmt hgt:174 +byr:2008 iyr:1939 +cid:225 + +hcl:#888785 hgt:172cm +ecl:oth pid:500711541 eyr:2027 +byr:1931 iyr:2012 + +pid:575447108 ecl:amb byr:1943 +hcl:#888785 hgt:173cm eyr:2024 + +eyr:2021 iyr:2010 pid:178773264 hgt:157cm byr:1965 hcl:#bb7bcf ecl:amb + +iyr:2023 ecl:#35bd84 byr:2020 +hgt:72in +eyr:2037 +hcl:#6b5442 +pid:421311669 + +byr:1921 iyr:2011 +pid:146088688 +eyr:2023 hcl:#15ed24 hgt:183cm +ecl:brn + +hcl:#b6652a cid:243 +byr:1993 eyr:2024 +iyr:2014 hgt:172cm +pid:771275594 + +eyr:2024 +hcl:#cfa07d pid:858807920 cid:293 hgt:157cm ecl:hzl iyr:2013 byr:1984 + +ecl:blu hgt:193cm cid:73 hcl:#18171d eyr:2026 +iyr:2016 pid:124151812 byr:1945 + +ecl:amb iyr:2018 +pid:214555737 hgt:157cm +eyr:2028 +byr:1925 hcl:#866857 + +pid:5633250409 +hcl:4ef7d8 +byr:2004 iyr:1958 +hgt:96 +eyr:2038 ecl:xry cid:274 + +byr:1972 pid:401239851 hgt:184in hcl:z iyr:2017 +eyr:2030 ecl:#cb289a cid:140 + +hgt:175cm +byr:1926 hcl:#cfa07d eyr:2029 ecl:gry pid:325039730 iyr:2017 + +cid:101 hgt:166cm byr:1986 ecl:amb +hcl:#7d3b0c iyr:2013 +pid:413769688 eyr:2024 + +hgt:159cm cid:311 +byr:1993 eyr:2028 pid:188cm ecl:oth hcl:#602927 iyr:2013 + +pid:565831038 +ecl:amb +hgt:155cm hcl:#fffffd cid:335 iyr:2016 +eyr:2029 byr:1997 + +hgt:122 +byr:2022 +eyr:2028 ecl:blu iyr:2017 pid:269710626 hcl:#b6652a + +cid:196 +byr:1953 hcl:#6b5442 iyr:2010 +pid:216121215 hgt:188cm ecl:blu + +iyr:2011 hcl:98166c hgt:62cm +byr:2028 +eyr:2024 +pid:792478385 ecl:grn + +hcl:#efcc98 iyr:2012 pid:020039675 eyr:2021 byr:1974 hgt:156cm +ecl:hzl + +cid:123 hcl:#7d3b0c +byr:2026 eyr:2004 iyr:2012 ecl:oth pid:349203133 hgt:160cm + +pid:085461475 +byr:1962 iyr:2020 hcl:#623a2f +eyr:2024 +cid:80 ecl:brn +hgt:154cm + +ecl:oth hgt:156cm iyr:2016 +hcl:#6b5442 +byr:1973 +eyr:2021 pid:539898580 + +iyr:2026 hgt:191cm +hcl:z +byr:1930 pid:#abc2f0 ecl:blu cid:242 eyr:2024 + +cid:167 +hgt:179cm +iyr:2017 eyr:2021 pid:756797571 byr:1949 ecl:brn hcl:#a97842 + +byr:1975 eyr:2030 +ecl:oth hgt:169in pid:4031206183 hcl:#733820 iyr:2017 cid:244 + +ecl:#54cfeb hgt:152cm +iyr:2026 hcl:36b4b9 +byr:2030 +pid:#fa1cb9 eyr:1964 + +byr:1974 cid:99 hcl:9e3296 +eyr:2032 +pid:686747414 +iyr:1995 +ecl:amb + +iyr:2030 ecl:oth hcl:z byr:1979 +pid:114661006 hgt:191cm eyr:1941 + +hcl:#341e13 iyr:2014 byr:1953 +pid:188326193 ecl:gry hgt:189cm cid:283 +eyr:2030 + +byr:1975 +pid:092061576 hgt:73in eyr:2023 +ecl:brn cid:227 hcl:#5e9d91 +iyr:2011 + +hcl:#7d3b0c hgt:167cm cid:141 +eyr:1957 byr:2012 ecl:gmt iyr:2019 pid:#1b7c8a + +hgt:168cm hcl:#c0946f pid:599500784 byr:1930 eyr:2023 ecl:hzl cid:113 +iyr:2013 + +eyr:2030 hcl:#b4cb4f +hgt:68in +ecl:brn byr:1923 pid:699162086 + +iyr:2013 +ecl:dne hcl:z eyr:1971 +pid:#580add byr:2020 +hgt:190cm + +hcl:#ceb3a1 +byr:1976 eyr:2020 +cid:162 iyr:2016 +hgt:168cm +ecl:hzl + +pid:050478613 hgt:59cm +iyr:2017 +ecl:grn byr:2030 hcl:#cfa07d eyr:2025 + +pid:352943968 eyr:2025 byr:1980 iyr:2014 ecl:gry hcl:#c0946f +hgt:193cm + +pid:328621931 cid:310 hgt:170cm +hcl:#733820 byr:1955 +iyr:2016 +eyr:2028 ecl:hzl + +hcl:#866857 +pid:095858739 byr:1956 +iyr:2018 hgt:193cm +ecl:hzl +eyr:2029 + +pid:70973661 eyr:2039 ecl:gry +iyr:2016 +cid:291 +hcl:#623a2f hgt:97 + +hcl:4d51a8 +eyr:1978 +ecl:gmt +byr:2029 iyr:2022 +pid:34507041 hgt:61cm + +byr:1989 ecl:brn pid:769582914 +eyr:2026 cid:218 +iyr:2020 hcl:#866857 hgt:184cm + +ecl:brn +iyr:1998 cid:227 +hgt:162in +byr:2026 +hcl:#602927 eyr:2027 pid:236998728 + +ecl:gry byr:1984 hgt:157 cid:295 +eyr:2020 +iyr:2018 hcl:#733820 +pid:037871534 + +hgt:166cm hcl:#c0946f pid:412146401 +iyr:2011 +eyr:2022 +byr:1938 +ecl:brn + +ecl:brn cid:95 byr:1981 eyr:2030 hcl:#efcc98 pid:777041035 hgt:152cm iyr:2011 + +eyr:2024 hgt:89 pid:3761913749 iyr:1939 byr:1967 hcl:a222f6 cid:165 ecl:#7fe574 + +cid:339 hgt:156cm +ecl:brn iyr:2013 byr:1951 hcl:#efcc98 eyr:2026 +pid:863566946 + +ecl:brn hcl:#6b5442 eyr:2023 +pid:787129723 byr:1949 iyr:2015 + +pid:#7f615a +cid:202 hcl:#6b5442 eyr:2028 +ecl:#a5419c +hgt:75cm +iyr:2011 +byr:2001 + +pid:864001133 +cid:236 +byr:1943 hcl:#733820 ecl:dne eyr:2025 hgt:171cm iyr:1989 + +pid:193073684 ecl:grn byr:1962 iyr:2014 +hcl:#cfa07d hgt:189cm +cid:321 eyr:2029 + +byr:1959 +hcl:#b6652a +eyr:2026 +hgt:159cm pid:815014918 iyr:2011 ecl:amb + +iyr:2017 hgt:182cm +hcl:#a97842 eyr:2023 ecl:grn pid:656177536 +byr:1973 + +eyr:1923 ecl:grn +cid:138 iyr:2020 +hgt:164cm byr:1958 hcl:#c0946f pid:783366277 + +iyr:1932 hgt:172 ecl:blu +hcl:#733820 byr:1962 pid:554221464 + +cid:169 pid:922622614 +byr:1942 hcl:#ceb3a1 hgt:169cm eyr:2024 +ecl:gry iyr:2017 + +cid:219 ecl:grn +hgt:156cm byr:1998 eyr:2021 +iyr:2017 hcl:#ceb3a1 pid:450186263 + +ecl:amb hgt:179cm pid:768428582 iyr:2010 eyr:2023 byr:1952 hcl:#fffffd + +eyr:2024 +hgt:193cm +iyr:2017 pid:469033795 byr:1979 hcl:#18171d cid:67 ecl:amb + +iyr:2016 byr:1937 pid:798267514 hgt:155cm hcl:#866857 eyr:2026 +ecl:oth + +hgt:172cm hcl:#866857 iyr:2018 pid:662186551 +byr:1996 +eyr:2025 ecl:amb + +pid:2854521962 +iyr:2021 +ecl:zzz +hcl:12f1ba eyr:2037 hgt:159cm +byr:1937 + +ecl:oth pid:488050418 byr:1927 hcl:#a97842 hgt:153cm iyr:2013 eyr:2024 + +pid:119536312 ecl:#2036ad +hcl:543178 iyr:2020 +byr:2013 +hgt:177cm +eyr:2022 + +pid:788908662 hcl:#602927 eyr:2029 +ecl:oth byr:1930 +iyr:2020 +hgt:179cm + +byr:1972 +pid:053386972 iyr:2014 ecl:grn hgt:65in hcl:#cfa07d + +pid:9828921035 ecl:blu +hcl:z hgt:152in +eyr:1949 byr:2010 + +cid:157 pid:097910554 byr:1999 +hgt:159cm hcl:#6b5442 ecl:blu eyr:2024 +iyr:2010 + +hcl:#a97842 +eyr:2040 ecl:#f8ad77 +hgt:173cm +byr:2019 iyr:2010 +pid:#d16a6e + +ecl:dne hgt:191cm iyr:2020 hcl:#b6652a +eyr:2021 pid:571971509 byr:1983 + +hcl:#18171d iyr:2016 pid:159074622 +eyr:2027 hgt:163cm byr:1954 +cid:257 + +pid:243560302 cid:58 +hcl:53a4cf byr:2012 +ecl:#fdbfb8 eyr:1920 hgt:179 iyr:2026 + +pid:040606106 eyr:2030 hgt:188cm +byr:1969 +iyr:2012 hcl:#ceb3a1 ecl:amb + +eyr:2022 +hgt:175cm hcl:#b6652a byr:1967 pid:269969031 +iyr:2018 + +hcl:#18171d cid:278 byr:1931 +pid:134809791 +eyr:2035 ecl:#44e6cd iyr:1993 + +hgt:177in +ecl:utc cid:289 +iyr:1923 +hcl:13a67a pid:3045345984 byr:2030 eyr:1944 + +pid:839901650 eyr:2030 +ecl:grn +byr:2015 iyr:2017 hgt:168 hcl:131f4e + +iyr:2015 pid:529736732 ecl:brn hgt:176cm +eyr:2026 byr:1952 hcl:#6b5442 + +hcl:#c0946f +cid:323 pid:303966428 iyr:2019 +eyr:2027 hgt:170cm +byr:2001 +ecl:brn + +pid:193678728 hgt:72in eyr:2027 iyr:2015 byr:1951 ecl:gry hcl:#18171d + +eyr:2026 cid:283 +iyr:1938 pid:687430885 +hgt:186cm +byr:1949 ecl:#521638 hcl:d13b2f + +eyr:2024 hcl:#ceb3a1 iyr:2013 ecl:brn +hgt:168cm pid:792088241 + +hcl:#888785 ecl:amb +byr:2009 iyr:2015 +hgt:151cm +eyr:2020 pid:223927808 + +byr:1926 +pid:717704850 +hcl:#623a2f eyr:2022 hgt:64in iyr:2018 ecl:gry + +eyr:2023 byr:1954 +hgt:169cm +ecl:hzl +iyr:2010 pid:116868997 hcl:#18171d + +ecl:hzl byr:1965 hcl:#a97842 iyr:2011 pid:506354451 hgt:172cm eyr:2029 + +eyr:2022 pid:994565705 +iyr:2013 ecl:brn hcl:#623a2f +byr:1979 + +iyr:2011 +byr:1931 hgt:183cm hcl:#284f26 cid:306 +ecl:amb eyr:2021 +pid:977533079 + +eyr:2027 +iyr:2011 ecl:gry +byr:1993 +pid:272334781 hgt:161cm hcl:#9a35b6 + +eyr:2026 +hcl:#602927 ecl:blu +pid:212300161 byr:1946 +cid:193 iyr:2020 hgt:157cm + +pid:538594567 byr:1976 eyr:2027 hcl:#efcc98 iyr:2011 hgt:154cm ecl:oth + +byr:1949 +hcl:z ecl:#ce67aa +eyr:1942 pid:7978941589 iyr:2025 hgt:161in + +hcl:#c0946f +cid:55 +byr:1963 ecl:blu hgt:161cm +pid:547120453 iyr:2015 eyr:2021 + +hgt:173cm eyr:2022 +iyr:2016 byr:2001 +ecl:hzl pid:239803460 + +hcl:#b6652a ecl:oth eyr:2021 hgt:167cm pid:401266644 iyr:1969 byr:1974 + +eyr:2030 pid:581963885 +hcl:#64cb23 +ecl:blu +byr:1928 hgt:181cm iyr:2018 + +pid:186338247 +ecl:hzl hgt:193cm hcl:#ceb3a1 +eyr:2022 iyr:2010 + +iyr:2015 ecl:gry hgt:159cm eyr:2027 hcl:#ceb3a1 +byr:1925 pid:715902111 cid:149 + +iyr:2018 hcl:#623a2f eyr:2020 hgt:162cm ecl:grn cid:135 +byr:1922 +pid:373216777 + +eyr:2020 pid:749899012 hcl:#888785 ecl:brn +iyr:2010 cid:225 hgt:172cm +byr:1972 + +iyr:2020 hgt:178cm ecl:grn hcl:#18171d pid:613792489 cid:240 +eyr:2028 +byr:1972 + +iyr:2015 byr:1938 eyr:2026 +cid:113 ecl:grn +pid:846231640 hgt:161cm +hcl:#b6652a + +ecl:gry +hcl:#ceb3a1 +byr:1956 cid:338 pid:936012518 +hgt:62in +eyr:2029 iyr:2016 + +pid:730866353 ecl:brn byr:1986 +iyr:2014 +hgt:190cm +eyr:2021 hcl:#a97842 cid:126 + +eyr:2021 +cid:180 pid:958310635 ecl:brn iyr:2015 hgt:189cm hcl:#efcc98 + +hgt:188cm ecl:hzl pid:179001863 iyr:2016 eyr:2029 hcl:#341e13 byr:1932 + +cid:77 eyr:2027 hcl:#623a2f iyr:2016 ecl:brn hgt:170cm +byr:1947 + +hgt:66in pid:617518313 iyr:2013 byr:1977 hcl:#b6652a ecl:brn eyr:2025 + +pid:787861420 +iyr:2014 hcl:#623a2f hgt:61in +ecl:oth cid:78 +eyr:2022 byr:1975 + +ecl:hzl +iyr:2017 eyr:2028 hcl:#602927 +byr:1958 pid:985208714 +hgt:160cm + +byr:2002 +iyr:2013 +hcl:#341e13 pid:188110633 ecl:gry hgt:169cm +eyr:2025 + +byr:1981 +eyr:2028 +hcl:#341e13 ecl:amb hgt:160cm cid:121 +iyr:2015 pid:963848397 + +iyr:2013 hcl:#866857 pid:#db8648 eyr:2021 ecl:gry +byr:1975 +hgt:153cm cid:114 + +hgt:109 +cid:287 hcl:#6b5442 +iyr:2028 byr:1926 eyr:2036 pid:2378208387 +ecl:#245a62 + +pid:857722366 +byr:1975 eyr:2027 +ecl:grn iyr:2019 hcl:#0afad1 +hgt:66in + +byr:1935 hcl:#cfa07d hgt:173cm ecl:brn eyr:2021 iyr:2019 + +cid:66 eyr:2024 hcl:#efcc98 byr:2002 iyr:2010 +hgt:176cm pid:697153153 ecl:amb + +iyr:2019 +hcl:#cfa07d ecl:blu +pid:695914972 +eyr:2024 +hgt:158cm +byr:1943 + +ecl:xry hgt:62in +pid:14733148 cid:148 +iyr:2016 byr:1925 hcl:#6b5442 +eyr:2028 + +iyr:2025 +cid:53 hgt:132 ecl:gmt hcl:159b19 +pid:156cm +byr:2025 eyr:2001 + +hcl:#623a2f ecl:oth byr:1974 iyr:2018 hgt:161cm eyr:2029 pid:6826285172 + +ecl:gry +byr:1956 hcl:#7d3b0c hgt:170cm iyr:2020 + +eyr:2020 +pid:#946a88 hgt:186cm hcl:#733820 byr:1946 ecl:#016645 iyr:2015 + +hgt:181cm hcl:#888785 iyr:2013 pid:634152817 +byr:1982 cid:245 ecl:grn eyr:2021 + +ecl:brn +pid:737531770 iyr:2010 +eyr:2020 +byr:1929 hgt:189cm hcl:#c0946f + +cid:158 iyr:2019 hcl:#341e13 eyr:2027 ecl:amb +byr:1986 pid:834976623 + +pid:976934668 cid:61 eyr:2020 iyr:2020 +hgt:76in byr:1927 ecl:amb +hcl:#e05ee3 + +pid:526042518 iyr:2019 eyr:2027 hcl:#623a2f byr:1976 ecl:amb + +pid:279367290 hcl:#a97842 hgt:158cm +eyr:2027 +byr:1959 +iyr:2020 + +ecl:xry byr:2028 +pid:357216861 hcl:#a97842 eyr:2024 hgt:66cm +iyr:2012 + +hgt:188in +ecl:lzr cid:64 eyr:1958 byr:2014 hcl:z pid:285207570 iyr:2026 + +eyr:1973 iyr:2017 ecl:oth cid:282 pid:695814158 +hcl:z + +iyr:2010 pid:661168409 +hcl:#53c696 +hgt:186cm ecl:amb +byr:1960 +eyr:2029 + +eyr:1982 hgt:169cm +iyr:2002 byr:2025 hcl:327f93 pid:831648100 + +byr:1967 ecl:oth +eyr:2021 +hcl:#602927 iyr:2014 +pid:274974402 hgt:183cm diff --git a/2020/inputs/day_5.txt b/2020/inputs/day_5.txt new file mode 100644 index 0000000..11800ca --- /dev/null +++ b/2020/inputs/day_5.txt @@ -0,0 +1,901 @@ +BBFBBBBRRL +FBFFFFBLRL +FBFBBFFRLR +FBFFFBFRLR +FFBBFFFLRR +FFBBBFFRRR +BFBBFBFLRL +BFFFBFFLRR +FBBBFFBLLR +BBFFBBFRRL +BFBBBBBRLR +FBBBBFFLLR +FFBFFFBLLR +FFBBFBFRRR +BBFBFFFRRR +FFBFFBBLLR +FBBFFBBLRL +FFBBBFBLLL +FFBFFBBLRR +FBFFBFBLLR +FFFBBBFLLL +BFBBFBFRLR +BBFBBBFLLL +FBBBFBBRLL +FFBBBBFRRL +BFBBBBFLRR +BBFBBFBLRL +FFBFFFBLRL +BFBBBBBRRR +FFFBFBFLLR +BFBFBBBLLR +FFBFBBBLRL +FFFBFBBLRR +BFFBFFFLLL +BFFFBFBLRL +BFBFFFBRLL +BBFFFFBRLR +FBBFFFBLRR +BFFFFBFLLL +BBBFFFFLLL +BFBFFBBRLL +BBFBFFFRRL +BFBBFFFRLR +BBFBFBFRRL +FBBFFBFRRL +BFBFBFFRRL +FFBFFFFLLR +FBBBFBBLLR +BBFFBFBRLL +BFFBFBBRLL +FBBFFFFRRR +BFFFBBBLRL +FFBBFFBLLL +FFFBBFFRRL +FBFBBBBLRR +FFBBBFFLLL +FBFBFFBRRR +FBBFFBBLLR +FBFFBFFRLL +BFBBBFFRLR +FBFFBBBLRR +FBFFFFBRLR +BBFFBBFLRL +FBFFBBFLRL +FBFBBFFRRR +BFBBBFBLRL +FBFBFFFLLR +FFFFBBBLLR +BFBFFBBLLR +BFFBBBFRLR +BFBBBFFLRR +BBFFFBBLLR +BFFFBBFLRL +FBFFBFBLRL +FBBBFFFRRL +FBFFFFBLLL +BFBFFBBRLR +BFBFBBBLRL +BFFBFBBRLR +FBBFBBBLLR +FFBFBFFRLL +FFFBBBBLRR +BFBFFFFLLL +BBFBFBBLLR +BFFFBBBRLR +FFBFFBFRLR +FBBFBBBLRL +BBFFFBBLLL +FFBFFBBRRR +FBBBBFBLLR +BBFBBFFRLL +BFBBBBFRLR +BBFBFFBRLR +FFBFFFFLLL +BBFBFBFRLL +FFBFFBBRLL +FBBFFFFRLR +FFBBBBBRRR +BBFFBBBLRL +BFFBBFBRLL +BFFFBBFRLL +BFFBFBFLRL +FBFFFFFRRR +BFFBFBBRRL +FBFBBBFLLR +FBFBFBBRLL +BBBFFFFRRR +BFBFBFFLRL +FFFFBFBRLL +FFBBFFBLRL +BBFFBFBLLL +BFFBBBBRLL +BFFBBBBRRR +BFBBBBFRRL +BBBFFFBLRL +FFBBFFFRRR +BFFFFFBRLR +FFFBBFBLLL +BFBFBBFRLR +FBBBFBFLRL +BFBFBFFRLR +BBFBBFFLRL +BFFFBFBLLL +BFFFFBBRLL +FFBFFFFRRL +BFFBFBBLLR +FFFFBBBLLL +FBBFFBBRRL +BFBFFFFLLR +FBFBFBFRLL +FBBBBBBLRR +BBFFFFBLRR +FFFFBFBRRR +FBBBBFBRLL +BBFBFBBLRR +FFBBFBFLLL +BFBBFFBLRL +FFFBBBBRRR +BFBBFFFRLL +BFBBBFBRRR +FFFFBBFRLR +FFBBFBFLRR +FFFFFBBLLR +BBFBBFBRLL +FBFBBBBRLR +BBFFFFBLRL +FBBFFFBLLR +FFBFFBBLLL +FFFBBBFLLR +FFFBBBFRRR +FFBBBFBRRR +FFFBBFFRRR +FFBBFFBLLR +BFBFFBFRRR +FFBFBBFLLR +BFFFFFFRRR +FFBFFBFLRL +BFFBFBBRRR +FBFBFFFRLL +BBBFFFBLLL +BFBBFBFRRL +BFFFFFBLRR +FBBBBBFRRR +FFBBBBFLRR +BBFBBBBLRR +BBFBFBFLLR +FFFFBBFRRR +FFBBBBBLLR +BFFFBFBRLR +FBBBFFBLLL +FFFFFFFRRR +FFFBFBFRRL +BFBBFBBLRR +FBBBBFBLRL +FBBBBFBRRR +BFFFFBFRRR +BFFBBFFLLL +FBBFBFBLRL +BFBBFFFRRL +FBFBFFBRLR +FBFFBFFLRR +BFFFBFBLLR +BFBBFFBRRR +BBFBBFBLLL +BFFBFFFLRR +FFFBBFFRLL +BFBBFFFLLL +BFFFBBBRLL +FBFFBBFRRR +FFBFBFBLLR +FBFFFFBLRR +FFBBFFFLLL +FFFBBBBRRL +BBFBFFFLLL +BBFFBBFLLR +BFBFBBBRRR +FBBBBFBRRL +FBFFFBFLLR +FBFBBBFRRR +BFFFBFBRRL +FBFBBBFLRL +BBFFBFFLRL +BBFBBFFLLR +FFFFBFFRLL +FFFBBBBLRL +FBBBFBFRLL +BBFFFBBLRL +FFFBFFBLRR +BBFBFBBRRL +FFFFBBBRRR +FFBBBBBLRL +FFFFFFBLLL +FBFFFFFRRL +FFFFFBBLRR +BFFFBBBRRL +FBBFFFFLRL +FFFFFBBRLR +FFBFFBFRLL +FFFBBBFRRL +BFBBBFFLRL +FFFFFBFLRR +BFBFBBBRLR +FBFBBBFLLL +BFBFFBFLRL +FFBFBFFRRR +FFBBFFFRLL +BFBFBFFLLL +FBFBFBBRLR +BFFBBBFRRL +FBFFBBBRRR +FBFBFBBLRR +BFBBBBFLLR +FFFBFFFRLR +BFBBFFBRRL +BFFFBFFLRL +BFBFBBFRRR +FBBFFBFLLL +FFFFFFBLRR +FBFFBFBLRR +FFBBBFFLRR +FBBBFFBRLL +BFFFBBBRRR +FFBFFFFRLL +BBFFFBFRRR +BFFBFBBLLL +BFBBFFBRLR +FFBFBBBLRR +FFFBFBBLLL +FFFBBFFLLL +FBBBBBBLRL +BFBFBBBLLL +BFBFFFFRRL +FFBFBBFRRR +FFBFBFBRRL +FFFBBBBRLL +BFFBFFBRLL +BBFFFFBRRL +FFBFBFBLLL +FFBFBFBRLL +FBFBBBFRRL +FBFFBBFRLR +BBBFFFFLRL +FBFBFFFRRL +FFFBFBFRLR +FBFBFBBRRL +BFBBFBBLLL +FFBBBBBRLL +BBFFBFBRRL +FFFBFFFRRR +FBBFBFBLLL +BFFFBFFRLR +FBFBFFBRLL +BBFBBFFLLL +FBBBBFFLRR +FFBBBFFLRL +FBBBFFBRRR +FFBBFBBRLR +FBFBBFFLLR +BFBBBFFLLR +FFFBBFFLRR +FBFFBFFLRL +BFBFBFFLRR +BBFBFFFLLR +FFFBBBBLLR +FFBBFFBRLL +BBBFFFBRLL +FBFFBFBRRL +BFBFFFFRLL +FBFBFBFRLR +BBFFFFFLLL +FFBFBBBLLR +FFBFBFFLRR +FBBBBFBRLR +FFBFBBBRLR +BFFBBBBLRL +FFBBBBBRLR +BFBBBFFRRR +FBFBBFBRLL +FFBFFFBRRL +BBFBFBFLLL +BFBBBFBRLR +BFBBFBFLLR +FBBFBFFRLL +FFBFBBFLRR +BFFBFBFRLL +FFBBFBBLRL +FBFBFBBLRL +BBFFFBFLLR +BFBFBBBLRR +BBFFBBBLLR +BBFFFFBRRR +BFFFFFBLRL +FBBBFBBRRR +BFBFFFBLLL +FFFBBFFLLR +BFFBBFFLLR +BBFBBBBLRL +FBBFBFFLRR +FBFBFFBLLR +BFFFFFFLLL +BFFBBFFRLL +BBFFFFFLLR +FBFFBBFRRL +FBBFFFFLLR +BFBFFBBRRL +FFBFFFBLLL +BFFFFFBLLR +FFBBBFBRRL +FFBBBBFLLR +BFBFFFBLLR +FFFFBFFRLR +BFBBFFBRLL +FFBBBBBLLL +FBBFBFFRRR +BFFFFFFLLR +FFBBBBBLRR +FFFFFBFRRR +BFFFBBBLLL +BFFFBFFRRR +FFBBBFBRLR +BFFBBBBLRR +BFBBBFFRRL +BFBFBFFRRR +BFBBFBBRLR +BFBBBBFRLL +FFBBBBFLLL +FFFBBFBLRR +FBBFBBFRLR +BBFBBFFLRR +FBBFBBBRRL +BFFBFFFRRL +BFFFFBFLRR +FFBFBBFLLL +FFBFBBBLLL +FBFFBFBRRR +FFFBFFBRLL +BFFFFBFLRL +FFFFBFFLLR +BBFBBBBRLL +FBFBBFBRRR +BFFFBBBLRR +FBFFFBFRLL +FFBBBFBLRL +FBFFFBBLRR +FFBBFBFRLR +FBBBBBFLRL +FFFFBFBLRR +BFBFBFBLRR +FFBBFFFLRL +BFFBBBFLLR +FFFFFFBRLR +FFBBBFBLRR +FBFBBFFRLL +BBFBFBFRLR +FBBFFFFLLL +BFBBFBFRRR +BFFBBBFRRR +FBFFFBFLRR +FBBFFBFLRL +BFBBFFFLRR +FFBFFFFLRL +BFFBFFBLLL +FFFBFBBRRR +BBFFBFFLRR +BBBFFFFRRL +FBBBFFBLRL +FBBFFBBLRR +FFBFBFFLLR +FFFBBFFRLR +FBBBFBBRLR +FFFFBBBLRR +BBFFBFBRRR +FBFBBFFLRL +FBBBBFFLLL +FFBFFBBRLR +BBFFFFFLRR +FFBFBFBRLR +FFBFBFBLRL +FBBBFBBLRL +FFFBFBBLRL +FBFBFFFRRR +BFFBFFFRLR +BFBBFFBLLR +BFBFFBFRLL +FBFBFBFRRR +FBFFFFBRLL +FFFFFBBRRR +FBBBFFFLRL +FFFBFFBRLR +BFBFFBFLRR +FBBFBBFRRL +BFBBBBFRRR +BFFFFBBLRR +FBFFFFFLLL +BFBFFFBRRL +FFFBFFBLRL +FFBFFFBLRR +FBBFFBFRLL +BBFBFFBLLL +BBFFBBFLLL +FFBBBFFRLL +BFBBFFFLRL +FBBFBFFLLR +FBFBFFBLLL +FFBBBFFLLR +FBBFFBFLRR +FBBFBBFRRR +BFFFFBBLLL +FFFBFFBLLR +FBFBFFFRLR +FBFBFBBRRR +FBFBBFBRRL +BBFBBFBRRR +FFFFBBBRLL +FBFFBBBLRL +BBBFFFFRLL +FBFFFBFLRL +BFFFFBFLLR +FBFBBFFRRL +BFFBFBBLRR +FBFBBBBRRL +FBFBFBBLLR +FBFFBBFLRR +FFFFBFFLLL +BFBFFFFRRR +BBFFBBBLRR +FBFFFFFLLR +BBFBFFFRLR +BFFFFBBRLR +FBFFFFFLRL +FBBBFBBLRR +BFFBBFBLLL +BFFBFBBLRL +BFFBBBFRLL +FFBFFBFRRR +BFBFBFBRLL +BBFBBFBLLR +FBFBBFBLRL +FBFFFBBRLR +BBFBFFBRLL +BBFFFBFRLR +FBBFFFBLLL +BBFBBBBLLL +BFFFFFFLRR +FBBBBBFRLL +BFFFBFBRRR +BFFFFFFLRL +FBBBBFBLRR +FBFFBBBRLR +FFBBFBFRRL +FFBBFBBRRL +FFFBFBFRRR +FFBBBBFLRL +BFBBFFFRRR +FBFBBBBRLL +FBFFBBFRLL +FFBFFFFRRR +BFFFFBBLLR +FBFBBFBLLR +BBFFBBBRRR +FBBFBBBRLR +BFBFBFFRLL +BFFBBFBLRL +BFFBFFFRRR +FFBBBFBRLL +FBFFBFFRRL +FBBBBFFRRR +FFFBBBFRLL +BBFFFBBRLL +BBFFFBBRLR +FFBBFFFRRL +BBFFBFBLRR +BBFBFFBRRR +BFBBBBBLRR +BFFBBFFLRL +BBFFFFBLLL +FFFFBFBRRL +FBBFFBBRRR +FBBBFFFLRR +FBBFBBFLRR +FBBBFBBLLL +FFFFBBFLRL +FFFFFBBLLL +BFBBBBBLLR +BFBFFFFLRR +FBFFFFBLLR +BBFFBBBRLL +FBFFBFFRRR +FFBBFBFLLR +BBFBBBFLRR +FBBBBBBRLL +FFFFFFBLLR +FFFFFBFRLR +FBFFBFBRLL +BBFFBFFRRR +BFFBFFFLLR +FFBBFBBLRR +BBFFBBBRLR +FFBBFFBRRL +FBBBBFFRRL +BFBFFFFRLR +BFBBBFBLLL +BFBFFFBRRR +FBBBFFFRLR +BFBBFFBLRR +BBFBBFFRLR +BBFFFBBRRR +FFFFBBBRRL +FFBFBBFRLL +FBFFFFBRRL +FBBBFFBRLR +FFBFFFBRRR +FBBBBBBLLL +BFFBFFBLRL +FBFFBBBRLL +BBFBBBFRLR +BFBFBFBRLR +BBFFFFBRLL +FFBBFBBLLR +FFBBFFBRLR +BBFBBBBRLR +BFBBBFBLLR +FFFFBFFRRR +BBFFFBFRRL +FBBFBBBLLL +FFFBFFFLRL +BFFFFBBRRR +FFFBFBFLRL +BBFFBBFRRR +FBBFFFFLRR +FFFBBBFLRL +BFFBBBFLLL +BFBBFFBLLL +FFFFFFBLRL +FBFFBFFLLL +FBBBBBBRRR +FBBFFBBRLR +BFFFBBBLLR +BBFBBBBRRR +BFBFBFFLLR +BFBFFBFRLR +FBBBFFFRRR +FFBFBBFRLR +FFFFFBFRLL +FFBFBBBRRR +BFBFFBBLLL +FBBBBBFRLR +FFBBFBBLLL +BFBFFBBLRL +FBBFBFBRRL +BFFBBBBRRL +FBBFFFBLRL +FBBFBFBLLR +FBBFBBBLRR +BFBBBFBRRL +FBBBFBFLLL +BFFFBFFLLR +FBBBFBFLRR +FFBFFBBLRL +BBFBBBBLLR +BFFFBFFLLL +FBFFFFFLRR +BBFBFBBLRL +BFBFBBFRRL +FBFBFFBLRR +BFFFFFFRRL +BFFFFBFRLR +BFBBFBBRLL +BBFFFFFRLL +FFBBFFFLLR +FFFBFFFLRR +FFFBFFBRRR +BBFBFFBLLR +BFFBFFFRLL +FBFBFFBRRL +BFBBBFFLLL +BBFFBFBLRL +FBFBBFFLRR +FBBFBBBRRR +FFFBBFBRLL +FBBFBFBRRR +BFFFBBFLLL +FBBBFFBLRR +BFBFFBBRRR +FFFFFFBRLL +BBFFFBFLRL +BFBFBFBRRR +BFFFBBFRLR +BFBFFFBLRR +FFFBFFBRRL +BBFFFBBRRL +BFBBBFBRLL +BFBFFFBLRL +FFFBFFFLLR +BFFBFFFLRL +BBFBBFBLRR +FBBBFBBRRL +FBBFBFFRLR +FBFFFFFRLR +FBBBBFFRLR +BFBFBBFRLL +BBFBFBFRRR +BFBFBFBRRL +FBBBBBBRLR +BFBFBBFLLR +BFFFBBFRRL +BBBFFFFRLR +BBBFFFBLLR +FBFBBBFLRR +FBFFFBBLRL +FBFFBBBLLR +BFBFBBFLRR +BFBBFBBLRL +BFFFFFBRRL +FFBBFFFRLR +BFFBBFFRLR +BFBFBFBLRL +BFFBFBFRLR +FFBBFFBRRR +BFBBBBBLLL +BBFFFFFRRL +BBFFFFFLRL +FFFBBFFLRL +BFBBFBFRLL +FFFBBBBLLL +FFFFFBFLRL +FFFFBBFLRR +FBFFFBFRRR +BFFBBBBLLL +BBFBBFFRRL +BFFFBBFLLR +FBBBFFFLLL +FFBFFBBRRL +BFBBBFBLRR +BFFBBBFLRL +BFBBBBBRLL +FFFBBBFRLR +FFFFBFFRRL +FFBFBFFLLL +BBFBFFFLRL +BFFFBBFLRR +FFFBFBFRLL +BFBFFBBLRR +FFFBFBBLLR +BBFFFFFRLR +FFBFBFFRRL +FFFFFBBLRL +FBBBFBFRRL +FBBBBFBLLL +FFFFBBBRLR +FBBBBFFLRL +BFBBBBBRRL +BBFFBFBLLR +FBFBFFFLRL +FBFFFBFRRL +FFFBBFBLRL +BFFFFFBLLL +BFFBFBFLLL +FFFFBBFRRL +FFFBFBBRLR +FBFBBBBRRR +FBFFBBBLLL +FFBBBBFRRR +BFFFFBFRLL +BBFBFBBRLR +BFFBBBFLRR +FBBFBFFRRL +FFFFFBFLLL +BBFBFBFLRR +FFBFBBFLRL +BFFBBFBRLR +FFBBBFFRLR +FFFBBFBRLR +FBFBBBBLLR +BFFBBBBLLR +BBFBFBFLRL +BBFFFFFRRR +FFFBFFFRRL +FBBFFBFRRR +BBFFBFFRLL +FFBBFBFRLL +FFFFBFBLLR +BBFFBBFRLL +BFBBBBFLRL +FBFFBFFRLR +BFBFBBFLLL +FFFFBBFLLL +BFBBBBBLRL +FFBFBFBLRR +BFFFFFBRRR +FBFBBBBLRL +FBBFBBFLLR +FBBFFFFRRL +FBFFFBFLLL +FBFFBBBRRL +FFBFFFFRLR +FBBFBBBRLL +FFFFBFBRLR +FFBFBBBRRL +BFFBFBFRRL +FFBFFBFLLL +BFFBFBFLRR +BBFBFFBLRL +BBFFBFFLLR +BFBBBBFLLL +BBFBBFFRRR +BBFFFBBLRR +BFBFFBFRRL +FBBFBFBLRR +BBFBBBFRRR +FFFBBFBLLR +FFFBFFFLLL +FBBBFBFLLR +BFBBFBFLLL +BFBFBFBLLL +BBFFBBFLRR +FFFBFBFLRR +BFFFFFFRLR +BBFBFBBRRR +BBFFFBFRLL +FFFFBBFRLL +FBBFBBFRLL +FBFFFFBRRR +FBFFBBFLLR +BFFBFFBLLR +FFBFFBFLRR +FBFFBFBRLR +FBFBBFFLLL +FBBFFFBRRL +FBFBFBFRRL +FFBFBFBRRR +FBFBFBFLRL +FFFBFBBRLL +FBBBFFFLLR +FFBBBBFRLL +FBFFFBBRLL +BFFBFFBLRR +FBBFBBFLRL +FBFFFBBRRR +FBFFFBBLLR +BFFBFFBRRR +FBBBFBFRRR +FBFFFFFRLL +BBFBBBFRLL +FFFBFFBLLL +FFBFFFFLRR +FBFFFBBRRL +BBFFBFFRLR +FBFBFBBLLL +FBBBBBBLLR +FBFBBFBLLL +BBFBFFFLRR +BFFFFBBRRL +BBFFFBFLRR +FFBFFFBRLL +FFFFBBBLRL +BFBBBFFRLL +BBFBFFFRLL +FBFBBBBLLL +BBFBBFBRLR +BBFFBFBRLR +BFBFFFFLRL +FBBBFBFRLR +FFBFFFBRLR +FBBBBBFLLR +FFBBBFBLLR +BFFBBFBRRL +BBFFBFFRRL +FFFFFFBRRR +FFBBFBBRRR +FBBBBBBRRL +BFFBBFFRRL +FBBFBFBRLR +FBBFFFFRLL +FBBBBBFLLL +FBBFFFBRRR +BFFFFBBLRL +FFFFBFBLLL +FBFBFFFLLL +FBFBBFBLRR +FFFFBFFLRR +FFFBBBFLRR +FBFFBFFLLR +BBFFBFFLLL +FFBFFBFRRL +BFBBFBBRRR +BBFFFBFLLL +FBFFBFBLLL +BFFBFFBRRL +BBFBFFBLRR +FBFBFFFLRR +BFBBFBBLLR +BFFBBFFRRR +FFFFFFBRRL +BBBFFFFLLR +BFBFFBFLLL +FBBBBBFRRL +BFFBBBBRLR +FFBBFBFLRL +FBFBFFBLRL +FFBBBBFRLR +BBFBBFBRRL +FFFFFBFLLR +FBFBFBFLLL +BFBFBFBLLR +FFFBFFFRLL +BFFBBFBLLR +FFBBFBBRLL +FFFBBFBRRL +FBBFFBBLLL +FFFBBBBRLR +FFFBBFBRRR +BBFFBBBRRL +FBBFBFFLRL +FBBBBBFLRR +BBFBFFBRRL +FFFBFBFLLL +FBBBFFFRLL +BFFBFBFLLR +FFBBBBBRRL +BFFBBFFLRR +FBBFBFBRLL +BFFFBFFRRL +BBFFFFBLLR +BBFFBBFRLR +BFFFBBFRRR +FBFBBFBRLR +FFFFFBBRLL +FBBFFFBRLL +BFFFFFBRLL +BFFFBFBLRR +BFFBFFBRLR +FFFFBFBLRL +FFBFFBFLLR +FBBFBFFLLL +BFFBFBFRRR +BBFBBBFLRL +BBBFFFFLRR +BFBBFFFLLR +FBBFFFBRLR +FFFFFBFRRL +FFFBFBBRRL +BBBFFFBLRR +FFBFBBFRRL +FFBBFFBLRR +BBFFBBBLLL +BFBFBBBRRL +BFFFBFBRLL +FFBFBBBRLL +FBFBFBFLRR +FBFFFBBLLL +FBBFFBFLLR +BFFFFBFRRL +FFBBBFFRRL +FFBFBFFLRL +BBFBBBFLLR +FBBFFBFRLR +FBBFFBBRLL +BFBFFFBRLR +BFFFBFFRLL +BBFBFBBRLL +BFFFFFFRLL +FBFBBBFRLL +BFBBFBFLRR +BFBFBBBRLL +BBFBBBFRRL +BFFBBFBRRR +BFBFFBFLLR +FBFBFBFLLR +FFFFFBBRRL +FBFBBBFRLR +FBFFBBFLLL +FFBFBFFRLR +BBFBFBBLLL +FFFFBFFLRL +FBBFBBFLLL +BFBFBBFLRL +FFFFBBFLLR +BFBBFBBRRL +FBBBFFBRRL +FBBBBFFRLL diff --git a/2020/inputs/day_6.txt b/2020/inputs/day_6.txt new file mode 100644 index 0000000..ae67ede --- /dev/null +++ b/2020/inputs/day_6.txt @@ -0,0 +1,2199 @@ +nvlyak +nyvha +yaen +qynia + +kend +endk + +atxcykpvmb +pcvmthyxbak +ayvpcbtkxm +cvpkyabtmx +typbmvckxa + +s +s +s +s + +on +aoqc +owq +coa + +pw +wpi +pwxlhqor +pw + +nx +xn + +dlevrzpucfmsq +pceimlrfsquvd +dpceruqsfmlv +hgxudfpqyvbcslrjname + +kczmswvorg +uryvlqaogmdixs +rmostvg +gsrmovb + +ref +fer + +vmwdhgnlfiyoepsujbk +epudykjwhignmfbovsl +fjvuimnwbkogsldhpey +ibmhuscpgeolfkynvdwj +psjgubfvlhaknodeiywm + +fmnpljusix +vqrefngyjdahclk +lfjons + +y +uiwl + +lsuqkmjinrzhgevfpwto +gkmodihnsjtful +ciguflhkojmtsn +thkjnoufsimgl +oskgmdfljntuhi + +gaktdwxhmqvfrpsuc +hmtwkgipdvaurxqf +akrmpxtughdqwfbv +gumqniswhrdkvftaxp +hagouqxpzrjlmedftywkv + +zkbyecw +kczeybw +wbeyakuzc + +iwdkjlarzfynvechgbxsq +jetfxrzdbcksnavilmwgyh +wvexlryjbizfgkhanqdcs + +vk +kv +kv +vk + +yrguw +rguyw +pwuryg +gnuwry + +dyhkusanvjwc +ukaywncj +uyqjknwac +aknyjcuw +jnukwaytxc + +toczmkldrevywiajgn +jyldmgewcvrozinkat +iynkmatdjerlogzwvc + +pthyrfjgqelxa +qfejxtrynlh +xwdfkuziyhejtqovrmlc + +osjrgc +vohfpa +goc +gjo + +j +jon +j +xdj + +bpqhmgwzakfrtjvuno +eafupgombqnwrkzth +frwqtdngpbhuaklzmo +wgtnuchpkqibfzmravso +mfbtvkghauzopnrwq + +xiocgdwpastbmyj +rdzgcbtfaomsy +dstgbcymozkqal + +xvc +cvx +xvc +xvc + +dhvtlqkeniymjzoa +eoazjnhvtkyqdlm +koltmeyqjhzdva +doumkhrlyzjqeagtcv + +mn +mfhw + +kx +x +jm + +x +xv + +tdhyubvwqfxejslpringc +xqhvtbfwrygsdapjiulnec +vnwbsurdiexghpjtlycqf + +pqtdgsmkolzryca +qjguxdratfeclpmoy + +twnviyzmlk +gknjmyqvziwl + +deoabzihqvycxn +iqcxadpehvry + +dbflcxvnapwgei +pchmodnafl +hadcflpn +dlcfanp + +tk +kt + +peuroxtzyg +iwdcnlqfskmbavjh + +mjfh +ynkbrsdpwoqtagci +lvx +ujxez +xl + +gyuszwb +sioduawzrglb +tsbumxwzg +zwgeuxbs + +tujvkwpy +tyvrpmjfk +vwpkuyjt + +wdkqailvjmfcshugy +qugwvlxdsikhfmyjac +dkiscawvyfqhmjlug + +noblsu +snloub +sulobn +lonubsm + +osecqjbfg +fljbmiose +ojesfbt + +zmctviabre +ajzmicetrvb +ctmivabzre +yrztbmieavc +mivcbtazer + +tyql +osmjgxzrcakn +iwftdbl + +nmqflphkvyjcatgbzd +jxzemtvdknwqr + +ilxrytkdpmsevfjchozqw +tpdrjxwihvlycozemsfkq +hitwfmzvjpylcodbqxsrke + +flhp +pflh + +ao +a +o +o +gljzn + +ajmkvwqu +ogvjzwta +whalvuj + +mhktpynfrjgblaqueox +anmjxplvibukhztqersy +tabljcpemkyrxhunwq + +lnkvfawqo +nofpsqwavylz +vofwalqen +hcnowiaqlfv + +dofxbaqrtnyvkpljmhsu +uklstfynmbxhapojqi +tufmnpaqyojsklxhb +oanlusqmxftkpjbhy + +tpjle +the +vtpez +ytern +ouecxwfkt + +jbna +xepqbmufn +ybjni + +jklhaxoqysbt +tzwpcf +tenfcvdmpzu + +kyqumgfrdiapzwojtvch +fvczqjrgadiwhnpluomk +dpwkmrjzauiqvfgcho +nkpwrmzidfahcvjuogq +azrkxioghpvcudmwqfj + +udjshwgpeaozimcl +fylwnoevcza +evlakborcfwz + +xhued +iubgewo + +lywovcemagd +ahveyomxsl +oqzyfljavbe + +pkyn +befycqpi +pysk +yp + +mgi +mgi +digm +gmi + +cgdqeoyfjranxuv +lwnkzeptsdqihvcujmg + +wzqrhgibdxuyl +ludbwqxgiyr +yruxibwdgql +bgtwqxruylid +buyrwlidgxq + +gqwvxspbl +xvbwpsgql +bspgxwvql +cwlxsvqgpb +sgpxqblwv + +camqk +onaslperix +jauw +yatm + +z +z +z +z +z + +fx +fxe + +goemcr +roegm +sgmxiero +ogmert +germo + +czgdxtiprhnwqeujkfl +dyhmkanzwbv + +n +e + +dkcjqbw +o +gp +h + +zbwcu +ubf +mveurnab + +tqwbxuc +qcwutxb +ucbxwqt +xqwutbc +xqtuwcba + +uwhqrt +wrtq +trwq +crtqw +wrtqc + +rqfntm +nrqm +rqmn + +limsht +alstikh +ilhst +uhitls +lsahti + +oaex +vsgyo +lziu + +cwqdlxbst +cdxtlwbsq + +hgqc +hgdq +qhg + +eh +he +eh + +zfutalwkxms +ukxltsfzmwa + +zpklocsqgwyhb +zobyqhlcksgpw +zhspqwovjylkgbc + +ymkudfqethwgji +emtuyfwghjdqki +zwyeumktfhjdirgq +wymqgifkudjteh + +edhqnrxtpz +tqdxznrhep +qzepndrthx +exzrhnqptds +zetyhrpdqunx + +vmleax +valxum +vpmlax +axlpvumz +clvamxbn + +ebt +xr +rl +u + +vzny +nz +nz + +ywebzj +ywefjzb +bxwnjcyzkep +zjeywfpb +yldrbhsizajewvu + +hfd +dmf +fadh +dvmf +fcousnld + +egar +hwnrgzcp +bgofedjr +jkruvsylg +rdvgue + +jsge +hesqg +esug + +xaoz +ocuqev +fwgrlp +otxv + +fzemjdhwb +xhdmjzbe + +ytsfpumedxqvzhl +fdteschymvxqlpz +phyrfwtqlaxgvznesd +hvlextsbqpzyfd +jydlhetzoqfpsvix + +jxkrobp +rsplxbgk +yxmbpkorhj + +injbuyktrcs +bcsriktuny +skyrhbtnucxe + +duck +cykuv +osfcurnlwax +uvmc + +vpt +tpv +pvt +vpt +vtp + +dacxvsi +icaxsd +xdihcneas + +nf +nkf +fn + +yrewaxckd +wtydesfcr +erdftwqyc + +hmfezapkqjyri +ekqajhyzfpmri +raikjeqmhfypz +qjmyrekfzphai +frtjeqkimhazpys + +ryxmsbqovuidphfwecajnz +hdjmiqbxnpvouyfcewsazr +vubyrcmqeswafxjzhinpdo +cbjmnaoqurlhsifvwzdexyp + +iu +ui +isutlr +iu +iu + +lftaziorb +rvamfeyjgqnx +frtak +aifr +aftzr + +us +schk + +bjafywgieth +tifbhyjgwade +imhwefbgatjy +wgtyifejbah + +a +yj +b +iab + +qkgazumerlhb +syritxopfvd + +gdiakrne +ygdpcwqfbmikzanver +dolarkigen +gtkanierdh + +axv +axdvl + +erpjfh +prgjfeh +hrejpf +pejfhr +ejrhfp + +zijsrtcqdxmy +mtxdfyji +timydgxj +jtmhvakxidyn +iyjmwdvxnt + +rh +har + +tdoyugpljirwenzx +nurlzgjtyopide +jnrlitgpzdoyue +zlptnudjryogie +pzgyeoliturnjd + +ivcyexsotkzqmr +sgfjhqnpy + +omw +joq +mop + +welbhpzftgjinqyk +gwpdjqacitshlbykfzmrx + +sygqwn +fwyqsdg +scgwqy + +gdjzwbhltxs +dlkojzbq +jfavyipcembun + +cydkuqlhan +uavstnychbqxk +azqntcuyhk + +k +bf +z +w + +gyh +e + +rhmpg +pmhgr +rpmhg + +pas +vhtsaqfgnu +kpjsa +sab +jcopska + +tsjabirpehudncx +custniapedhxrb +cepnuastxhdirb +shbpetcdaxuinr +dbtiepaucrshnx + +tuswfrqpgxk +kprjsdtqxunf +pxwfrtuqske +xwskmfprqut +pfrtxqskhu + +szirxjtu +zuxjtsi +jutsxiz +usjitxz +ijstxuz + +zqesxfbmrivokl +mevkzirbfol +fbkomeyvilrz + +rlwoeckxnh +xebkornwcl +xcoknwler +wnlkrcoex +kecronwxl + +fmdbraihnpxytkcgezu +kbeyxmadczhritnpuf +pnhfmubicxteadrzyk +updrybtmhzefcnxkia +kbezfjwmhytnixacudpr + +w +w +w +w + +fgwdoctvpzymhbrkjxn +yaqjctxvsrozmwk +xkwozitrvmeqjcyl +cwkazxtrmlijyov + +vnym +bvmy +yvm +byvm +vym + +mxjblongrfahycqvpu +ncywhdpxefajbrgloqu + +sgukdmfqvbwcei +zigahlxojdnpc + +fudobaklngyjqpstmiz +psflydzmbtkiqaojgnu +itgzqsfdyabnolpjkum +sitlkyuqnjodzmpbagf +ytdijopqublaksmngzf + +vhaobfn +ohbnfav +vahofbn +naovhfb + +tfhsqwcbrv +iqrbzspnwyhtfc + +pfbwotesuyhkvgx +vnrlcxayzdmih + +nbyhpfklvtqo +qbtjopfyk +qpoeybfkt + +uvmgzs +pvsmizrug +ghvmszu +mugszcv +kusmvzg + +mua +amu +uma +mua + +d +m + +s +s +yuk +s + +gtjqp +pfotsh +pshgbt +wpeztyr +bqjtplo + +zwbvestiaoljy +gmnzshupfqre + +anvsdkbltiugc +tqsdcanuibgvkl +stkrvabegidclxun +takcsgnuvmdibl +cvqsklngiubadt + +txvfnuwcljpqkeryoamigd +jgarvmodftpniekquxszcyhb + +htu +hegb +whf + +jn +nj +jn + +vcjlxekmqzoduphynw +hkyeojlvndumcwzx +ozhdnvjeckwlmuxy +ujxdyznvlcmokhew +vdywzekucjnhoxlm + +blxuhyvjrzow +uzlwokmsripy + +rum +mrl +rbwfmz +durmq + +obcpqvkitduelwf +ahcrwiltpuedfobxkv +cvijgzoukptwdfble +kpqjduetilovfcbw + +irfqsp +wifas + +xvgyrpq +yrpqvhgzx +fspxmrivkwgycnequ +axhyqrpvgz +xdygqvrpa + +xrlmcsibvea +bdcveasxzip +esvbclaxi +vaxsbcei +xaeibsvc + +songrtmwhpydqizlf +halvzroefxcsubt + +uqozritygam +kmtryqvz +qfmjstkyrz + +rqtepcofhuylnxaj +xoptqwruhijsmnzcylfe +hxqcpyfjntleuro +brjyuoetfxpndlvcqh + +prltixwohdmfjukgqzsv +orluxtzpvjafdqwkhsgbe + +iyhuarewvbfjmlz +vramijyfzhbew +zyehbmwvifjra +vjmweybazihrf + +duixtbqyhomsla +suinmaxtlqdoyhb +htiquxmaybosld + +pselyhov +zhwpovekt +snheopv +ivxophe +nhpoeuv + +amqcriebkojlwyuxnhfdptgzvs +uovdszkygbjhanefqxplimtwcr + +ozngukih +nvksbd + +grkotivmcxnyubwleqspjzhfad +ekmqxnfabwiduopjsgclzvyhtr + +jzv +wzxfivmjb +zjvp +zjv +jzvs + +js +evqis +qxs +swyct +s + +n +n +zn + +udjtxws +usdwixj + +lf +l + +cdsaxzlv +jcsxlnydtrzvk +lvdqamzsxhc +udlxwczvgs + +gutwbrhjxyeam +jrleawgbsnxthimyu +rbjexdythumwag +hrwjmoexytqaubg +uwymabxrhjqgdect + +vipjrlbsmcogxznty +vetpngyzsbmoxcrijl +hoxvbsnjlfygmrczpti +pmlgzyasvxticjbrknod + +xzakbvtehnlciswmyufjdrgo +kocmslwbgvuxijernzydfhat +vcdxgkslnzoarmjwutyiefbh +tzhugvbcnokyxsfliwardmej + +up +u +pu +fu + +cbzjelmqivw +ickezvjlqm + +srwnt +nwrtj +rswnt + +hfjxoskd +dlpzeyjai + +mt +tm +mt +mt +tm + +rpxenfzmhwdvacbygiujkqot +lhbvkwmpfyazrtojcquxind +qtcjdairznhuwxmpsvyfkob + +apvk +qvapk + +ujscpqtgbyezdfhnwoil +bftognyujilpwhsqzdce +zbhslwipdjeqntcfouyg +tyuqdlfepgzshcoiwnbj +dzqxjblenucpwshtoiyfg + +cdxtsaunbwkezlrp +vbdpsuktlxczerwan +pnxudwaclrtebksz + +tq +t +zt +t +jtqg + +fvmhiloanbgjzptryucdkxw +jzhwtkbdpoxfacirngluyvm +pwnybcjmgxurfzivoklhdta +brtavopdklnhxwgzmifyjcu +ncifvypdtgwxbzakhjrmulo + +kwhiguft +uxyo +ux + +ruyoe +ezqhbi +clndewsfta +e +qrke + +doa +doa +doa + +xt +tx +xt +xt +xt + +roxwktbmgiyc +qtbejyxzlpcaighfod +oscgtuyiwvrbkxn + +agcdevxkmbnzqjl +jrdzmnclbgkvexqwa + +pqjtyenfmxdaorw +qayjpxmfdterwon +frdtlawxmjnoeqpy + +aze +zea +veaz +yzxdequoa + +eq +uetqs + +jsmezrk +zskmer +zmkers +krezsm + +mfzqsukgcw +cmskguzfqw +gksucwfmqz +uwqsgfzmck +wfzucmgsqk + +wftx +fwtd +twf + +bizwg +gzwosd +afzqrwun +cjpzwb + +qjntchmdbgpe +nqtephjgmdbc +qjeltdcphgbmn +nqtbcjhepmdg + +g +g +gr +g +g + +yulnpwc +uplcwn +nplemufywc +calkisogupw + +sigh +igsh +ghski + +naqpd +xydrsjwlibzm +qdevh +cd + +mraejinsdp +mierdjansp +qpsmrianjde +npirjedams +ridpaejmns + +o +o +o +o + +lhfqsxm +xlmsqfh +slfqmxh + +jhivsoabqlfpeuw +fvxrelbhuncowqjtsz + +yajhetclfk +jnqbylmpwgxcf +azchyrsivjeltdf + +n +n +n +n +n + +hkuaq +hkqua +uakqh +khqtalu +ahxkuqy + +tguprf +pfu +ufp +uofp + +lnmtjo +njolmt + +qymzdw +vjckmtl +oipreghfausnxb + +niswjectqkldzyg +wunjdetklisczyqg +gldcysiqznjtekw +iqwdczjsytkleng +lgyiezdncjqktws + +dntm +atm +tma +tm +txm + +ntpcwask +skcna +nksac + +prai +pria +arpi +irpa + +mzldgbrtovj +tbjgldozmvr +ogzvdlrjtbm + +ft +fq + +jgstdlzarcemiopynukfw +ywlhakgzeoxdnjmsirc +moicgebadzlwkysrnxj + +jpeiqxbz +xipjebzt + +rnpf +fqhu +agprm +wedyzci +bxur + +aynswjoklfeqzcitxudbrvh +ihrbxwvdqsyoejpnfkzc + +hrqliwxtfbk +qiwfrxbtkhl +kihqxrftlwb +wrhlxbtqkif +tfbqriwlkhx + +bwdhnqk +wbhkqtd +qwbkhdx + +fpcboialrdgqkejntyzm +lmieayocqpkznbrtdfgj +mbtdrpozfljkeyangiqc +pmdjlerfkybgnaoqzitc +pganmcfbtedkrzloyqij + +zfrvn +zfnr +znrf + +nuq +ltiuacgjs +aug + +xj +lyzixn +eaxwuf + +aeywqjkl +eanklwju +kjelzaw +ealjwtk +azklwej + +ncqxulrmfvedao +eodqxlvmrncu +elrmnuqpcdoxv +qloxudmvnecahr +lcdxqwmurvznjeo + +aijnhvxemsqztfk +xnvkehsiqmzft +tehvxnfskiwqzm +epsmzhixqvtnkfr +htkinzvqefxmrs + +wgfzomlbhujxs +ezvrxmkycafwob + +lhyrq +ylfherq +hlreyq +wqlyerh +hgsqlyru + +acnkurdevm +duernacvm +nteaducorvs + +hxvqtsjzgn +iakeoyr + +id +i +di +hkxi + +fqunm +funxikw +xfiuknz + +wvgpqlzxnui +livzmwyqgpnu + +eanbkcjlxpsm +ofmdwrqe + +w +ws +wr +w +w + +aylsbi +lyaiqsgb +vyeblmasuhi +yblsia +ylbsiaq + +fpbhozqdljytwcnxsvr +zarwdgqhtvyxcnpbsofji +dbzhsfwrvqnyjxtpoc +qwxpbnycrfjsozvhtd +tsoypwnmzfjhbvdxcqr + +bezfskqut +egbpkdflqtmouzs +kxzenfustqb +tsebufkzq + +hoekryzuqt +oreuqhyktz +teorhukzqy +kyqehortuz + +d +uqwgitdaj +dz +vod +fvd + +smjqnlt +jsqmlnt +ntsqlmj +jqntslm + +saxdlkjwvyctqenrio +wqnvsoyaextcilkrjd +krdqwevyliojxcntas +ywlnkcafdoirsvjxetq + +ryae +yaq +ya +ya +ya + +epvy +nvyqu +vnxy +oyvh + +kschegfmla +lgfmscaehk +gshfalcemk +lcgemshkfa +mkgaselhctf + +bfxqtegnoismrk +mnuivtxasgbjqyfkp +mkxgrnltfiqbhsw + +s +s +s + +zoe +eoz +oze +eoz + +q +kuprd +gvmbn +vctx +oi + +nbrjveycdlw +jyhfcwnglerv + +vkoxqwfhubrcsnme +bqkexhovswmntfrc + +aidoznexygkjlqs +neysaiudmoqklgxzc + +ypsn +eyp +yp +iyp + +gol +olg + +rypjohwvxkisnldatuzfb +btpxvolknwdhuryiafjsz +vkahgbsitwdoyjplfruznx + +mipqtk +nikqpvu + +kztifpne +yzit +rigtz +zait + +jxgvt +gfjoky +kvygh +dmwgqsrcp +ounalgyze + +nypvuiseqtjwxchlbfogdamzr +apqnbzhwmjldotfsvexruicyg +bpyjzomwahcrgsutlefxkqdivn + +qumcbsvlpthfwyda +hagwiucnvfdypqlzs + +tog +otg +gfto +gto + +ctp +uda + +vlbi +swmiujf + +xbi +upsdbi +bizr + +ltw +we +wzavnymh +iw +wfe + +caqjdphelmtvyfbxo +acxmtljedhoqbsfyp + +fyqthpe +bmrceljqy +eyqt + +frjdhuyqsgon +krouhsfgydnj + +ltopekjnacgbms +elngjotmpsca +splcgnatmoej +egjctspmlaon +jtealcmpongs + +fvsmiotkb +fbnupmcsxd +fmkvjysb +qbksmywrtf + +mklqnp +mqnlk +mwqnlke + +jykqrlaocvunfpix +rcymsnwuafdtvgbqoieh + +c +c +ct +c + +mlv +lyfpq +vsli +vrdwl + +srtaq +nuptlr + +hcfjdaqwo +qmoefalzdh + +zxyksijbeahgvc +xgvjhsczeyikba +yxickjesbhgavz +sjvgibeczxhkay +hvgizjmaxsybcke + +wjmypxi +jipmx +pjmix +bjivamxp + +dytnalmqkbpruef +qplfuynbdaertm +rbnetqdupamlwyf + +e +e +m +p +e + +b +eb +b +b +b + +yieovwqukxcnbfjpdg +qjvunkgywpfoidbxec +jupowqfbiknvdgeycx +dqeicgjfpxonbukwvy +gociquxvjbfdwnpkye + +lwrch +huosc + +somiywgdbf +fbmvdwgzsy +ufrltkydsnwm + +epvfduyh +vfpeyuhd +epdchvyuf +udeohyvpf +evhpyufd + +b +b + +szfgmlxwd +eapoqydvi + +puedtjkqbwfznhvycxrolamsgi +cvqeyszrwdfnkutjihxmlapbgo +nfdpoukvizgctxwmeaqjrhlbys + +nuf +je +uieq +ctodh +sbx + +psrwqlgd +lrwdqgpzs + +qheijmngzsrdawbvucolxpy +vhqnlcouibjdarzxpmeygs +edlixjhrquamovnpbsgycz + +jkphyr +urycxn + +snbcyoe +nuewpy + +gbnsoirkwyhp +iogsqbkymwp +fzbwkeyutdxp + +w +w +w + +jsbp +bjsp +jspb + +jfbdpv +pfjvb + +wfhvsjloznb +gmupxcnrakelfsvzqd + +dbsuoriacgnwxtzveyhqfkmp +adwcifzvsgnkphyburtexomq +wzbkmsdpfrhiaqxyecuonvgt +athzyrgbwckvomqudsnexfip +vidbhyqesancrzugkxfopwmt + +nl +ln +nl +osnl + +iewcxgqtf +gtwmfieqc +icfvqwyhadgkn +qcgwerfli + +wyj +jy +atycnje +qyjg +yzjsg + +ivjwfeuz +jvcw +mbhvwj +rswvhjd + +zmjlpeia +eimrlpzaj +jmealyqpi + +zgkf +gkz + +zuosdlvkxm +tlxskcvpumo +kuyomrxlvs +uvosxmldyk + +yuilcqhgmazts +swhvdcigltmakzuy +stojxiflyghnazcpum +gkhqtyciuwszmal + +nzhlyu +hngc +ngcah +anch +nvkhj + +xhfvwbkn +nahwxfo +fhgnwx +dmfuxnht + +vbhpedluncftoxys +cydfsolpejhbntux + +vkilx +pvxskd + +hvwuecgs +guvwcsh +sgrwculmvhb +wcpznuqsvghi +vhwcsulg + +ndfapjlztc +npoacfjtld + +jzd +xaulvyksp +zeh + +ck +ck +ck +kc + +kiroh +rh + +euxdrkvtfbqon +ytfvurxwheokqn + +sirznatbxkghm +skaiqzrmhnx +ztgmhrsikanx +hksxmairnez +ywdiracnfsuzhjxmpk + +bacgwvmxrdfne +pdcofwbza +cfqdwuptzabo + +dqmp +dqpm +qvmpd + +kczxnlerm +vqrzjmf + +qmuorwspx +dywcxarilegkh + +gqzph +qhapozk +zhqp + +fastkjnl +jsnafkt +jfnacskt + +fxgpiadjrvhs +smfwbejadh +hjmfyaods +fzdqsjham +hlcbyfjkaunsdt + +dqlevpahscoyi +iypldavhsqoce +clhvyaisoepdq +eayqiosdlpvch +epodliqvhcsay + +nhxbmlqv +qylkhmnxvbj +xbnlvqmh +vxmbhqln +lbvhxsqmn + +exrtdq +tderq +djretq + +lwqj +jmwlr +zbswtx + +pxi +ipx +ixp +xip + +vgfscwrqzdojxhe +xfvqhzsjecgownd +qdopyzjwegfsxchv +gosqeckhvzdjfxw +gszxpfveocjhqmdw + +gvlyuiscaewfpx +gfwjtapuoynvqzi + +ycsdnbzjoki +wfpvogmqhautlx + +tbjliqdfzgny +zjwilpghqdyekc + +yftcnao +ncfytaio +conyfta + +yslactbwhjfvnomiue +mbyiavojlwtunces +eontumvircsalbjwy +jguvcxylitsbmwenazo +bayolijwqcevpmsktdun + +ynmki +ykinm +inymk +iykmn +yimnk + +vzjnpybg +vjqfyno +rnvity + +ilxkjhcfpdmeb +hwdjleirc +aiulechdj +dljiwehc + +rptom +ife +nuli +yized + +loe +eg + +fprtvcgkwnasljebhm +nvbltrckumfhpgjew +grpuefzknmblovjw +bjwgykpinqlemrd +mrlegnjwbkp + +xtquyrjnszl +ysrqzj +zsqyjpr + +ft +fjt +ft +tf + +ejli +l +l +rl + +lwgrihbdvno +ydbrvhgolniw +rivdongwhlb +ndhbrgwilov +dwvrnlhbgio + +fc +fc +cqfo +fc +fc + +nhaoi +nioha +osijah + +hgrec +gchre +cehrg + +higmvfbtjre +ikhxjbrefvq +brjiefhvl +ivfeqblhrj +hrkifjvbe + +vsgqmibordtznkl +dehupjlcxtsrnfawy + +t +crfi + +nrai +hjcmpzla +dveria + +krp +achvofx +kbp + +vfdzhuskanm +lhucb +uh + +qu +uqj +quh +qu + +tokmzyuxjsbvic +zegday + +wqfxlhyapcdtv +vctalwmjdpqyfh + +nqge +vneiqt +hqvfenwj +nksqcrlmde +vqgbone + +f +w +w +f +oq + +qziwcdjyepvhn +wvypijednqzc + +uwjflbhoq +dwxublig + +c +lc +ec +c +txcjrkd + +cglvpyadf +rqfvgaplc +kgpatsxuelvh +oapgvliwc + +ln +st +bs + +sfra +dskrnf +mzhjrfpx + +phu +uph +uph +hpu +phu + +pcxhvbf +hxbtyk + +jdzsaiwbphmftqxrlngcyoe +mqbrsplojgyheznxcdtfwia +pitajxzhsonwygrfblecmqd +nyliauzgfbcprewhdtjmsxoq +taxnylhvgjqewcksfpmzdbior + +h +c +om + +ruplsfnhyjqigwkzexbtoc +newjivhyckdagob +ywocjmnkbghie + +jdrtpbvohaxy +dnjxyrfsv + +lq +nsulxvmhj +l +lk + +fdsxhvqaiblt +fihykrdlsoaqx +laqgpznecjiuxfsdhmw + +capkzueqjmdv +ckdvymqazu +fklcmdbuxqarzv +zkcsvmqhiadgeu +jotqkuzndvciwam + +lzqbrgkp +grvpntoz +ozwvpg +suefagcp +pkjygd + +zbangyoqjlkdevrxti +gzniebarjloykqtdxv + +xviqehycstgjladuoznfwp +odwplyiqnxghutezcvsj +ersxgqtcjouvdiznlyhwp +cpshuoijtxvelqynwmdgz + +tnzkdmgqci +mqkzgydtijn +mtikzqdng + +d +ad +d + +k +iof + +otkvualrqdsixf +nkhwid +dbkiwpj +ikd +ekziydgm + +wjvgqsxinfburh +wxgqsurjvflnhbi + +hebmgftkpcq +owektbpfhqcmg +egtfbpckhmdq +qmcetgpfkhb + +exukswmlgznjoqhvabid +dkgmeoahtxpzflnwru + +lf +fl +lf +fle + +zblhfjqpr +rzp +uprzo + +wmktipjq +twmikp +jmtwikyp +azcempwtkiv +itkmpw + +qwodjmelanykpxuh +weqnajoxmupklyihd +pjodermlyuknwxhqa +mqbaoxylgdshtnjpwuvkfe +lnaxijmwqhukodpye + +azxw +xazw +zwax +wafqztx +zaxw + +ydzmvpskfjiqneluabgtrw +vyfdpqrkbistwlaxzjum +ukortizjvdwhlpafycmqsb + +cno +y +no +y +bqe + +zlcotxyhfeij +xtlvhifkszoj + +kczqegopj +qupzjod + +hpclqaktjmbnyxw +iqphxcamk + +rebc +qcbra +brc +crb + +flkoiavp +aduhjeqtyrmzkn +cslwgfaokp + +qmnzcjb +bmeqzjsc +jxochgfbmwzvq +zqcbmja + +deyifvsxw +evdyw +edbhzyuqv + +xmhknbcwdaztvl +mruslxozyangpj +xgszalnm +aoqmleunizxs + +eh +he +eh +nxeh +eh + +cjbx +jxsub + +yusezdlpgxtm +dyrkmstuegpx +pdxmyeutvkjsrhgaw + +ruz +rzu +zur +zru + +wgbdctzlsmh +peglstyhcd +adtqlhcgvs +tylndgrcujhsbx +odltpshecg + +ylntchparijwfo +wtrjpiaohylcf +wlfyvrehcutapgko + +tkbpfhjzravmquxewgl +goxphazbfvrqkijlwtm +mkrbzqphvawtyjfxilg +plhcnwgqmrxfvdzabjkt + +pfhtlqawckegij +wjpaksdctfghlo + +jqctpgrvu +qkvgjuprtc +vutcqpgrj +gpruvjtcq +gvqprujct + +dkevisf +kfei +mlukicwfje + +nsoyjcwzife +spnocteji + +cfuzsbtvdkq +rcasmqzkpdxuo +drxzwqckus +zqsrndeukxic + +vkgpbz +zkpvg +zkvpg + +eqhpyasvnumzgclitofjw +ofsgpaijzqmtvcuwhlbe +ujiewctamfxqdghslpvzo +qivnwtlfcmpgaeouhjzs + +lfahbowz +ryxcwtvs +mytucdivw + +lqetdskgyznojharxvufpwimbc +kpcoqugdvxibftjmywzslnreh +mxjgcinhobeldrwfukyvptqsz + +jxhc +fjsqglzwhu +mhcj +hecj + +ihdsbckn + +siponk +sikonp +psinkfo + +qbvdrutoan +qbcftunvoi +qvkoxzbtushny +qtwojubnv + +eu +u +xtujdms +ehu + +jkqdoner +eyxnkuaoqfg +kqenxmyo + +wk +wk +ykw +kw +kw + +gvrebwq +erkflnbjhagv +givrybues +itpvegsrbz + +hlykfbqnexots +tqhgfonkzeyxsbl +qkcybxtsnloefh +fxalqkntsuobyech +hvyjefkbitrqoplwxns + +paxu +parnkxu +pxua +xupa +uxpa + +ytzjokcqlmviha +sykbmizchvq +aocvizymhkq +ivhkcqlzym +iayelkzqmtchv + +aekxzstuc +czetkxsau +zqpakexsuct +zuxtacske +kuszetcax + +czlkiprvydnmsoxqwajgb +byszdijkplawcvnm +ikmwandcjzlvybsp +nbvwlikjscdmpzay + +fpuxqtigly +hpuqkfxigyt +tifpygqkux +uygqftwpxi + +gvdwnrefpj +nwgapvedr +egdvwnrp +xshwezgipdvr + +joefgnu +tknuhvfy + +rjo +rpjyos +rjo +roj +jro + +zxvatmfbujgryinokwehsc +xjzdusehibgtvncmkflyao + +fpnkyo +nopfky +kpnyof +ponkfy +tnpfoyk + +mevhflgowbkqdjutrzys +qrgmkeohvstnbwfdjluy + +pejhrgwtmcny +hjangqtbprsmwe +umiegvdprwtznhj +nhgptresjwlm + +ohgmls +othljm +jmhtlso +mhxlcnp + +dtufxjrbq +rdfjxtqbu +qjtdufbrx + +iexvaok +kexu +xkje +xkfe + +dpursykgo +ugkrsqpody +sokpgyrdnu +kwsuoyrpdg +sovjiydkagmuptbrhcf + +mwxcqs +mcwxqs +mwxqsc +tcswmxq + +cqatfowbvmirly +woibncaylqgvsf + +bico +izdt +tiz + +af +fkq +f +fyb +f + +wxftpjclsrhm +sdzuvanek + +jr +rjp +rj + +zhpknlosiadcfbjweuqvy +ulbkhapqzisefdyonjc + +oivjy +djvwbofy +kvlqyxrj +bsivdyjf + +kifcamqwgy +amfkgicyq +miygkcafq + +egslifrtvcnhk +vymgiprjzcxasbqn + +gji +g +oar +jgk + +gxtkohsqcvmrjzie +jfghvuxokznqwsdmarcl + +xvlnpjdar +vldnopxaj +dtnpsayjvlc +dgjvalnmp +mfnvjdpal + +mnaxd +xmda +kdaxm + +szpeac +ezpsac +aesxpcz + +vgpldyruqmfbsehzkxjwa +wrxmvtqgyjsdazlkbofeuhc +ablmzyevqgswfnxkdrphuj + +aoedxnzjqsbyihtpkcfuwl +dsbeyathwxjupozlqncikf + +mwzkrnhp +okqj + +s +s + +erjyvcwhuitdaogsnfb +dculesyjotbwhavfirn +swfbohtjdciaurenyv +ubsvfamrjoynwchitdke + +yb +yb +by + +pbrhzvjcsgeylfxt +sjcyezvxfgbhtplr + +rphvaxw +zhjapvrxw +xahvwspr +lpdqrvwahmx + +rpmild +vlrpswnb +ylrezfpi +pbraslm +utxgqhpjkorl + +pizbmcxreftywhdq +pqyezcxtidgmhfrw +ixrctphwqydzfme +fxdhpyctwrinmazqe +pctzyrhdiqwmxef + +wasjdyzgfu +zfdyujgwsa +wbyzjgadufs +afzswydguj + +zqanmksjruhx +qljaunzmkrshx +jrxqsmzknhua +rjazknumxqhs +kuzqxhjmasrn + +virdpbztchkgo +hdiopebvzaw + +ziwscmotk +jwmas + +h +h +h +h +h + +qhywbkuvnst +zmynwxvufqarkbeht + +onfvrqxa +xrvqnofa +fiuarnvoxq +qvzafonrx +fqvxebnaolr + +kmfulryg +bkswufgylmr +myulgjrfk +gouyxrlkmf + +skerjmgbvtcphdzafniyxo +ljybizemsvhokxrdcagptnf + +oyt +hytx +mdtyjrslkczu +bvyto + +mpwv +acvbp + +m +ftz + +kvtmidlngo +edznioyvkx +kofvirdn diff --git a/2020/inputs/day_7.txt b/2020/inputs/day_7.txt new file mode 100644 index 0000000..04950b5 --- /dev/null +++ b/2020/inputs/day_7.txt @@ -0,0 +1,594 @@ +striped white bags contain 4 drab silver bags. +drab silver bags contain no other bags. +pale plum bags contain 1 dark black bag. +muted gold bags contain 1 wavy red bag, 3 mirrored violet bags, 5 bright gold bags, 5 plaid white bags. +muted teal bags contain 2 pale beige bags, 5 clear beige bags, 2 dotted gold bags, 4 posh cyan bags. +posh coral bags contain 1 light silver bag, 2 dull blue bags, 3 dim fuchsia bags, 2 dotted magenta bags. +faded black bags contain 4 light silver bags. +muted lavender bags contain 1 pale gold bag. +clear fuchsia bags contain 1 dull gray bag, 2 shiny indigo bags, 3 posh olive bags, 5 vibrant plum bags. +shiny olive bags contain 1 dotted gold bag, 5 bright violet bags. +vibrant lavender bags contain 3 dotted aqua bags, 4 pale chartreuse bags, 5 mirrored blue bags. +pale fuchsia bags contain 5 pale crimson bags, 2 dull teal bags. +clear lavender bags contain 5 shiny fuchsia bags, 5 wavy teal bags. +light chartreuse bags contain 5 mirrored yellow bags, 3 bright maroon bags. +mirrored white bags contain 1 bright gray bag, 4 plaid blue bags. +dark teal bags contain 4 bright maroon bags, 5 plaid bronze bags, 1 dark brown bag. +wavy yellow bags contain 4 dim silver bags, 1 striped tomato bag, 5 clear chartreuse bags. +dark turquoise bags contain 4 clear plum bags. +posh gray bags contain 2 faded purple bags, 2 faded orange bags. +wavy tomato bags contain 1 dark purple bag. +vibrant gray bags contain 3 muted gray bags, 1 dark fuchsia bag, 5 posh white bags, 5 posh tomato bags. +light crimson bags contain 2 dotted chartreuse bags. +dull gray bags contain 4 muted brown bags, 2 shiny blue bags, 4 dim crimson bags. +drab red bags contain 2 bright cyan bags, 1 pale brown bag. +dotted salmon bags contain 5 mirrored indigo bags. +vibrant green bags contain 2 dark coral bags. +light magenta bags contain 4 clear bronze bags, 4 dull teal bags, 4 posh salmon bags. +vibrant purple bags contain 4 posh plum bags, 2 bright gray bags. +posh lime bags contain 3 plaid yellow bags, 4 posh salmon bags. +bright white bags contain 4 dull aqua bags, 1 shiny silver bag. +faded blue bags contain 5 muted cyan bags, 2 mirrored coral bags. +dim green bags contain 2 posh lavender bags. +faded gray bags contain 2 dark gold bags, 1 drab turquoise bag. +wavy black bags contain 4 dim fuchsia bags, 1 muted orange bag, 4 drab salmon bags. +plaid plum bags contain 5 dotted tomato bags, 1 shiny beige bag. +bright tan bags contain 2 posh salmon bags. +wavy gold bags contain 1 faded olive bag, 5 vibrant black bags, 3 dull orange bags. +dull fuchsia bags contain 1 faded crimson bag, 5 vibrant white bags. +shiny maroon bags contain 5 dull lavender bags, 1 dim white bag. +wavy white bags contain 5 light teal bags, 4 dim salmon bags, 3 dotted red bags, 5 dark red bags. +dim cyan bags contain 1 muted orange bag. +muted cyan bags contain 4 dull turquoise bags, 5 posh gray bags, 5 clear turquoise bags, 1 shiny plum bag. +posh violet bags contain 5 plaid crimson bags, 5 muted purple bags, 1 wavy beige bag, 2 mirrored orange bags. +faded purple bags contain 3 plaid blue bags, 1 dull lavender bag, 1 muted orange bag, 2 dotted tomato bags. +wavy beige bags contain 1 dotted beige bag. +dim black bags contain 1 wavy blue bag, 1 plaid black bag, 3 pale lavender bags, 2 light violet bags. +dotted lavender bags contain 1 plaid blue bag, 5 dim crimson bags. +dark yellow bags contain 3 posh green bags. +wavy salmon bags contain 1 clear aqua bag, 3 mirrored crimson bags, 3 pale magenta bags, 2 dull teal bags. +clear silver bags contain 3 faded tan bags, 5 faded aqua bags, 1 clear tomato bag. +vibrant bronze bags contain 1 faded maroon bag, 4 plaid indigo bags, 2 bright purple bags, 5 dim violet bags. +pale brown bags contain 1 dull lavender bag, 2 clear turquoise bags. +faded salmon bags contain 1 pale silver bag. +dark gray bags contain 2 pale teal bags. +posh red bags contain 3 faded black bags, 2 dull red bags. +dim indigo bags contain 3 bright green bags, 2 dotted tomato bags, 5 bright magenta bags. +dull maroon bags contain 5 light green bags. +wavy teal bags contain 5 faded tan bags, 4 clear orange bags. +pale chartreuse bags contain 5 bright blue bags, 3 light indigo bags, 3 shiny white bags, 3 wavy bronze bags. +mirrored gray bags contain 4 vibrant tomato bags, 1 dark red bag, 5 drab silver bags, 3 posh magenta bags. +dark lavender bags contain 4 dotted white bags, 5 vibrant chartreuse bags, 2 dim teal bags. +shiny turquoise bags contain 3 dim lime bags, 5 bright cyan bags, 2 pale green bags. +shiny indigo bags contain 2 dark fuchsia bags, 4 posh chartreuse bags. +pale crimson bags contain 5 mirrored silver bags, 2 posh black bags. +light salmon bags contain 2 vibrant orange bags, 2 dotted red bags. +plaid orange bags contain 1 dotted turquoise bag, 4 vibrant brown bags. +dim maroon bags contain 5 shiny gold bags, 4 mirrored maroon bags. +muted green bags contain 1 plaid plum bag. +faded indigo bags contain 3 faded purple bags, 4 vibrant indigo bags, 1 light coral bag. +dull blue bags contain 5 dull salmon bags, 2 wavy magenta bags. +vibrant black bags contain 1 light coral bag, 5 vibrant cyan bags, 3 dim magenta bags. +striped lime bags contain 1 striped maroon bag, 2 vibrant brown bags. +drab brown bags contain 1 faded olive bag, 5 dotted beige bags. +dark plum bags contain 5 faded brown bags. +clear olive bags contain 3 dull aqua bags, 5 drab yellow bags. +wavy crimson bags contain 2 posh plum bags, 2 dull aqua bags, 5 shiny teal bags, 2 vibrant purple bags. +mirrored olive bags contain 2 wavy gold bags. +dim crimson bags contain no other bags. +faded plum bags contain 1 plaid indigo bag. +light maroon bags contain 3 vibrant orange bags, 2 clear olive bags, 3 clear brown bags, 1 pale black bag. +posh white bags contain 3 dull green bags, 3 clear brown bags. +drab black bags contain 2 shiny turquoise bags. +light purple bags contain 2 pale black bags, 5 light silver bags, 1 drab coral bag. +pale yellow bags contain 2 vibrant orange bags, 5 posh black bags, 2 vibrant tomato bags, 3 dotted lavender bags. +dull cyan bags contain 5 wavy beige bags, 1 dull yellow bag, 3 drab lime bags, 3 drab chartreuse bags. +drab lavender bags contain 2 plaid black bags, 4 dotted gray bags, 1 dim silver bag, 2 shiny gold bags. +striped brown bags contain 5 light maroon bags, 3 light red bags, 3 clear indigo bags. +drab tomato bags contain 2 light black bags, 2 clear salmon bags. +dotted red bags contain 4 dim salmon bags, 5 striped indigo bags. +vibrant teal bags contain 5 bright black bags, 1 dark purple bag, 2 bright turquoise bags. +striped teal bags contain 4 mirrored silver bags. +dull beige bags contain 4 clear olive bags, 4 light teal bags, 3 bright plum bags, 4 dotted lavender bags. +light violet bags contain 2 dull lavender bags, 4 bright gray bags, 5 vibrant orange bags, 3 wavy magenta bags. +dim brown bags contain 2 clear plum bags, 2 shiny teal bags, 2 posh salmon bags. +striped magenta bags contain 4 posh turquoise bags, 3 pale cyan bags, 3 faded indigo bags. +bright orange bags contain 4 plaid gray bags, 4 dark black bags, 4 faded red bags, 4 bright black bags. +muted olive bags contain 2 dotted crimson bags, 4 faded lavender bags, 2 vibrant gray bags. +plaid teal bags contain 2 light yellow bags, 4 drab cyan bags, 3 light green bags. +faded fuchsia bags contain 1 posh silver bag, 4 drab chartreuse bags, 4 drab teal bags. +dim silver bags contain 1 pale turquoise bag. +bright lime bags contain 1 striped silver bag, 5 muted teal bags, 1 shiny tan bag, 1 dark silver bag. +dotted green bags contain 3 posh green bags, 1 drab yellow bag. +drab purple bags contain 5 bright violet bags, 1 posh tomato bag. +dull bronze bags contain 4 mirrored black bags. +striped tomato bags contain 1 posh gray bag, 2 posh magenta bags. +bright crimson bags contain 2 light olive bags, 4 clear tan bags, 3 drab fuchsia bags. +bright turquoise bags contain 4 pale teal bags, 3 drab silver bags. +shiny lavender bags contain 2 striped lime bags, 2 plaid tomato bags, 1 faded orange bag, 5 wavy magenta bags. +light tomato bags contain 5 dotted olive bags. +wavy magenta bags contain no other bags. +vibrant fuchsia bags contain 5 posh brown bags, 5 plaid indigo bags. +dark tomato bags contain 3 shiny plum bags. +pale bronze bags contain 5 plaid black bags, 5 vibrant brown bags, 2 dim lime bags, 4 muted bronze bags. +striped fuchsia bags contain 3 muted brown bags, 2 pale chartreuse bags, 1 dim magenta bag. +dark brown bags contain 4 clear bronze bags. +posh teal bags contain 5 dotted plum bags, 2 drab gray bags, 3 dull fuchsia bags. +wavy turquoise bags contain 1 dull lavender bag. +striped maroon bags contain 4 muted yellow bags, 4 clear orange bags, 4 vibrant orange bags. +shiny green bags contain 3 muted brown bags, 1 vibrant black bag, 4 wavy cyan bags, 3 posh brown bags. +plaid salmon bags contain 4 mirrored indigo bags, 2 wavy white bags, 5 mirrored bronze bags, 3 light coral bags. +dotted magenta bags contain 2 light olive bags, 2 dark red bags, 4 clear green bags, 3 dim plum bags. +light orange bags contain 5 dark plum bags, 3 bright maroon bags, 2 dotted lime bags. +clear brown bags contain 3 dim white bags, 2 posh magenta bags. +vibrant turquoise bags contain 2 striped yellow bags, 1 mirrored crimson bag. +muted coral bags contain 4 wavy gold bags, 2 dim tan bags, 1 shiny green bag. +plaid crimson bags contain 1 dull aqua bag. +vibrant plum bags contain 4 striped tomato bags, 1 striped turquoise bag. +dark coral bags contain 5 posh black bags, 1 shiny beige bag, 3 pale brown bags. +mirrored brown bags contain 1 clear blue bag, 1 dull indigo bag. +bright blue bags contain 2 light violet bags, 1 dotted tomato bag. +drab cyan bags contain 2 dim turquoise bags, 5 clear violet bags. +dotted coral bags contain 3 dotted aqua bags. +shiny yellow bags contain 1 wavy cyan bag. +shiny red bags contain 5 shiny beige bags, 3 dotted lime bags, 5 dotted plum bags. +muted lime bags contain 3 dark turquoise bags, 3 bright chartreuse bags. +pale gray bags contain 5 dotted coral bags, 4 wavy teal bags, 2 clear aqua bags. +pale blue bags contain 5 dull salmon bags, 3 posh bronze bags, 2 vibrant tomato bags. +dim turquoise bags contain 4 posh aqua bags, 2 dark turquoise bags. +pale turquoise bags contain 5 vibrant brown bags, 2 shiny maroon bags. +dim gray bags contain 2 faded tomato bags, 2 faded indigo bags. +clear aqua bags contain 1 light turquoise bag, 3 dotted turquoise bags. +faded turquoise bags contain 5 muted lime bags. +clear plum bags contain 2 plaid indigo bags, 5 drab yellow bags. +vibrant white bags contain 2 bright violet bags, 4 dark plum bags, 1 dim plum bag, 4 plaid indigo bags. +dark orange bags contain 3 posh purple bags, 5 clear orange bags, 1 dim white bag. +light olive bags contain 3 drab green bags. +muted salmon bags contain 4 muted cyan bags. +clear maroon bags contain 2 muted yellow bags, 5 plaid crimson bags, 1 clear turquoise bag. +wavy orange bags contain 4 vibrant blue bags, 4 posh brown bags, 2 pale turquoise bags, 5 shiny orange bags. +dotted gold bags contain 3 posh magenta bags, 1 faded crimson bag, 3 dotted olive bags, 3 plaid olive bags. +dull purple bags contain 5 drab salmon bags, 4 dim lavender bags. +light bronze bags contain 2 wavy indigo bags. +muted turquoise bags contain 5 clear turquoise bags, 4 plaid violet bags, 4 clear orange bags, 2 posh maroon bags. +mirrored blue bags contain 4 clear chartreuse bags. +drab tan bags contain 3 striped violet bags, 2 bright silver bags, 2 dark bronze bags, 1 mirrored black bag. +dark maroon bags contain 1 vibrant orange bag. +drab yellow bags contain 1 vibrant blue bag, 2 dim violet bags. +light cyan bags contain 4 posh beige bags. +vibrant salmon bags contain 3 wavy gold bags. +muted orange bags contain 3 dotted tomato bags, 4 vibrant tomato bags, 5 dull lavender bags. +dull turquoise bags contain 1 wavy white bag. +dotted indigo bags contain 3 wavy bronze bags. +dark red bags contain 4 wavy bronze bags, 5 wavy turquoise bags. +light coral bags contain 4 clear tan bags, 2 vibrant beige bags, 1 dull lavender bag, 5 shiny white bags. +mirrored turquoise bags contain 5 clear fuchsia bags, 3 mirrored black bags, 4 plaid tan bags. +mirrored yellow bags contain 4 pale turquoise bags, 2 wavy orange bags, 3 drab coral bags, 4 dim chartreuse bags. +dotted fuchsia bags contain 4 dim bronze bags, 4 striped indigo bags. +dotted purple bags contain 5 posh maroon bags, 1 dim yellow bag. +clear coral bags contain 5 dark olive bags, 2 wavy bronze bags, 3 light red bags. +mirrored teal bags contain 3 drab yellow bags. +faded green bags contain 2 dark purple bags. +light lime bags contain 4 bright chartreuse bags, 5 clear tomato bags, 2 bright green bags, 2 faded teal bags. +bright yellow bags contain 4 dull purple bags, 3 faded beige bags. +bright maroon bags contain 2 vibrant blue bags, 5 bright violet bags, 5 plaid indigo bags, 3 vibrant orange bags. +faded red bags contain 5 pale brown bags, 4 striped tomato bags, 2 bright green bags. +muted maroon bags contain 1 dark tan bag, 5 drab teal bags, 4 dull maroon bags. +plaid coral bags contain 5 bright blue bags, 1 dotted indigo bag. +dotted brown bags contain 1 dull beige bag, 2 bright indigo bags, 2 striped chartreuse bags, 1 muted silver bag. +wavy coral bags contain 2 clear cyan bags, 2 muted teal bags, 1 faded red bag, 2 mirrored silver bags. +faded coral bags contain 3 bright green bags, 1 bright cyan bag, 3 plaid blue bags, 5 wavy lavender bags. +dim gold bags contain 5 dim teal bags, 1 vibrant tomato bag, 5 pale chartreuse bags, 3 bright indigo bags. +bright salmon bags contain 5 plaid chartreuse bags, 5 light tan bags, 5 vibrant maroon bags. +wavy violet bags contain 4 bright green bags. +mirrored lavender bags contain 5 drab plum bags, 2 drab turquoise bags, 2 dark magenta bags. +faded aqua bags contain 3 faded teal bags, 1 dark red bag. +muted yellow bags contain 1 mirrored silver bag, 1 striped white bag, 3 mirrored gold bags, 1 muted gray bag. +pale coral bags contain 2 striped gray bags, 2 clear beige bags. +mirrored cyan bags contain 1 pale beige bag, 4 dim crimson bags. +dotted aqua bags contain 4 dim crimson bags, 3 vibrant beige bags. +dark white bags contain 4 dim maroon bags, 1 light olive bag, 3 dull fuchsia bags, 4 mirrored maroon bags. +dotted chartreuse bags contain 5 clear tan bags, 2 clear white bags, 2 dark coral bags, 4 faded brown bags. +mirrored red bags contain 5 faded violet bags, 2 dark chartreuse bags. +drab maroon bags contain 3 bright violet bags. +dark violet bags contain 5 dark turquoise bags, 1 muted blue bag, 4 plaid bronze bags. +dull silver bags contain 4 dotted lime bags, 3 dotted silver bags, 4 dull red bags, 3 pale white bags. +striped lavender bags contain 5 drab silver bags. +light yellow bags contain 3 posh plum bags, 3 bright olive bags, 4 wavy crimson bags. +posh chartreuse bags contain 2 bright violet bags. +pale green bags contain 5 shiny lime bags, 3 faded teal bags, 5 posh gray bags, 1 posh chartreuse bag. +shiny lime bags contain 1 dull beige bag, 4 light aqua bags, 4 dotted tomato bags. +plaid tan bags contain 1 mirrored chartreuse bag. +drab coral bags contain 5 posh gray bags, 2 dull black bags. +drab salmon bags contain 4 drab yellow bags, 3 mirrored green bags. +faded yellow bags contain 2 mirrored beige bags, 1 bright turquoise bag, 1 vibrant black bag. +bright tomato bags contain 4 clear brown bags. +muted beige bags contain 1 clear turquoise bag. +striped black bags contain 1 plaid chartreuse bag. +bright cyan bags contain 5 clear tomato bags. +striped coral bags contain 2 muted red bags. +posh bronze bags contain 5 striped yellow bags. +mirrored maroon bags contain 4 vibrant tomato bags, 5 bright green bags, 4 vibrant maroon bags, 4 striped violet bags. +dotted turquoise bags contain 1 posh beige bag, 5 muted silver bags. +bright purple bags contain 5 drab silver bags, 5 shiny blue bags, 2 plaid bronze bags, 4 faded magenta bags. +posh plum bags contain 5 striped white bags, 2 pale brown bags, 1 wavy turquoise bag. +dark crimson bags contain 1 dull black bag, 2 dull yellow bags, 1 posh white bag, 3 dotted lime bags. +plaid bronze bags contain 5 striped indigo bags, 5 light indigo bags, 4 wavy magenta bags, 3 vibrant blue bags. +clear red bags contain 4 posh silver bags, 1 dim aqua bag. +striped salmon bags contain 3 bright violet bags, 4 faded olive bags, 5 dim turquoise bags. +dim bronze bags contain no other bags. +wavy brown bags contain 4 vibrant turquoise bags. +wavy maroon bags contain 1 mirrored bronze bag, 2 posh fuchsia bags, 1 mirrored indigo bag. +mirrored salmon bags contain 2 faded lavender bags. +dark aqua bags contain 4 faded teal bags, 1 dim tomato bag. +pale violet bags contain 5 clear blue bags, 3 plaid blue bags, 5 dim teal bags, 2 pale black bags. +mirrored crimson bags contain 2 posh magenta bags, 2 dotted aqua bags, 1 dim bronze bag. +bright indigo bags contain 4 bright violet bags. +muted violet bags contain 4 mirrored maroon bags, 2 dull red bags, 4 plaid tomato bags, 1 pale yellow bag. +shiny gold bags contain 3 vibrant blue bags, 5 plaid blue bags, 2 dark red bags, 1 dull green bag. +clear green bags contain 4 dotted lavender bags. +dark indigo bags contain 2 light lime bags, 3 wavy brown bags. +muted fuchsia bags contain 3 plaid green bags. +bright silver bags contain 4 dim tomato bags, 3 clear olive bags, 1 dull teal bag. +plaid purple bags contain 4 dark silver bags, 1 vibrant crimson bag, 4 dark black bags, 3 faded magenta bags. +clear chartreuse bags contain 4 posh plum bags. +plaid tomato bags contain 2 wavy aqua bags, 3 striped indigo bags, 1 wavy magenta bag. +posh cyan bags contain 3 drab green bags, 3 bright chartreuse bags, 3 muted gray bags, 2 light black bags. +posh turquoise bags contain 5 wavy teal bags, 3 light tan bags, 1 dull gold bag. +plaid olive bags contain 2 dim chartreuse bags. +shiny orange bags contain 4 pale brown bags, 3 dim salmon bags. +clear gray bags contain 4 bright salmon bags, 5 vibrant crimson bags. +shiny brown bags contain 1 bright gold bag, 3 clear tomato bags. +muted aqua bags contain 2 mirrored indigo bags, 1 dim tan bag. +plaid red bags contain 1 clear plum bag. +muted bronze bags contain 4 clear white bags, 3 dotted plum bags. +plaid blue bags contain 2 dull lavender bags, 5 wavy magenta bags, 1 light indigo bag. +shiny salmon bags contain 2 dotted black bags, 1 light magenta bag. +shiny cyan bags contain 5 faded violet bags, 3 mirrored bronze bags, 4 dark maroon bags, 2 wavy lavender bags. +drab magenta bags contain 2 light blue bags, 1 wavy orange bag, 5 posh chartreuse bags. +dim violet bags contain 5 dark red bags, 4 light violet bags, 2 dotted fuchsia bags, 2 plaid tomato bags. +faded crimson bags contain 3 clear silver bags, 1 vibrant beige bag. +plaid fuchsia bags contain 3 plaid red bags, 4 drab purple bags, 4 clear lime bags, 3 dim turquoise bags. +dull green bags contain 5 dotted beige bags, 4 drab silver bags, 4 posh magenta bags, 1 muted orange bag. +wavy indigo bags contain 2 pale tan bags. +plaid lavender bags contain 1 dark black bag. +clear bronze bags contain 3 pale teal bags. +clear blue bags contain 2 light teal bags, 5 dotted olive bags, 3 bright indigo bags. +posh aqua bags contain 2 light violet bags, 2 dull salmon bags, 1 vibrant violet bag. +dark gold bags contain 2 striped maroon bags. +vibrant chartreuse bags contain 3 wavy silver bags. +dark magenta bags contain 1 clear silver bag. +dim red bags contain 3 wavy indigo bags, 2 muted teal bags. +muted silver bags contain 5 pale crimson bags, 2 dotted tomato bags. +mirrored tan bags contain 1 pale salmon bag. +dull violet bags contain 2 dull black bags. +striped beige bags contain 4 dark maroon bags, 2 wavy orange bags. +striped turquoise bags contain 3 light indigo bags, 5 bright maroon bags, 1 light teal bag. +pale gold bags contain 5 dotted teal bags. +wavy olive bags contain 3 dotted fuchsia bags. +clear violet bags contain 1 dotted lavender bag, 5 bright tan bags, 5 dim violet bags, 5 drab salmon bags. +pale maroon bags contain 4 drab red bags, 1 wavy yellow bag, 1 muted green bag, 1 striped fuchsia bag. +drab bronze bags contain 4 light gray bags, 3 posh magenta bags, 1 dull yellow bag. +vibrant gold bags contain 4 dull violet bags, 3 clear white bags, 5 wavy chartreuse bags, 4 pale turquoise bags. +clear beige bags contain 4 plaid blue bags, 3 shiny plum bags, 1 light silver bag. +faded silver bags contain 5 drab turquoise bags, 4 plaid green bags, 4 posh yellow bags, 1 plaid blue bag. +light brown bags contain 1 dark red bag, 1 dotted gray bag. +shiny violet bags contain 5 posh cyan bags, 5 vibrant plum bags, 5 mirrored chartreuse bags, 4 plaid green bags. +dark bronze bags contain 4 bright gold bags, 2 striped maroon bags, 4 dark aqua bags, 5 pale chartreuse bags. +dull black bags contain 2 vibrant tomato bags, 1 vibrant blue bag, 3 pale yellow bags. +dotted beige bags contain 5 dotted tomato bags, 1 striped indigo bag. +clear indigo bags contain 3 dark violet bags. +bright coral bags contain 1 dark indigo bag. +drab turquoise bags contain 5 drab plum bags, 3 pale magenta bags, 5 drab red bags, 4 dull olive bags. +shiny fuchsia bags contain 2 dull lavender bags, 5 striped tomato bags. +dull indigo bags contain 3 pale turquoise bags, 3 faded tomato bags, 5 dim magenta bags, 3 drab indigo bags. +dim aqua bags contain 4 faded brown bags, 1 mirrored lime bag. +muted purple bags contain 3 dim salmon bags, 4 light violet bags, 2 striped turquoise bags, 2 shiny teal bags. +dotted black bags contain 3 dotted cyan bags, 4 wavy magenta bags, 4 posh chartreuse bags. +drab violet bags contain 4 dark gray bags, 5 dull chartreuse bags, 4 plaid gray bags. +plaid green bags contain 3 dark red bags, 1 wavy crimson bag, 4 light coral bags, 4 striped indigo bags. +faded brown bags contain 3 dark orange bags. +light teal bags contain 3 striped indigo bags, 4 dim bronze bags. +plaid black bags contain 2 mirrored crimson bags, 5 dim silver bags, 4 posh purple bags. +shiny blue bags contain 2 plaid green bags, 4 plaid crimson bags, 2 faded plum bags. +plaid lime bags contain 2 striped maroon bags. +pale lavender bags contain 2 mirrored indigo bags, 1 pale green bag, 5 dim chartreuse bags, 3 pale white bags. +drab chartreuse bags contain 1 bright salmon bag, 4 vibrant brown bags, 1 muted violet bag. +light indigo bags contain no other bags. +plaid violet bags contain 2 dim white bags, 4 faded lavender bags. +drab gold bags contain 5 dotted aqua bags, 3 muted beige bags, 4 faded black bags, 5 dark red bags. +mirrored bronze bags contain 2 plaid blue bags, 1 light orange bag. +dim olive bags contain 1 striped silver bag. +plaid white bags contain 5 pale turquoise bags, 4 mirrored orange bags, 2 vibrant aqua bags. +wavy purple bags contain 3 dark silver bags, 1 dull white bag, 3 dotted magenta bags, 2 dim salmon bags. +clear orange bags contain 5 striped indigo bags, 1 wavy bronze bag, 4 vibrant blue bags. +plaid gray bags contain 1 dull aqua bag, 3 dull olive bags, 3 posh black bags. +vibrant violet bags contain 2 vibrant maroon bags. +pale olive bags contain 2 vibrant fuchsia bags. +muted brown bags contain 5 pale teal bags, 2 light brown bags, 4 light tomato bags. +posh lavender bags contain 4 bright indigo bags, 1 striped indigo bag, 5 dark purple bags. +dotted blue bags contain 4 muted salmon bags, 3 mirrored red bags, 5 pale white bags, 3 clear red bags. +dim purple bags contain 4 muted cyan bags. +bright fuchsia bags contain 5 muted black bags. +vibrant lime bags contain 3 posh purple bags, 1 drab aqua bag. +wavy green bags contain 3 drab red bags, 2 faded brown bags, 2 wavy cyan bags. +dull lime bags contain 3 bright salmon bags, 4 posh crimson bags, 1 drab salmon bag, 4 pale yellow bags. +mirrored aqua bags contain 4 striped violet bags, 1 striped indigo bag, 2 striped tomato bags. +striped tan bags contain 4 light blue bags, 4 dull beige bags. +drab green bags contain 5 muted silver bags, 1 vibrant orange bag, 2 striped indigo bags, 4 striped tomato bags. +dotted orange bags contain 5 mirrored white bags, 5 muted orange bags, 2 drab tomato bags, 2 dull white bags. +dim tomato bags contain 2 dull lavender bags. +dull magenta bags contain 3 faded brown bags, 5 faded teal bags. +faded maroon bags contain 4 posh brown bags, 2 dotted aqua bags. +plaid cyan bags contain 4 faded crimson bags, 4 light chartreuse bags, 1 light crimson bag, 1 posh fuchsia bag. +dim salmon bags contain 1 dotted olive bag, 4 light indigo bags. +faded chartreuse bags contain 4 bright gold bags, 4 clear silver bags. +light plum bags contain 2 dotted chartreuse bags, 1 drab white bag. +posh silver bags contain 3 mirrored black bags, 4 dull blue bags. +dull salmon bags contain 4 dim white bags, 5 clear tomato bags, 2 mirrored maroon bags. +light green bags contain 4 plaid chartreuse bags, 5 vibrant aqua bags. +posh indigo bags contain 2 dull olive bags, 2 dotted lime bags, 1 drab red bag. +dark blue bags contain 5 dotted green bags, 3 wavy crimson bags, 4 clear silver bags. +bright black bags contain 5 posh bronze bags, 3 bright cyan bags, 5 muted black bags. +bright lavender bags contain 1 shiny indigo bag, 1 dim yellow bag, 1 wavy yellow bag. +faded white bags contain 1 dotted black bag, 5 wavy red bags. +muted black bags contain 1 mirrored aqua bag, 4 dark red bags, 5 dull yellow bags. +light turquoise bags contain 3 shiny plum bags. +vibrant coral bags contain 2 shiny orange bags, 4 bright olive bags. +vibrant aqua bags contain 2 wavy crimson bags, 2 muted orange bags. +dotted tan bags contain 1 light indigo bag, 2 dim magenta bags. +posh yellow bags contain 4 faded lavender bags. +pale lime bags contain 4 mirrored orange bags, 3 dull gray bags, 1 muted magenta bag. +drab white bags contain 2 faded tan bags, 3 wavy aqua bags. +shiny tomato bags contain 4 dim coral bags, 3 dotted lime bags. +wavy plum bags contain 1 bright orange bag. +dull crimson bags contain 2 pale silver bags, 1 light beige bag, 4 wavy violet bags. +dotted violet bags contain 4 light indigo bags, 1 dark black bag, 3 pale green bags. +dark salmon bags contain 5 light tan bags, 4 dim chartreuse bags, 5 faded green bags, 3 light brown bags. +dull brown bags contain 5 mirrored aqua bags, 5 dim magenta bags, 4 light brown bags, 5 plaid black bags. +shiny chartreuse bags contain 5 wavy yellow bags, 3 faded aqua bags, 1 bright fuchsia bag, 5 drab plum bags. +muted red bags contain 3 drab white bags, 5 dim beige bags, 4 bright olive bags. +posh blue bags contain 1 dotted beige bag, 1 vibrant cyan bag, 4 vibrant brown bags, 2 clear turquoise bags. +wavy bronze bags contain 4 wavy turquoise bags, 4 dim bronze bags, 3 shiny beige bags, 2 dull lavender bags. +posh beige bags contain 3 muted gray bags, 4 light salmon bags, 5 striped turquoise bags. +vibrant red bags contain 5 muted blue bags. +dark olive bags contain 5 dark maroon bags. +dotted gray bags contain 3 wavy magenta bags. +vibrant cyan bags contain 5 dotted lavender bags, 3 vibrant orange bags. +dark chartreuse bags contain 3 pale white bags, 1 dull lavender bag. +faded lime bags contain 4 clear green bags, 3 shiny plum bags, 2 light green bags. +vibrant blue bags contain 1 wavy turquoise bag, 4 dim salmon bags. +dull tan bags contain 3 dim chartreuse bags, 1 plaid tomato bag, 4 dark brown bags. +muted gray bags contain 4 clear tan bags, 3 wavy aqua bags, 5 dim white bags. +clear yellow bags contain 1 drab white bag, 5 dark salmon bags, 2 dull yellow bags. +clear tomato bags contain 2 dotted gray bags, 5 vibrant beige bags, 1 bright maroon bag, 2 drab green bags. +shiny tan bags contain 5 posh lavender bags, 5 pale yellow bags. +dark black bags contain 4 muted purple bags, 5 light gray bags, 5 drab red bags. +striped plum bags contain 3 dull red bags, 1 dark tomato bag, 4 dark yellow bags, 5 plaid cyan bags. +light gray bags contain 3 plaid chartreuse bags. +light aqua bags contain 4 wavy magenta bags, 3 light black bags. +vibrant brown bags contain 1 bright blue bag, 1 posh black bag. +posh tomato bags contain 5 wavy magenta bags. +dotted bronze bags contain 4 mirrored chartreuse bags. +mirrored violet bags contain 2 clear maroon bags, 1 light red bag, 4 mirrored gray bags. +dark purple bags contain 5 bright blue bags, 3 plaid blue bags. +faded beige bags contain 4 plaid bronze bags, 5 vibrant turquoise bags, 3 pale orange bags, 5 mirrored aqua bags. +mirrored green bags contain 1 dotted fuchsia bag, 5 light indigo bags, 3 shiny beige bags. +striped violet bags contain 5 drab silver bags, 2 dim crimson bags, 3 plaid blue bags. +mirrored tomato bags contain 5 light lavender bags. +posh purple bags contain 3 pale orange bags. +dim blue bags contain 5 dotted plum bags, 1 light orange bag, 4 dim maroon bags. +dark cyan bags contain 4 vibrant white bags, 4 dull white bags, 1 posh purple bag. +drab beige bags contain 5 dull purple bags. +vibrant olive bags contain 5 light silver bags. +plaid beige bags contain 3 muted silver bags, 4 vibrant orange bags. +wavy silver bags contain 2 dim crimson bags, 4 shiny maroon bags, 4 pale indigo bags. +posh crimson bags contain 2 light violet bags, 4 pale coral bags, 3 plaid bronze bags. +vibrant crimson bags contain 3 dull red bags. +dotted olive bags contain no other bags. +mirrored beige bags contain 2 plaid gray bags, 5 mirrored yellow bags. +bright brown bags contain 2 faded aqua bags, 1 dim tomato bag, 5 posh magenta bags. +bright magenta bags contain 2 posh gray bags, 3 dim salmon bags. +clear magenta bags contain 2 dim cyan bags, 3 clear red bags, 1 dull fuchsia bag, 4 wavy coral bags. +clear lime bags contain 5 dull green bags, 2 shiny bronze bags, 2 faded orange bags, 1 bright beige bag. +muted tan bags contain 4 vibrant maroon bags, 3 vibrant black bags, 5 shiny maroon bags, 5 vibrant turquoise bags. +pale beige bags contain 3 light tomato bags. +dark fuchsia bags contain 2 faded brown bags, 3 dotted lavender bags, 4 shiny teal bags, 2 bright blue bags. +dim magenta bags contain 4 posh chartreuse bags. +bright aqua bags contain 5 drab violet bags. +striped crimson bags contain 2 bright green bags. +dull chartreuse bags contain 4 plaid bronze bags, 2 shiny gray bags, 4 dull lavender bags. +wavy chartreuse bags contain 1 vibrant tomato bag, 1 dim tomato bag, 3 pale green bags, 1 posh plum bag. +dotted white bags contain 1 dark teal bag, 4 dotted violet bags, 5 bright beige bags, 3 dim silver bags. +mirrored purple bags contain 1 posh green bag. +faded bronze bags contain 4 dotted indigo bags. +faded lavender bags contain 3 muted purple bags. +clear turquoise bags contain 4 muted orange bags, 1 striped violet bag, 5 clear tan bags, 5 dim white bags. +shiny plum bags contain 4 dim crimson bags. +wavy fuchsia bags contain 3 dotted brown bags, 5 dark magenta bags, 2 dark bronze bags. +faded olive bags contain 5 plaid indigo bags. +mirrored orange bags contain 4 striped violet bags, 2 light violet bags, 4 shiny orange bags. +pale indigo bags contain 3 shiny indigo bags. +faded tan bags contain 3 shiny maroon bags, 5 posh aqua bags, 1 striped violet bag, 2 dim white bags. +bright chartreuse bags contain 1 posh black bag, 5 bright gray bags, 3 plaid chartreuse bags. +drab blue bags contain 1 pale violet bag, 4 vibrant green bags. +posh tan bags contain 4 shiny lime bags. +plaid maroon bags contain 2 dotted black bags. +dull coral bags contain 4 posh coral bags, 1 dotted silver bag, 5 drab beige bags, 1 plaid red bag. +striped yellow bags contain 1 plaid tomato bag, 1 dotted lavender bag. +muted magenta bags contain 4 muted black bags. +dotted cyan bags contain 1 vibrant tomato bag, 3 light indigo bags, 1 wavy turquoise bag. +dim lavender bags contain 1 muted black bag, 4 pale white bags, 2 mirrored coral bags, 5 pale brown bags. +bright gold bags contain 5 vibrant green bags. +light white bags contain 2 striped lime bags, 2 muted lime bags, 5 muted brown bags, 4 bright green bags. +wavy lavender bags contain 2 vibrant purple bags, 5 posh white bags. +clear black bags contain 2 posh turquoise bags, 3 dotted orange bags, 3 faded teal bags. +muted crimson bags contain 1 pale violet bag, 5 drab lavender bags. +posh green bags contain 4 vibrant beige bags, 5 dark purple bags, 3 dim salmon bags, 3 light black bags. +vibrant silver bags contain 3 posh coral bags, 4 posh white bags. +dim coral bags contain 2 posh violet bags, 1 dark cyan bag, 3 shiny green bags, 3 vibrant cyan bags. +striped red bags contain 5 muted olive bags, 4 wavy teal bags, 3 shiny gray bags, 1 mirrored coral bag. +bright violet bags contain 3 shiny beige bags, 1 wavy magenta bag, 5 light indigo bags. +vibrant magenta bags contain 4 striped salmon bags, 1 light tan bag. +faded gold bags contain 5 light tomato bags, 1 wavy black bag, 4 faded maroon bags. +muted plum bags contain 1 vibrant brown bag, 2 muted cyan bags, 4 muted salmon bags. +plaid gold bags contain 5 shiny beige bags, 3 faded fuchsia bags, 5 vibrant cyan bags, 5 shiny gold bags. +striped indigo bags contain no other bags. +wavy gray bags contain 2 plaid indigo bags, 3 clear tomato bags, 4 dull blue bags. +plaid silver bags contain 5 clear salmon bags, 5 faded lime bags, 4 shiny tan bags, 5 mirrored chartreuse bags. +plaid yellow bags contain 4 shiny chartreuse bags, 1 light lime bag, 2 dull green bags. +plaid turquoise bags contain 3 dotted aqua bags, 3 posh magenta bags. +striped olive bags contain 2 faded aqua bags, 5 dotted orange bags, 5 dull turquoise bags, 1 pale violet bag. +faded teal bags contain 3 striped indigo bags. +dull red bags contain 1 mirrored gray bag, 4 drab coral bags, 2 bright plum bags, 1 dull green bag. +dull gold bags contain 5 bright blue bags. +shiny magenta bags contain 1 light white bag. +striped green bags contain 1 clear blue bag. +dull teal bags contain 3 dark purple bags, 4 dim lime bags, 5 clear chartreuse bags. +faded magenta bags contain 4 shiny gray bags, 5 pale crimson bags, 5 light coral bags, 2 pale white bags. +pale tomato bags contain 4 dull black bags, 1 posh chartreuse bag, 1 faded cyan bag. +muted blue bags contain 5 striped white bags, 1 faded orange bag. +light blue bags contain 4 posh white bags. +plaid chartreuse bags contain 2 bright gray bags. +dull aqua bags contain 5 clear tan bags, 5 dotted red bags, 5 vibrant tomato bags. +light lavender bags contain 5 clear fuchsia bags, 1 striped olive bag. +bright green bags contain 4 vibrant violet bags, 2 vibrant maroon bags. +light beige bags contain 1 striped maroon bag. +drab indigo bags contain 4 posh tomato bags, 5 faded brown bags. +dotted yellow bags contain 3 wavy violet bags, 4 bright violet bags, 4 vibrant lime bags, 1 pale beige bag. +striped gold bags contain 2 light indigo bags, 3 dull red bags, 5 vibrant beige bags. +muted indigo bags contain 5 bright purple bags, 1 pale plum bag, 5 wavy black bags. +dark lime bags contain 2 faded blue bags. +shiny white bags contain 4 clear tan bags, 3 pale yellow bags, 5 plaid tomato bags, 4 wavy turquoise bags. +vibrant maroon bags contain 4 dark red bags, 2 dull aqua bags, 5 wavy aqua bags. +drab teal bags contain 3 shiny indigo bags. +bright plum bags contain 2 plaid chartreuse bags. +vibrant yellow bags contain 3 posh purple bags. +posh salmon bags contain 4 dim plum bags, 1 pale yellow bag, 2 shiny gold bags. +shiny black bags contain 3 dim magenta bags. +bright gray bags contain no other bags. +dull orange bags contain 3 dotted purple bags. +pale purple bags contain 2 bright cyan bags, 2 drab teal bags, 2 dotted gold bags, 4 mirrored fuchsia bags. +dull yellow bags contain 3 posh gray bags. +muted tomato bags contain 3 faded orange bags. +drab olive bags contain 4 dim maroon bags, 1 bright turquoise bag, 3 shiny indigo bags, 5 vibrant lavender bags. +clear salmon bags contain 2 dim chartreuse bags, 2 shiny black bags, 5 dotted indigo bags, 3 dotted aqua bags. +posh black bags contain 2 wavy turquoise bags, 2 shiny plum bags, 2 mirrored gold bags. +light gold bags contain 5 shiny tomato bags, 4 light cyan bags. +shiny coral bags contain 3 faded silver bags. +plaid magenta bags contain 1 vibrant black bag, 2 bright blue bags. +dotted teal bags contain 4 faded olive bags, 5 vibrant brown bags, 3 clear salmon bags. +striped purple bags contain 5 shiny bronze bags. +dim tan bags contain 2 light tan bags, 1 dotted gold bag, 3 shiny white bags. +light silver bags contain 5 dotted cyan bags, 4 dotted aqua bags. +dull white bags contain 5 striped turquoise bags. +plaid aqua bags contain 3 dim bronze bags, 5 dull brown bags, 3 faded plum bags, 2 mirrored crimson bags. +dotted silver bags contain 1 faded teal bag. +dull olive bags contain 1 dark turquoise bag, 3 muted orange bags. +clear purple bags contain 3 drab salmon bags. +mirrored plum bags contain 1 vibrant lavender bag. +bright beige bags contain 4 plaid magenta bags, 1 dull turquoise bag, 4 dim white bags, 1 light aqua bag. +pale red bags contain 1 muted lavender bag, 2 vibrant teal bags, 4 plaid cyan bags, 5 dull orange bags. +drab orange bags contain 3 bright plum bags, 5 vibrant chartreuse bags. +mirrored gold bags contain 2 wavy magenta bags. +posh maroon bags contain 3 dotted lime bags, 2 muted black bags, 3 faded green bags. +clear white bags contain 4 pale black bags. +pale silver bags contain 2 dim coral bags, 2 dull lavender bags, 2 dark teal bags, 3 wavy green bags. +vibrant tomato bags contain 5 dull lavender bags. +striped orange bags contain 5 shiny salmon bags, 1 pale gold bag, 4 mirrored gray bags, 1 plaid black bag. +dim beige bags contain 5 dim salmon bags, 2 striped yellow bags, 5 shiny orange bags, 5 light salmon bags. +clear gold bags contain 2 dim salmon bags, 4 vibrant cyan bags. +dim teal bags contain 3 light indigo bags, 3 pale green bags, 5 muted bronze bags. +shiny silver bags contain 3 drab red bags, 1 pale magenta bag, 3 plaid blue bags, 4 pale white bags. +dark beige bags contain 4 posh black bags, 1 dark maroon bag. +bright bronze bags contain 4 mirrored yellow bags, 1 vibrant salmon bag, 2 mirrored teal bags, 1 shiny beige bag. +dotted maroon bags contain 1 clear tomato bag. +bright olive bags contain 3 striped tomato bags, 3 plaid indigo bags, 3 posh magenta bags. +faded tomato bags contain 5 bright violet bags. +mirrored magenta bags contain 3 wavy coral bags, 4 dull tan bags, 3 wavy chartreuse bags. +striped aqua bags contain 3 drab teal bags, 3 drab crimson bags, 5 plaid gold bags, 2 vibrant aqua bags. +clear crimson bags contain 5 striped chartreuse bags, 5 vibrant blue bags. +striped blue bags contain 4 dull red bags, 3 vibrant white bags, 4 posh black bags. +posh olive bags contain 5 muted cyan bags. +plaid indigo bags contain 5 dotted fuchsia bags, 2 plaid chartreuse bags, 3 vibrant blue bags. +mirrored lime bags contain 2 dotted lavender bags, 2 wavy bronze bags. +wavy blue bags contain 5 mirrored green bags, 5 faded tomato bags, 1 posh turquoise bag. +light fuchsia bags contain 3 faded tomato bags, 5 muted beige bags, 2 faded beige bags, 4 wavy indigo bags. +dull plum bags contain 4 dark blue bags, 5 shiny maroon bags, 3 pale gray bags, 5 drab lime bags. +drab fuchsia bags contain 3 dark maroon bags. +pale teal bags contain 4 vibrant blue bags, 1 bright green bag, 3 dim crimson bags, 1 posh salmon bag. +dull tomato bags contain 3 dim maroon bags, 4 plaid gray bags, 5 striped gold bags, 5 striped white bags. +pale orange bags contain 4 drab yellow bags. +wavy aqua bags contain 1 dim bronze bag. +dim chartreuse bags contain 2 bright violet bags. +dotted crimson bags contain 5 vibrant orange bags, 4 wavy magenta bags. +faded cyan bags contain 3 mirrored blue bags, 3 shiny fuchsia bags, 4 bright indigo bags. +pale salmon bags contain 2 pale cyan bags, 2 muted lime bags, 2 vibrant plum bags. +drab lime bags contain 2 drab yellow bags, 2 light magenta bags, 3 dotted fuchsia bags. +shiny bronze bags contain 1 posh lavender bag. +dim fuchsia bags contain 5 dotted gold bags, 5 vibrant indigo bags, 4 shiny teal bags, 2 dotted silver bags. +dark green bags contain 2 shiny blue bags. +bright red bags contain 2 pale brown bags, 3 plaid blue bags, 4 drab bronze bags, 3 dim yellow bags. +clear teal bags contain 2 drab white bags, 3 muted beige bags. +pale aqua bags contain 4 light tan bags. +dull lavender bags contain 1 dim bronze bag, 5 dim crimson bags, 1 dotted olive bag. +dotted plum bags contain 1 light black bag. +shiny teal bags contain 3 light indigo bags. +dotted lime bags contain 1 shiny gold bag, 3 plaid crimson bags. +dark tan bags contain 5 faded tan bags. +vibrant indigo bags contain 3 shiny fuchsia bags. +light tan bags contain 4 pale yellow bags, 1 pale crimson bag, 3 light gray bags. +drab plum bags contain 2 shiny turquoise bags, 2 vibrant yellow bags, 4 muted brown bags, 2 drab lavender bags. +dim white bags contain 5 dark red bags, 5 dotted olive bags. +light red bags contain 2 vibrant indigo bags, 1 wavy salmon bag, 3 dull brown bags. +mirrored fuchsia bags contain 5 dotted tomato bags. +mirrored indigo bags contain 5 pale lime bags, 5 light magenta bags, 4 light gray bags, 2 dull red bags. +dim yellow bags contain 2 muted beige bags, 2 plaid olive bags, 3 faded aqua bags. +shiny gray bags contain 1 drab yellow bag, 3 shiny lavender bags, 1 posh white bag. +faded violet bags contain 2 bright olive bags, 5 clear gray bags, 2 dark orange bags, 1 pale magenta bag. +mirrored black bags contain 4 clear blue bags. +drab aqua bags contain 1 vibrant crimson bag, 4 clear fuchsia bags. +pale black bags contain 5 pale turquoise bags, 4 striped yellow bags, 4 dotted beige bags. +wavy cyan bags contain 1 vibrant brown bag. +dark silver bags contain 3 light tomato bags, 5 dotted lavender bags, 3 bright turquoise bags. +faded orange bags contain 3 clear turquoise bags, 3 mirrored gold bags, 2 plaid bronze bags, 2 dotted fuchsia bags. +drab crimson bags contain 5 clear blue bags. +posh magenta bags contain 1 bright violet bag, 2 dotted beige bags, 2 bright gray bags. +posh brown bags contain 3 dim tomato bags, 1 dim chartreuse bag, 5 shiny orange bags. +drab gray bags contain 3 striped violet bags. +pale cyan bags contain 5 dotted aqua bags, 3 striped tomato bags. +wavy tan bags contain 3 pale indigo bags. +plaid brown bags contain 2 dotted indigo bags, 1 dull indigo bag, 2 light brown bags. +vibrant beige bags contain 1 shiny teal bag, 3 vibrant cyan bags, 2 posh gray bags, 3 striped tomato bags. +shiny aqua bags contain 2 vibrant black bags, 2 muted coral bags, 4 vibrant coral bags. +mirrored silver bags contain 3 drab silver bags, 1 clear turquoise bag. +pale tan bags contain 3 pale magenta bags. +striped cyan bags contain 5 drab tomato bags. +mirrored coral bags contain 1 mirrored crimson bag, 1 bright maroon bag. +pale white bags contain 4 shiny beige bags, 1 shiny maroon bag, 5 dim bronze bags. +shiny beige bags contain 3 mirrored gold bags. +mirrored chartreuse bags contain 1 dotted tomato bag, 2 bright cyan bags. +wavy red bags contain 1 posh lavender bag, 1 vibrant blue bag, 3 muted brown bags. +muted chartreuse bags contain 3 dim lavender bags, 4 pale plum bags, 4 light magenta bags. +shiny purple bags contain 4 muted green bags, 5 light white bags, 2 faded tan bags, 5 light beige bags. +clear tan bags contain 3 dotted red bags, 1 striped violet bag, 4 plaid chartreuse bags. +bright teal bags contain 1 faded black bag, 3 faded maroon bags. +posh orange bags contain 5 light gold bags, 3 posh aqua bags. +striped gray bags contain 2 bright plum bags, 2 shiny gray bags. +dim lime bags contain 1 plaid blue bag. +posh fuchsia bags contain 1 dull indigo bag, 2 plaid blue bags. +dotted tomato bags contain no other bags. +dim plum bags contain 1 dim chartreuse bag. +dim orange bags contain 2 muted magenta bags, 5 faded aqua bags. +posh gold bags contain 5 light maroon bags, 4 dark turquoise bags, 1 posh white bag, 5 wavy beige bags. +striped bronze bags contain 1 dark magenta bag. +wavy lime bags contain 4 mirrored lavender bags, 3 pale bronze bags, 1 dull white bag. +pale magenta bags contain 2 dim crimson bags, 4 plaid plum bags, 5 muted silver bags, 2 dim yellow bags. +striped chartreuse bags contain 5 light black bags, 3 bright fuchsia bags, 4 pale black bags. +vibrant tan bags contain 2 dim tan bags. +shiny crimson bags contain 5 pale beige bags, 3 clear purple bags, 2 pale violet bags, 4 dotted chartreuse bags. +vibrant orange bags contain no other bags. +striped silver bags contain 5 clear orange bags, 2 dotted fuchsia bags. +clear cyan bags contain 5 muted gray bags, 3 wavy aqua bags. +light black bags contain 1 striped yellow bag. +muted white bags contain 3 muted tomato bags, 5 light black bags, 4 pale black bags, 5 shiny gold bags. diff --git a/2020/inputs/day_8.txt b/2020/inputs/day_8.txt new file mode 100644 index 0000000..5ef799e --- /dev/null +++ b/2020/inputs/day_8.txt @@ -0,0 +1,626 @@ +acc +48 +nop +308 +acc +33 +acc +48 +jmp +379 +acc +27 +acc +23 +acc +29 +acc +3 +jmp +326 +acc -12 +nop +248 +nop +146 +jmp +293 +acc +8 +acc -16 +acc +18 +jmp +255 +jmp +390 +jmp +442 +acc +38 +jmp +451 +jmp +499 +acc +41 +acc +44 +nop +298 +acc +31 +jmp +337 +acc -3 +acc +34 +nop +266 +acc -19 +jmp +281 +jmp +232 +acc -9 +acc +25 +acc -8 +nop +228 +jmp +79 +jmp +58 +acc +38 +nop +318 +jmp +17 +acc +44 +jmp +298 +acc -4 +jmp +196 +jmp +249 +acc -9 +acc -3 +acc +17 +jmp +556 +jmp +1 +acc -15 +jmp +166 +acc +23 +acc +10 +acc +39 +jmp +475 +acc +28 +jmp +41 +jmp +322 +acc +48 +acc -11 +acc -13 +acc +12 +jmp +92 +jmp +1 +acc +9 +jmp -26 +acc +4 +acc -8 +nop +484 +acc -14 +jmp +526 +acc -13 +acc -2 +acc -13 +jmp +419 +acc +22 +acc -17 +jmp +1 +jmp +151 +acc +3 +acc +2 +acc -13 +acc -11 +jmp +352 +acc +24 +jmp -27 +nop +206 +acc +22 +nop +225 +jmp +360 +acc +48 +jmp +105 +jmp +80 +acc -16 +jmp +89 +acc +0 +jmp +339 +acc +37 +acc +41 +nop +156 +jmp +452 +jmp +208 +nop +60 +jmp +155 +acc -16 +jmp +274 +nop -77 +acc -16 +acc +21 +jmp +508 +acc -7 +acc -1 +jmp -83 +acc -11 +jmp +28 +acc +3 +acc +32 +acc -18 +jmp -89 +acc +4 +acc -14 +acc -1 +acc +33 +jmp -75 +nop +185 +acc +8 +acc +22 +acc +26 +jmp +164 +acc -19 +jmp +260 +jmp +174 +acc +2 +acc +34 +jmp -120 +acc -15 +acc +48 +jmp +165 +acc +5 +nop +240 +jmp -121 +jmp +114 +jmp -36 +nop +432 +jmp +1 +acc -18 +jmp +429 +acc +44 +nop +110 +jmp +198 +acc -18 +acc +32 +acc +41 +jmp +102 +nop +177 +acc +35 +acc +24 +acc +46 +jmp +121 +acc +20 +jmp +1 +jmp +407 +jmp +1 +acc +35 +acc +46 +nop -18 +jmp +6 +jmp +422 +acc -19 +jmp -85 +acc +33 +jmp -116 +nop +79 +jmp +284 +acc +3 +acc +49 +nop +317 +jmp +6 +acc +6 +jmp +295 +nop -141 +acc -4 +jmp -44 +nop +155 +acc +48 +acc -17 +jmp +188 +acc +22 +jmp +286 +nop +103 +acc -2 +acc +45 +jmp +20 +acc +21 +acc +37 +jmp +235 +jmp +42 +acc -11 +nop -15 +acc -5 +jmp +235 +jmp +178 +acc +12 +acc -15 +jmp +25 +acc +9 +acc +11 +nop +389 +acc +50 +jmp +146 +acc +26 +jmp +144 +acc -14 +jmp +304 +nop +254 +jmp +337 +jmp +17 +jmp +1 +acc +6 +acc -4 +acc +42 +jmp +117 +acc +25 +acc +50 +acc +45 +jmp -112 +acc +14 +acc +27 +jmp +347 +nop +15 +jmp +14 +acc +29 +jmp +236 +jmp -71 +acc -11 +acc +21 +nop +32 +jmp -162 +acc -15 +jmp +322 +acc -4 +acc +16 +jmp +1 +jmp +100 +jmp +1 +jmp -77 +acc +21 +nop -199 +acc +49 +acc -1 +jmp -231 +jmp +230 +acc -19 +jmp +1 +jmp -49 +jmp -11 +acc +6 +jmp -110 +jmp +331 +acc +44 +jmp +292 +acc -7 +acc -18 +acc +50 +jmp +221 +acc +33 +acc +7 +jmp -45 +jmp +342 +acc -19 +acc +36 +acc +15 +jmp -229 +nop -5 +jmp +57 +acc +26 +acc +43 +nop -175 +jmp +82 +acc +45 +jmp -161 +acc -16 +acc +35 +acc +46 +acc +43 +jmp +1 +nop +195 +acc +39 +acc +27 +acc +32 +jmp +227 +jmp -272 +nop +201 +acc +6 +acc +13 +acc +12 +jmp -177 +acc -9 +acc +46 +nop +199 +acc -1 +jmp +1 +jmp +3 +acc +42 +jmp +75 +jmp +305 +acc +49 +acc -16 +jmp -92 +acc +3 +nop +279 +jmp +54 +jmp +31 +acc +50 +jmp -125 +acc +21 +nop -178 +acc +40 +jmp +193 +acc +39 +acc -5 +jmp +261 +nop -3 +acc -13 +jmp -310 +acc +6 +acc -17 +acc +12 +acc +38 +jmp +267 +jmp -311 +acc -2 +jmp -7 +nop +77 +acc -2 +acc +39 +acc -16 +jmp +10 +nop +59 +jmp -296 +acc -4 +acc +41 +jmp -249 +acc +43 +nop +35 +jmp +95 +jmp +171 +acc +10 +nop +169 +acc -17 +jmp +47 +acc +49 +acc +38 +nop +199 +jmp +249 +jmp -53 +nop -194 +acc +19 +acc +18 +jmp -16 +acc +33 +jmp +194 +nop -194 +acc +49 +jmp +85 +acc +50 +nop -318 +acc -7 +jmp -49 +acc -6 +acc +48 +acc -13 +acc -14 +jmp +67 +acc +12 +acc +19 +acc +3 +jmp -371 +jmp -149 +acc +49 +nop -202 +jmp -315 +acc -6 +jmp -171 +acc -7 +jmp +113 +acc +34 +acc +36 +acc +17 +jmp -97 +acc +3 +jmp -244 +acc +25 +acc +30 +acc +25 +acc -19 +jmp +44 +nop +84 +jmp +124 +nop +17 +acc -11 +acc -8 +acc +4 +jmp +193 +jmp -388 +acc +36 +acc +17 +jmp +1 +acc -5 +jmp +166 +acc +39 +acc -10 +jmp -280 +acc +15 +jmp +1 +jmp -396 +jmp +113 +acc +37 +acc +13 +jmp -35 +nop +109 +acc +8 +acc +6 +acc +19 +jmp +39 +jmp +1 +jmp +1 +acc +39 +acc -14 +jmp -291 +acc +39 +acc +31 +jmp -231 +acc +41 +jmp -55 +nop -167 +jmp +105 +acc -8 +acc +34 +jmp -114 +nop +58 +jmp +1 +nop -270 +acc +31 +jmp -135 +acc +8 +acc +33 +jmp +1 +jmp -64 +acc +24 +acc +16 +jmp +117 +acc +35 +acc -11 +nop +44 +acc +18 +jmp +1 +jmp +88 +acc +29 +nop +34 +jmp +1 +nop -118 +jmp -404 +jmp -144 +acc -12 +nop -372 +acc -14 +jmp -209 +acc +12 +jmp +1 +acc -1 +jmp +132 +nop -93 +jmp -130 +acc +23 +acc +30 +acc +3 +jmp -209 +nop -381 +acc -19 +jmp +23 +nop +87 +jmp -277 +acc +39 +jmp -391 +acc +14 +acc +18 +acc +24 +nop -459 +jmp -267 +acc +35 +nop +84 +jmp -231 +acc +5 +acc +0 +acc +45 +jmp -210 +jmp -211 +acc +7 +acc +8 +nop -249 +jmp -8 +jmp -105 +nop -455 +acc -19 +acc +36 +jmp -368 +acc +33 +acc +10 +acc +9 +jmp -259 +nop +41 +acc -14 +acc +2 +jmp -336 +acc +46 +jmp -261 +nop -284 +acc +21 +nop -154 +jmp -485 +jmp -505 +acc +32 +nop -327 +acc +1 +nop +43 +jmp -23 +acc -7 +jmp -88 +acc +10 +jmp -440 +acc +12 +jmp -430 +jmp +1 +acc +46 +nop -105 +jmp -87 +acc +49 +acc -10 +acc -6 +jmp -411 +jmp -268 +acc +35 +acc +15 +jmp +45 +acc -14 +acc +0 +jmp -234 +nop -67 +acc +32 +acc +1 +jmp -476 +jmp -297 +nop -274 +jmp -435 +acc +36 +acc -2 +acc +33 +acc +9 +jmp -26 +jmp +50 +acc +23 +jmp -172 +jmp +1 +acc +34 +acc +32 +acc -4 +jmp -312 +acc -11 +acc +26 +jmp -150 +acc +41 +nop -79 +acc +25 +jmp -76 +acc -2 +acc +29 +acc +12 +jmp -549 +nop -357 +nop -438 +jmp -320 +acc +7 +acc -6 +jmp -149 +nop -74 +acc +7 +acc +45 +jmp -383 +acc -8 +acc +5 +acc +12 +jmp -463 +acc -17 +acc +5 +jmp -34 +jmp +1 +acc +18 +jmp -523 +acc +38 +acc +35 +nop -222 +jmp -424 +nop -365 +jmp -188 +acc +0 +acc +7 +nop -167 +acc +27 +jmp -351 +acc +26 +jmp -201 +nop -208 +nop -466 +acc +50 +nop -531 +jmp -273 +acc +21 +acc +25 +nop -397 +acc +29 +jmp +1 diff --git a/2020/inputs/day_9.txt b/2020/inputs/day_9.txt new file mode 100644 index 0000000..31690cc --- /dev/null +++ b/2020/inputs/day_9.txt @@ -0,0 +1,1000 @@ +37 +7 +16 +34 +48 +24 +5 +40 +30 +35 +2 +45 +19 +33 +36 +49 +32 +1 +44 +21 +25 +3 +11 +38 +15 +4 +6 +7 +8 +16 +9 +10 +5 +12 +13 +17 +14 +35 +18 +19 +20 +23 +36 +53 +22 +21 +41 +28 +11 +24 +15 +25 +26 +27 +29 +64 +50 +31 +30 +34 +32 +44 +33 +47 +74 +35 +66 +37 +36 +38 +45 +39 +40 +41 +42 +57 +51 +55 +68 +70 +71 +72 +61 +88 +65 +75 +140 +77 +73 +82 +110 +81 +74 +116 +86 +80 +112 +83 +92 +128 +141 +106 +120 +146 +126 +147 +133 +134 +138 +139 +156 +209 +162 +160 +154 +155 +233 +216 +163 +313 +298 +273 +189 +198 +226 +253 +232 +265 +259 +260 +316 +267 +272 +277 +449 +428 +314 +309 +471 +318 +379 +430 +458 +387 +683 +475 +415 +421 +486 +525 +544 +575 +532 +519 +632 +539 +590 +739 +586 +623 +627 +688 +696 +697 +804 +1072 +1119 +940 +808 +896 +836 +990 +907 +1107 +1436 +1114 +1129 +1051 +1058 +1754 +1385 +1644 +1459 +1250 +2686 +1324 +2442 +1504 +1501 +1612 +1704 +1915 +1715 +1732 +1826 +1897 +2048 +2431 +2109 +3004 +2165 +2825 +2301 +3039 +2862 +3145 +2574 +2709 +2751 +3447 +4043 +3005 +4198 +3113 +3612 +4910 +3629 +3541 +4306 +4157 +4466 +4349 +4274 +5113 +5027 +5446 +6186 +7889 +8522 +5436 +5854 +5283 +5864 +6292 +6118 +6546 +6617 +6742 +6654 +7241 +7170 +7698 +8431 +11231 +8506 +8623 +9301 +9387 +10140 +10310 +12518 +11137 +10719 +11147 +11290 +11401 +11575 +12156 +12410 +12664 +16757 +13271 +13396 +19611 +14411 +14868 +17129 +16937 +29793 +17807 +17924 +18688 +27532 +23665 +21029 +21866 +23954 +22009 +22976 +30217 +34022 +25986 +27807 +29601 +30400 +26667 +27682 +28264 +40602 +29279 +31805 +34066 +41472 +45606 +41589 +47696 +48711 +55214 +43038 +57543 +69154 +45963 +77223 +66588 +68866 +55265 +115299 +58207 +54349 +95816 +68284 +62330 +115750 +61084 +100312 +90012 +116995 +100820 +84627 +139841 +94674 +89001 +97387 +98303 +190490 +178080 +109614 +112556 +113472 +115433 +116349 +225364 +116679 +122633 +194241 +123414 +145711 +158471 +150085 +173628 +268085 +179301 +198099 +182014 +183675 +186388 +391499 +207001 +207917 +222170 +223086 +229235 +323350 +228905 +530351 +233028 +239312 +262390 +304647 +308556 +389397 +295796 +344859 +415293 +352929 +380113 +430087 +405100 +365689 +370063 +393389 +545520 +431003 +530726 +445256 +456114 +462263 +533552 +524701 +472340 +846296 +535108 +674245 +763452 +604352 +640655 +758059 +697788 +718618 +733042 +1129053 +759078 +838645 +876259 +824392 +918090 +887117 +893266 +907519 +901370 +1591316 +934603 +1469711 +1359500 +1742482 +1139460 +1175763 +1245007 +1302140 +1362411 +1338443 +1571687 +1416406 +1963852 +1557434 +1583470 +1597723 +1663037 +1769525 +2032726 +1780383 +1827869 +3212193 +1808889 +2351009 +2908044 +2538174 +2384467 +3385303 +3352070 +2315223 +2420770 +2547147 +2640583 +2778817 +3886910 +2973840 +2999876 +4336251 +3140904 +3181193 +5009062 +4606686 +4229659 +5601963 +3589272 +3636758 +4124112 +4159898 +4666232 +4699690 +4735993 +4805237 +6183905 +4862370 +4955806 +4967917 +5187730 +5419400 +7370563 +5973716 +6589148 +7226030 +6322097 +10580402 +6817951 +7713384 +11509827 +7749170 +7760870 +7796656 +8824488 +8860105 +8895891 +10281770 +12554407 +15536208 +9667607 +16645061 +13548127 +9923723 +13692660 +10607130 +22222014 +12295813 +14531335 +12911245 +20092469 +19476293 +14567121 +15678056 +15462554 +15510040 +18356300 +30972594 +19141875 +34623804 +17755996 +18563498 +19591330 +25386277 +20274737 +20530853 +27240787 +22902943 +22219536 +30198460 +30667241 +25207058 +26827148 +27442580 +43742577 +32323117 +30029675 +34158451 +33218550 +33266036 +33866340 +36112296 +37347326 +36319494 +52721949 +44977607 +38154828 +39866067 +40805590 +42494273 +43433796 +68014567 +45122479 +55485572 +58425608 +52034206 +52649638 +76652724 +57472255 +128686930 +95216222 +73666820 +66484586 +67084890 +69378332 +91338595 +72431790 +137710495 +74474322 +78020895 +127917362 +84988546 +84239386 +83299863 +85928069 +111607065 +132899930 +135078332 +186342970 +104683844 +109506461 +110121893 +123956841 +124557145 +161700808 +256917030 +186081387 +146906112 +136463222 +141810122 +150452685 +158713708 +207374252 +157774185 +167539249 +168288409 +193421756 +169227932 +269381250 +197535134 +229240989 +214190305 +244584793 +214805737 +219628354 +177777905 +246585115 +286915907 +261020367 +278273344 +311038054 +335827658 +283369334 +292262807 +360961005 +396780238 +437669659 +325313434 +365074383 +448869343 +361710165 +347005837 +608295280 +392583642 +422362698 +391968210 +397406259 +424363020 +456051249 +503091339 +461147239 +893720908 +561642678 +589311398 +570536151 +675337544 +619196992 +575632141 +639268644 +707966842 +708716002 +672319271 +687023599 +821769279 +754293807 +738974047 +739589479 +1483032306 +1031683390 +789374469 +1036779380 +1233961949 +880414269 +1133466510 +964238578 +1022789917 +1809594090 +2272406775 +1164943539 +1209804795 +1214900785 +1194829133 +1247951412 +1461693740 +1359342870 +1791073187 +1411908750 +1651262177 +1478563526 +1493883286 +1821057859 +1776368859 +1753613047 +1954318008 +2156256427 +1844652847 +1903204186 +3010605047 +1987028495 +2129182117 +2187733456 +3196833290 +3284956473 +2359772672 +2404633928 +2409729918 +2442780545 +2607294282 +2771251620 +2837906396 +3920255304 +2905792036 +3747857033 +3323216373 +3247496333 +4630514001 +4802553217 +3598265894 +4510498468 +4307838114 +3831681342 +4174761951 +4116210612 +7346122927 +4316915573 +4597463374 +5652130261 +4847414473 +4764406600 +6236315270 +5050074827 +5214032165 +7618666093 +6369517514 +8918763829 +6153288369 +6229008409 +6570712706 +6921482267 +7422258284 +7714476506 +7906104008 +7915181467 +8148596915 +11663038500 +8679095815 +8290972563 +8433126185 +8914378947 +9081322173 +11168176080 +9611821073 +13362629080 +9814481427 +10264106992 +11203363196 +12382296778 +14284698981 +12522805883 +12724001075 +16834819698 +23726169079 +13492194973 +17995701120 +15136734790 +15620580514 +15821285475 +22196778205 +16439569478 +16724098748 +23306676400 +17514448358 +17347505132 +18728860374 +18693143246 +19426302500 +19875928065 +21467470188 +21017844623 +32651183148 +24905102661 +28002877292 +31949108383 +31860833538 +40450267827 +29313480448 +28628929763 +38018063680 +33616281634 +34238547106 +31441865989 +59143411073 +33163668226 +36040648378 +34071603880 +48956314347 +36243308732 +60070795752 +49020721915 +55083751822 +39302230565 +40893772688 +70744096554 +45922947284 +52907979953 +54218583109 +59951985675 +63385084328 +57942410211 +62477148674 +93101815502 +61792597989 +65680413095 +64605534215 +93919014663 +67235272106 +69204316604 +69406976958 +70112252258 +70314912612 +75545539297 +110813319904 +88322952480 +80196003253 +150800101154 +118824117324 +110098089292 +98830927237 +100141530393 +112160993320 +114170568784 +129027870095 +157729929438 +199136272384 +124269746663 +186062344652 +127473011084 +130285947310 +133809850819 +136439588710 +183374885388 +138611293562 +139519229216 +250332549120 +194366572037 +204465749916 +316348291962 +168518955733 +210481950563 +314563839208 +232640778056 +238752823955 +198972457630 +212302523713 +250610157494 +438833585871 +251742757747 +266992240300 +266084304646 +705825826171 +257758958394 +270249439529 +264095798129 +272421144381 +404848522600 +441133843782 +278130522778 +308038184949 +362885527770 +367491413363 +379000906296 +380821479446 +502352915241 +409454408193 +411274981343 +431613235686 +437725281585 +478386828359 +484723668094 +633575718009 +509501716141 +703809586231 +523843263040 +852408825125 +521854756523 +528008397923 +534345237658 +766448713370 +653242623827 +778766394706 +586168707727 +641016050548 +688859664395 +730376941133 +869844328604 +889661809702 +790275887639 +820729389536 +841067643879 +842888217029 +955456498726 +1110011970767 +1070892375821 +1573265158162 +1227184758275 +1031356472664 +1056199994181 +1045698019563 +1252231697656 +1162870807071 +1169024448471 +1264722178791 +1479135552034 +1239411331554 +1275028372122 +1427236351606 +1510860379152 +2589147522801 +2054998066430 +2180904346588 +1611005277175 +1631343531518 +1776185888262 +1683955860908 +1798344715755 +2077054492227 +2087556466845 +2116590395384 +3761010353135 +2101898013744 +2194227279735 +2208568826634 +2402282138625 +3878083902006 +2331895255542 +4408949747769 +3458949458526 +2514439703676 +2666647683160 +2702264723728 +2938096730758 +3121865656327 +3460141749170 +3242348808693 +4325159222018 +5090292990044 +3315299392426 +3482300576663 +5330434482961 +3992571995490 +4631030099060 +6603177027504 +4218488409128 +4296125293479 +6148948259823 +4402796106369 +6364214465020 +5884582715288 +4846334959218 +4998542938702 +5181087386836 +6017564116154 +5216704427404 +9033826205429 +5640361454486 +8698921399848 +6582007405497 +6557648201119 +9936627949262 +7718095498795 +9199882107714 +7307871387916 +9961464582021 +8838906954708 +10215247366106 +9477365058278 +8514613702607 +20151875315368 +9142460252697 +9401339045071 +9583883493205 +15142551968857 +19249073571535 +11234268543558 +10179630325538 +10397791814240 +15983346450568 +26198593816674 +12198009655605 +12948232842402 +15781889513211 +15724467658194 +13865519589035 +15025966886711 +17679560080816 +15822485090523 +16146778342624 +25939715024300 +30924441482068 +24924349765908 +17657073955304 +18098497195812 +18543799297768 +28913828624374 +18985222538276 +19763513818743 +20577422139778 +31707814108762 +21413898869096 +34325688810979 +27922477313799 +25146242498007 +38256982220594 +32409318886803 +31545079669851 +28891486475746 +53838178390282 +29688004679558 +30848451977234 +39957698166864 +50472467153603 +33803852297928 +68570964349415 +57805315100120 +37083719734088 +35755571151116 +36642296493580 +63239517435353 +38748736357019 +66735007697782 +44909756316750 +79219213969216 +46560141367103 +49336376182895 +57555561384810 +64647057626862 +78706434523883 +115861510462796 +62097323566361 +114974785120332 +78227862658641 +60536456656792 +66771724413646 diff --git a/2020/src/bin/day_1.rs b/2020/src/bin/day_1.rs new file mode 100644 index 0000000..68a570c --- /dev/null +++ b/2020/src/bin/day_1.rs @@ -0,0 +1,83 @@ +use bevy::prelude::*; +use std::fs::File; +use std::io::{BufRead, BufReader}; + +fn main() { + App::build() + .add_resource(WindowDescriptor { + title: "Advent of Code".to_string(), + width: 1920, + height: 1080, + ..Default::default() + }) + .add_resource(ClearColor(Color::rgb(0., 0., 0.))) + .add_startup_system(setup_camera.system()) + .add_startup_system(read_input_file.system()) + .add_stage("mark") + .add_system_to_stage("mark", mark_sum_pair.system()) + .add_system_to_stage("mark", mark_sum_triple.system()) + .add_stage("report") + .add_system_to_stage("report", print_product_pair.system()) + .add_system_to_stage("report", print_product_triple.system()) + //.add_plugins(DefaultPlugins) + .run(); +} + +fn setup_camera(mut commands: Commands) { + commands.spawn(Camera2dComponents::default()); +} + +struct Expense(i32); +struct FlaggedPair; +struct FlaggedTriple; + +fn read_input_file(mut commands: Commands) { + let f = File::open("./inputs/day_1.txt").unwrap(); // TODO: Error handling on systems? + for line in BufReader::new(f).lines() { + let expense = line.unwrap().trim().parse().unwrap(); + commands.spawn((Expense(expense),)); + } +} + +fn mark_sum_pair(mut commands: Commands, expenses: Query<(Entity, &Expense)>) { + for (entity_1, expense_1) in expenses.iter() { + for (entity_2, expense_2) in expenses.iter() { + if expense_1.0 + expense_2.0 == 2020 { + commands.insert_one(entity_1, FlaggedPair); + commands.insert_one(entity_2, FlaggedPair); + } + } + } +} + +fn mark_sum_triple(mut commands: Commands, expenses: Query<(Entity, &Expense)>) { + for (entity_1, expense_1) in expenses.iter() { + for (entity_2, expense_2) in expenses.iter() { + for (entity_3, expense_3) in expenses.iter() { + if expense_1.0 + expense_2.0 + expense_3.0 == 2020 { + commands.insert_one(entity_1, FlaggedTriple); + commands.insert_one(entity_2, FlaggedTriple); + commands.insert_one(entity_3, FlaggedTriple); + } + } + } + } +} + +fn print_product_pair(flagged_expenses: Query<With<FlaggedPair, &Expense>>) { + let mut product = 1; + for expense in flagged_expenses.iter() { + product *= expense.0; + } + // TODO: Put it on the screen! + println!("Product Pair: {}", product); +} + +fn print_product_triple(flagged_expenses: Query<With<FlaggedTriple, &Expense>>) { + let mut product = 1; + for expense in flagged_expenses.iter() { + product *= expense.0; + } + // TODO: Put it on the screen! + println!("Product Triple: {}", product); +} diff --git a/2020/src/bin/day_10.rs b/2020/src/bin/day_10.rs new file mode 100644 index 0000000..7ef4fa2 --- /dev/null +++ b/2020/src/bin/day_10.rs @@ -0,0 +1,124 @@ +use bevy::{app::AppExit, prelude::*}; +use std::io::{BufRead, BufReader}; +use std::{collections::BTreeMap, fs::File}; + +fn main() { + App::build() + .add_resource(WindowDescriptor { + title: "Advent of Code".to_string(), + width: 1920, + height: 1080, + ..Default::default() + }) + .add_resource(ClearColor(Color::rgb(0., 0., 0.))) + .add_startup_system(setup_camera.system()) + .add_startup_system(read_input_file.system()) + .add_startup_stage("differences") + .add_startup_system_to_stage("differences", add_min_differences.system()) + .add_startup_system_to_stage("differences", add_all_differences.system()) + .add_startup_stage("report") + .add_startup_system_to_stage("report", print_difference_stats.system()) + .add_system(add_next_paths_to_end_sum.system()) + .add_system(report_full_paths_to_end.system()) + .add_plugins(DefaultPlugins) + .run(); +} + +fn setup_camera(mut commands: Commands) { + commands.spawn(Camera2dComponents::default()); +} + +#[derive(PartialEq, Eq, PartialOrd, Ord)] +struct MinJoltDiff(i64); +#[derive(Clone)] +struct NextJolts(Vec<Entity>); +struct Jolts(i64); +struct PathsToEnd(u64); + +fn read_input_file(mut commands: Commands) { + let f = File::open("./inputs/day_10.txt").unwrap(); + + commands.spawn((Jolts(0),)); + for line in BufReader::new(f).lines() { + let line = line.unwrap(); + let line = line.trim(); + let num = line.parse().unwrap(); + + commands.spawn((Jolts(num),)); + } +} + +fn add_min_differences( + mut commands: Commands, + jolts_query: Query<(Entity, &Jolts, Option<&MinJoltDiff>)>, +) { + for (entity, jolts, jolt_diff) in jolts_query.iter() { + if jolt_diff.is_none() { + let min_increase = jolts_query + .iter() + .map(|(_, other_jolts, _)| other_jolts) + .filter(|other_jolts| other_jolts.0 > jolts.0) + .map(|other_jolts| MinJoltDiff(other_jolts.0 - jolts.0)) + .min() + .unwrap_or(MinJoltDiff(3)); + commands.insert_one(entity, min_increase); + } + } +} + +fn add_all_differences(mut commands: Commands, jolts_query: Query<(Entity, &Jolts)>) { + for (entity, jolts) in jolts_query.iter() { + let next_entities = jolts_query + .iter() + .filter(|(_, other_jolts)| other_jolts.0 > jolts.0 && other_jolts.0 - jolts.0 <= 3) + .map(|(other_entity, _)| other_entity) + .collect(); + commands.insert_one(entity, NextJolts(next_entities)); + } +} + +fn print_difference_stats(diffs: Query<&MinJoltDiff>) { + let mut buckets: BTreeMap<i64, usize> = BTreeMap::new(); + for diff in diffs.iter() { + *buckets.entry(diff.0).or_insert(0) += 1; + } + println!("Buckets: {:?}", buckets); + + println!( + "Bucket 1 * Bucket 3: {}", + buckets.get(&1).unwrap_or(&0) * buckets.get(&3).unwrap_or(&0) + ); +} + +fn add_next_paths_to_end_sum( + mut commands: Commands, + potential_to_add: Query<Without<PathsToEnd, (Entity, &NextJolts)>>, + already_added: Query<&PathsToEnd>, +) { + for (entity, next) in potential_to_add.iter() { + if next.0.is_empty() { + commands.insert_one(entity, PathsToEnd(1)); + } else { + let next_paths: Result<Vec<&PathsToEnd>, _> = next + .0 + .iter() + .map(|next_entity| already_added.get(*next_entity)) + .collect(); + if let Ok(next_paths) = next_paths { + let sum = next_paths.iter().map(|paths| paths.0).sum(); + commands.insert_one(entity, PathsToEnd(sum)); + } + } + } +} + +fn report_full_paths_to_end( + mut exit_events: ResMut<Events<AppExit>>, + jolts: &Jolts, + paths: &PathsToEnd, +) { + if jolts.0 == 0 { + println!("Paths from the start to the end: {}", paths.0); + exit_events.send(AppExit); + } +} diff --git a/2020/src/bin/day_11.rs b/2020/src/bin/day_11.rs new file mode 100644 index 0000000..82bb282 --- /dev/null +++ b/2020/src/bin/day_11.rs @@ -0,0 +1,209 @@ +use bevy::prelude::*; +use std::fs::File; +use std::io::{BufRead, BufReader}; + +fn main() { + App::build() + .add_resource(WindowDescriptor { + title: "Advent of Code".to_string(), + width: 1920, + height: 1080, + ..Default::default() + }) + .add_event::<AdjacentStableEvent>() + .add_event::<LineOfSightStableEvent>() + .add_resource(ClearColor(Color::rgb(0., 0., 0.))) + .add_startup_system(setup_camera.system()) + .add_startup_system(read_input_file.system()) + .add_system(iterate_adjacent_seats.system()) + .add_system(iterate_line_of_sight_seats.system()) + .add_system(report_adjacent_done.system()) + .add_system(report_line_of_sight_done.system()) + .add_plugins(DefaultPlugins) + .run(); +} + +fn setup_camera(mut commands: Commands) { + commands.spawn(Camera2dComponents::default()); +} + +#[derive(PartialEq, Eq, Clone, Copy)] +struct Position { + x: i32, + y: i32, +} +impl Position { + fn distance(&self, other: &Position) -> i32 { + (self.x - other.x).abs().max((self.y - other.y).abs()) + } +} +impl std::ops::Add<&Position> for Position { + type Output = Position; + fn add(self, other: &Position) -> Self::Output { + Position { + x: self.x + other.x, + y: self.y + other.y, + } + } +} + +struct AdjacentSeat { + occupied: bool, +} +struct LineOfSightSeat { + occupied: bool, +} + +struct AdjacentStableEvent; +struct LineOfSightStableEvent; + +#[derive(Default)] +struct Bounds { + min_x: i32, + max_x: i32, + min_y: i32, + max_y: i32, +} + +fn read_input_file(mut commands: Commands) { + let f = File::open("./inputs/day_11.txt").unwrap(); + let mut bounds = Bounds::default(); + + for (y, line) in BufReader::new(f).lines().enumerate() { + let line = line.unwrap(); + let line = line.trim(); + for (x, c) in line.chars().enumerate() { + if c == 'L' { + commands.spawn(( + Position { + x: x as i32, + y: y as i32, + }, + AdjacentSeat { occupied: false }, + LineOfSightSeat { occupied: false }, + )); + } + bounds.max_x = x as i32; + } + + bounds.max_y = y as i32; + } + commands.insert_resource(bounds); +} + +fn iterate_adjacent_seats( + mut commands: Commands, + mut stable_events: ResMut<Events<AdjacentStableEvent>>, + seats: Query<(Entity, &Position, &AdjacentSeat)>, +) { + let mut changes: Vec<(Entity, AdjacentSeat)> = Vec::new(); + for (entity, position, seat) in seats.iter() { + let surrounding_count = seats + .iter() + .filter(|(_, other_position, other_seat)| { + other_seat.occupied && position.distance(other_position) == 1 + }) + .count(); + let change = if !seat.occupied && surrounding_count == 0 { + Some(true) + } else if seat.occupied && surrounding_count >= 4 { + Some(false) + } else { + None + }; + if let Some(occupied) = change { + changes.push((entity, AdjacentSeat { occupied })); + } + } + if changes.is_empty() { + stable_events.send(AdjacentStableEvent); + } + + for (entity, seat) in changes { + commands.insert_one(entity, seat); + } +} + +fn iterate_line_of_sight_seats( + mut commands: Commands, + mut stable_events: ResMut<Events<LineOfSightStableEvent>>, + bounds: Res<Bounds>, + seats: Query<(Entity, &Position, &LineOfSightSeat)>, +) { + let dir_vectors = [ + Position { x: -1, y: 0 }, + Position { x: -1, y: -1 }, + Position { x: 0, y: -1 }, + Position { x: 1, y: -1 }, + Position { x: 1, y: 0 }, + Position { x: 1, y: 1 }, + Position { x: 0, y: 1 }, + Position { x: -1, y: 1 }, + ]; + + let mut changes: Vec<(Entity, LineOfSightSeat)> = Vec::new(); + for (entity, position, seat) in seats.iter() { + let mut surrounding_count = 0; + for vec in dir_vectors.iter() { + let mut check = position.clone(); + while check.x >= bounds.min_x + && check.x <= bounds.max_x + && check.y >= bounds.min_y + && check.y <= bounds.max_y + { + check = check + vec; + if let Some((_, _, other_seat)) = + seats.iter().find(|(_, other_pos, _)| other_pos == &&check) + { + if other_seat.occupied { + surrounding_count += 1; + } + break; + } + } + } + + let change = if !seat.occupied && surrounding_count == 0 { + Some(true) + } else if seat.occupied && surrounding_count >= 5 { + Some(false) + } else { + None + }; + if let Some(occupied) = change { + changes.push((entity, LineOfSightSeat { occupied })); + } + } + if changes.is_empty() { + stable_events.send(LineOfSightStableEvent); + } + + for (entity, seat) in changes { + commands.insert_one(entity, seat); + } +} + +fn report_adjacent_done( + stable_events: Res<Events<AdjacentStableEvent>>, + mut stable_event_reader: Local<EventReader<AdjacentStableEvent>>, + seats: Query<&AdjacentSeat>, +) { + for _ in stable_event_reader.iter(&stable_events) { + let occupied = seats.iter().filter(|s| s.occupied).count(); + println!("{} seats end up occupied in the adjacent model", occupied); + } +} + +fn report_line_of_sight_done( + stable_events: Res<Events<LineOfSightStableEvent>>, + mut stable_event_reader: Local<EventReader<LineOfSightStableEvent>>, + seats: Query<&LineOfSightSeat>, +) { + for _ in stable_event_reader.iter(&stable_events) { + let occupied = seats.iter().filter(|s| s.occupied).count(); + println!( + "{} seats end up occupied in the line of sight model", + occupied + ); + } +} diff --git a/2020/src/bin/day_12.rs b/2020/src/bin/day_12.rs new file mode 100644 index 0000000..489cdca --- /dev/null +++ b/2020/src/bin/day_12.rs @@ -0,0 +1,233 @@ +use bevy::prelude::*; +use std::fs::File; +use std::io::{BufRead, BufReader}; +use std::ops::Deref; + +fn main() { + App::build() + .add_resource(WindowDescriptor { + title: "Advent of Code".to_string(), + width: 1920, + height: 1080, + ..Default::default() + }) + .add_resource(ClearColor(Color::rgb(0., 0., 0.))) + .add_startup_system(setup_camera.system()) + .add_startup_system(read_input_file.system()) + .add_system(move_normal_ship.system()) + .add_system(move_waypoint_ship.system()) + .add_plugins(DefaultPlugins) + .run(); +} + +fn setup_camera(mut commands: Commands) { + commands.spawn(Camera2dComponents::default()); +} + +#[derive(PartialEq, Eq, Clone, Copy)] +struct Position { + x: i64, + y: i64, +} +impl Position { + fn manhattan_distance(&self, other: &Position) -> i64 { + (self.x - other.x).abs() + (self.y - other.y).abs() + } +} +impl std::ops::Add<&Position> for &Position { + type Output = Position; + fn add(self, other: &Position) -> Self::Output { + Position { + x: self.x + other.x, + y: self.y + other.y, + } + } +} +impl std::ops::Mul<i64> for Position { + type Output = Position; + fn mul(self, other: i64) -> Self::Output { + Position { + x: self.x * other, + y: self.y * other, + } + } +} + +enum Facing { + North, + South, + East, + West, +} +impl Facing { + fn right(&mut self) { + use Facing::*; + *self = match self { + North => East, + East => South, + South => West, + West => North, + } + } + + fn reverse(&mut self) { + self.right(); + self.right(); + } + + fn left(&mut self) { + self.reverse(); + self.right(); + } +} + +struct Instructions(Vec<Instruction>); +#[derive(Clone)] +enum Instruction { + North(i64), + South(i64), + East(i64), + West(i64), + Left(i64), + Right(i64), + Forward(i64), +} + +struct InstructionPointer(usize); + +struct Waypoint(Position); + +fn read_input_file(mut commands: Commands) { + let f = File::open("./inputs/day_12.txt").unwrap(); + + let instructions: Vec<Instruction> = BufReader::new(f) + .lines() + .map(|line| { + let line = line.unwrap(); + let line = line.trim(); + + let val: i64 = line[1..].parse().unwrap(); + let instruction = match line.chars().next().unwrap() { + 'N' => Instruction::North(val), + 'S' => Instruction::South(val), + 'E' => Instruction::East(val), + 'W' => Instruction::West(val), + 'L' => Instruction::Left(val), + 'R' => Instruction::Right(val), + 'F' => Instruction::Forward(val), + other => panic!("Unknown instruction: {}", other), + }; + instruction + }) + .collect(); + + commands.spawn(( + Instructions(instructions.clone()), + InstructionPointer(0), + Facing::East, + Position { x: 0, y: 0 }, + )); + + commands.spawn(( + Waypoint(Position { x: 10, y: 1 }), + Instructions(instructions), + InstructionPointer(0), + Position { x: 0, y: 0 }, + )); +} + +fn move_normal_ship( + mut q: Query< + Without< + Waypoint, + ( + &Instructions, + &mut InstructionPointer, + &mut Facing, + &mut Position, + ), + >, + >, +) { + for (instructions, mut instruction_pointer, mut facing, mut position) in q.iter_mut() { + if let Some(instruction) = instructions.0.get(instruction_pointer.0) { + use Instruction::*; + match instruction { + North(val) => position.y += val, + South(val) => position.y -= val, + East(val) => position.x += val, + West(val) => position.x -= val, + Left(90) | Right(270) => facing.left(), + Left(180) | Right(180) => facing.reverse(), + Left(270) | Right(90) => facing.right(), + Left(val) | Right(val) => panic!("Unknown left/right val: {}", val), + Forward(val) => match facing.deref() { + Facing::North => position.y += val, + Facing::South => position.y -= val, + Facing::East => position.x += val, + Facing::West => position.x -= val, + }, + }; + + instruction_pointer.0 += 1; + } else { + println!( + "Normal Ship at destination: {} x {}, Manhattan distance: {}", + position.x, + position.y, + position.manhattan_distance(&Position { x: 0, y: 0 }) + ); + } + } +} + +fn move_waypoint_ship( + instructions: &Instructions, + mut waypoint: Mut<Waypoint>, + mut instruction_pointer: Mut<InstructionPointer>, + mut position: Mut<Position>, +) { + if let Some(instruction) = instructions.0.get(instruction_pointer.0) { + use Instruction::*; + match instruction { + North(val) => waypoint.0.y += val, + South(val) => waypoint.0.y -= val, + East(val) => waypoint.0.x += val, + West(val) => waypoint.0.x -= val, + Left(90) | Right(270) => { + waypoint.0 = Position { + x: -waypoint.0.y, + y: waypoint.0.x, + } + } + Left(180) | Right(180) => { + waypoint.0 = Position { + x: -waypoint.0.x, + y: -waypoint.0.y, + } + } + Left(270) | Right(90) => { + waypoint.0 = Position { + x: waypoint.0.y, + y: -waypoint.0.x, + } + } + Left(val) | Right(val) => panic!("Unknown left/right val: {}", val), + Forward(val) => *position = position.deref() + &(waypoint.0 * *val), + }; + + // println!( + // "Position: {} x {}. Waypoint: {} x {}", + // position.x, position.y, waypoint.0.x, waypoint.0.y + // ); + + instruction_pointer.0 += 1; + } else { + println!( + "Waypoint Ship at destination: {} x {}, Manhattan distance: {}", + position.x, + position.y, + position.manhattan_distance(&Position { x: 0, y: 0 }) + ); + } +} diff --git a/2020/src/bin/day_2.rs b/2020/src/bin/day_2.rs new file mode 100644 index 0000000..6c26647 --- /dev/null +++ b/2020/src/bin/day_2.rs @@ -0,0 +1,104 @@ +use bevy::prelude::*; +use std::fs::File; +use std::io::{BufRead, BufReader}; + +fn main() { + App::build() + .add_resource(WindowDescriptor { + title: "Advent of Code".to_string(), + width: 1920, + height: 1080, + ..Default::default() + }) + .add_resource(ClearColor(Color::rgb(0., 0., 0.))) + .add_startup_system(setup_camera.system()) + .add_startup_system(read_input_file.system()) + .add_stage("mark") + .add_system_to_stage("mark", validate_sled_passwords.system()) + .add_system_to_stage("mark", validate_toboggan_passwords.system()) + .add_stage("report") + .add_system_to_stage("report", count_valid_sled_passwords.system()) + .add_system_to_stage("report", count_valid_toboggan_passwords.system()) + //.add_plugins(DefaultPlugins) + .run(); +} + +fn setup_camera(mut commands: Commands) { + commands.spawn(Camera2dComponents::default()); +} + +struct PasswordRule { + num_1: usize, + num_2: usize, + c: char, +} +struct Password(String); +struct SledPasswordValidation(bool); +struct TobogganPasswordValidation(bool); + +fn read_input_file(mut commands: Commands) { + let f = File::open("./inputs/day_2.txt").expect("Failed to read file"); // TODO: Use the asset loading system to load this rather? + for line in BufReader::new(f).lines() { + let line = line.expect("Error reading file"); + let line = line.trim(); + let mut parts = line.split_whitespace(); + let range = parts.next().expect("File was missing a range"); + let chars = parts.next().expect("File was missing chars"); + let password = parts.next().expect("File was missing a password"); + + let mut range_parts = range.split('-'); + + let rule = PasswordRule { + num_1: range_parts + .next() + .expect("Range did not have a minimum") + .parse() + .expect("Minimum was not a number"), + num_2: range_parts + .next() + .expect("Range did not have a maximum") + .parse() + .expect("Maximum was not a number"), + c: chars.chars().next().expect("File was missing chars"), + }; + let password = Password(password.to_owned()); + + commands.spawn((rule, password)); + } +} + +fn validate_sled_passwords( + mut commands: Commands, + passwords: Query<Without<SledPasswordValidation, (Entity, &PasswordRule, &Password)>>, +) { + for (entity, rule, password) in passwords.iter() { + let actual = password.0.chars().filter(|c| c == &rule.c).count(); + let valid = actual >= rule.num_1 && actual <= rule.num_2; + commands.insert_one(entity, SledPasswordValidation(valid)); + } +} + +fn validate_toboggan_passwords( + mut commands: Commands, + passwords: Query<Without<TobogganPasswordValidation, (Entity, &PasswordRule, &Password)>>, +) { + for (entity, rule, password) in passwords.iter() { + let actual_1 = password.0.chars().nth(rule.num_1 - 1); + let actual_2 = password.0.chars().nth(rule.num_2 - 1); + let actual_1_match = actual_1.map_or(false, |c| c == rule.c); + let actual_2_match = actual_2.map_or(false, |c| c == rule.c); + + let valid = actual_1_match != actual_2_match; + commands.insert_one(entity, TobogganPasswordValidation(valid)); + } +} + +fn count_valid_sled_passwords(validation: Query<&SledPasswordValidation>) { + let count = validation.iter().filter(|v| v.0).count(); + println!("Valid Sled Passwords: {}", count); +} + +fn count_valid_toboggan_passwords(validation: Query<&TobogganPasswordValidation>) { + let count = validation.iter().filter(|v| v.0).count(); + println!("Valid Toboggan Passwords: {}", count); +} diff --git a/2020/src/bin/day_3.rs b/2020/src/bin/day_3.rs new file mode 100644 index 0000000..5e6f0bd --- /dev/null +++ b/2020/src/bin/day_3.rs @@ -0,0 +1,205 @@ +use bevy::app::AppExit; +use bevy::prelude::*; +use bevy::render::camera::Camera; +use std::fs::File; +use std::io::{BufRead, BufReader}; + +fn main() { + App::build() + .add_resource(WindowDescriptor { + title: "Advent of Code".to_string(), + width: 1920, + height: 1080, + ..Default::default() + }) + .add_resource(ClearColor(Color::rgb(0., 0., 0.))) + .add_startup_system(setup_camera.system()) + .add_startup_stage("game_entities") + .add_startup_system_to_stage("game_entities", read_input_file.system()) + .add_system(move_tobogganist.system()) + .add_system(collide_with_trees.system()) + .add_system(clear_finished_tobogganists.system()) + .add_system(end_of_slope.system()) + .add_system(translate_positions.system()) + .add_system(tobogganist_cam.system()) + .add_plugins(DefaultPlugins) + .run(); +} + +fn setup_camera(mut commands: Commands, mut materials: ResMut<Assets<ColorMaterial>>) { + commands.spawn(Camera2dComponents::default()); + + commands.insert_resource(Materials { + tobogganist_material: materials.add(Color::rgb(0., 0., 255.).into()), + tree_material: materials.add(Color::rgb(0., 255., 0.).into()), + }); +} + +struct Materials { + tobogganist_material: Handle<ColorMaterial>, + tree_material: Handle<ColorMaterial>, +} + +struct Tobogganist; + +struct Tree; +#[derive(PartialEq, Eq)] +struct Position { + x: usize, + y: usize, +} +struct Velocity { + x: usize, + y: usize, +} +struct MapSize { + width: usize, + height: usize, +} +struct TreeHitCount(usize); +struct Score(usize); + +fn read_input_file(mut commands: Commands, materials: Res<Materials>) { + commands + .spawn(SpriteComponents { + sprite: Sprite::new(Vec2::new(10., 10.)), + material: materials.tobogganist_material.clone(), + ..Default::default() + }) + .with(Tobogganist) + .with(Position { x: 0, y: 0 }) + .with(Velocity { x: 1, y: 1 }) + .with(TreeHitCount(0)); + + commands + .spawn(SpriteComponents { + sprite: Sprite::new(Vec2::new(10., 10.)), + material: materials.tobogganist_material.clone(), + ..Default::default() + }) + .with(Tobogganist) + .with(Position { x: 0, y: 0 }) + .with(Velocity { x: 3, y: 1 }) + .with(TreeHitCount(0)); + + commands + .spawn(SpriteComponents { + sprite: Sprite::new(Vec2::new(10., 10.)), + material: materials.tobogganist_material.clone(), + ..Default::default() + }) + .with(Tobogganist) + .with(Position { x: 0, y: 0 }) + .with(Velocity { x: 5, y: 1 }) + .with(TreeHitCount(0)); + + commands + .spawn(SpriteComponents { + sprite: Sprite::new(Vec2::new(10., 10.)), + material: materials.tobogganist_material.clone(), + ..Default::default() + }) + .with(Tobogganist) + .with(Position { x: 0, y: 0 }) + .with(Velocity { x: 7, y: 1 }) + .with(TreeHitCount(0)); + + commands + .spawn(SpriteComponents { + sprite: Sprite::new(Vec2::new(10., 10.)), + material: materials.tobogganist_material.clone(), + ..Default::default() + }) + .with(Tobogganist) + .with(Position { x: 0, y: 0 }) + .with(Velocity { x: 1, y: 2 }) + .with(TreeHitCount(0)); + + let f = File::open("./inputs/day_3.txt").expect("Failed to read file"); // TODO: Use the asset loading system to load this rather? + let mut width = 0; + let mut height = 0; + for (y, line) in BufReader::new(f).lines().enumerate() { + let line = line.expect("Error reading file"); + let line = line.trim(); + width = width.max(line.len()); + for (x, c) in line.chars().enumerate() { + if c == '#' { + commands + .spawn(SpriteComponents { + sprite: Sprite::new(Vec2::new(10., 10.)), + material: materials.tree_material.clone(), + ..Default::default() + }) + .with(Tree) + .with(Position { x, y }) + .with(TreeHitCount(0)); + } + } + height = y + 1; + } + commands.insert_resource(MapSize { width, height }); + commands.insert_resource(Score(1)); +} + +fn translate_positions(mut transform: Mut<Transform>, position: &Position) { + transform.translation = Vec3::new(position.x as f32 * 10., position.y as f32 * -10., 0.); +} + +fn tobogganist_cam( + tobogganist: Query<With<Tobogganist, &Transform>>, + mut camera: Query<With<Camera, &mut Transform>>, +) { + for mut camera_transform in camera.iter_mut() { + if let Some(tobogganist_transform) = tobogganist.iter().next() { + camera_transform.translation = Vec3::new(0., tobogganist_transform.translation.y(), 0.); + } + } +} + +fn move_tobogganist(map_size: Res<MapSize>, mut position: Mut<Position>, velocity: &Velocity) { + position.x += velocity.x; + position.x %= map_size.width; + position.y += velocity.y; +} + +fn collide_with_trees( + mut tobogganists: Query<With<Tobogganist, (&Position, &mut TreeHitCount)>>, + trees: Query<With<Tree, &Position>>, +) { + for (tobogganist_position, mut tree_hit_count) in tobogganists.iter_mut() { + for tree_position in trees.iter() { + if *tree_position == *tobogganist_position { + tree_hit_count.0 += 1; + } + } + } +} + +fn clear_finished_tobogganists( + mut commands: Commands, + map_size: Res<MapSize>, + mut score: ResMut<Score>, + tobogganists: Query<With<Tobogganist, (Entity, &Position, &Velocity, &TreeHitCount)>>, +) { + for (entity, position, velocity, tree_hit_count) in tobogganists.iter() { + if position.y >= map_size.height { + println!( + "A tobogganist finished heading at incline {} x {}, after hitting {} trees", + velocity.x, velocity.y, tree_hit_count.0 + ); + score.0 *= tree_hit_count.0; + commands.despawn(entity); + } + } +} + +fn end_of_slope( + score: Res<Score>, + mut exit_events: ResMut<Events<AppExit>>, + tobogganists: Query<&Tobogganist>, +) { + if tobogganists.iter().count() == 0 { + println!("All tobogganists finished. Total score: {}", score.0); + exit_events.send(AppExit); + } +} diff --git a/2020/src/bin/day_4.rs b/2020/src/bin/day_4.rs new file mode 100644 index 0000000..50b8eb5 --- /dev/null +++ b/2020/src/bin/day_4.rs @@ -0,0 +1,222 @@ +use bevy::prelude::*; +use std::fs::File; +use std::io::{BufRead, BufReader}; +use std::str::FromStr; +use thiserror::Error; + +fn main() { + App::build() + .add_resource(WindowDescriptor { + title: "Advent of Code".to_string(), + width: 1920, + height: 1080, + ..Default::default() + }) + .add_resource(ClearColor(Color::rgb(0., 0., 0.))) + .add_startup_system(setup_camera.system()) + .add_startup_system(read_input_file.system()) + .add_system(count_valid.system()) + //.add_plugins(DefaultPlugins) + .run(); +} + +fn setup_camera(mut commands: Commands) { + commands.spawn(Camera2dComponents::default()); +} + +#[derive(Error, Debug)] +enum ValidationError { + #[error("{0}")] + FromIntError(#[from] std::num::ParseIntError), + #[error("value is out of range")] + OutOfRange, + #[error("value has an invalid unit")] + InvalidUnit, + #[error("value has an invalid characters")] + InvalidChars, +} + +struct BirthYear(u32); +impl FromStr for BirthYear { + type Err = ValidationError; + fn from_str(s: &str) -> Result<Self, Self::Err> { + let num: u32 = s.parse()?; + if num >= 1920 && num <= 2002 { + Ok(Self(num)) + } else { + Err(ValidationError::OutOfRange) + } + } +} + +struct IssueYear(u32); +impl FromStr for IssueYear { + type Err = ValidationError; + fn from_str(s: &str) -> Result<Self, Self::Err> { + let num: u32 = s.parse()?; + if num >= 2010 && num <= 2020 { + Ok(Self(num)) + } else { + Err(ValidationError::OutOfRange) + } + } +} + +struct ExpirationYear(u32); +impl FromStr for ExpirationYear { + type Err = ValidationError; + fn from_str(s: &str) -> Result<Self, Self::Err> { + let num: u32 = s.parse()?; + if num >= 2020 && num <= 2030 { + Ok(Self(num)) + } else { + Err(ValidationError::OutOfRange) + } + } +} + +struct Height(u32); +impl FromStr for Height { + type Err = ValidationError; + fn from_str(s: &str) -> Result<Self, Self::Err> { + let inches = s.ends_with("in"); + let centimeters = s.ends_with("cm"); + if !inches && !centimeters { + return Err(ValidationError::InvalidUnit); + } + + let num: u32 = s[0..s.len() - 2].parse()?; + let num_cm = if inches { + ((num as f32) * 2.54).round() as u32 + } else { + num + }; + + if num_cm >= 150 && num_cm <= 193 { + Ok(Self(num_cm)) + } else { + Err(ValidationError::OutOfRange) + } + } +} + +struct HairColor(String); +impl FromStr for HairColor { + type Err = ValidationError; + fn from_str(s: &str) -> Result<Self, Self::Err> { + if !s.starts_with("#") { + return Err(ValidationError::InvalidChars); + } + if s.len() != 7 { + return Err(ValidationError::InvalidChars); + } + if !s + .chars() + .skip(1) + .all(|c| (c >= 'a' && c <= 'f') || c >= '0' && c <= '9') + { + return Err(ValidationError::InvalidChars); + } + + Ok(Self(s.to_string())) + } +} + +struct EyeColor(String); +impl FromStr for EyeColor { + type Err = ValidationError; + fn from_str(s: &str) -> Result<Self, Self::Err> { + let valid_vals = ["amb", "blu", "brn", "gry", "grn", "hzl", "oth"]; + if valid_vals.contains(&s) { + Ok(Self(s.to_string())) + } else { + Err(ValidationError::InvalidChars) + } + } +} + +struct PassportId(String); +impl FromStr for PassportId { + type Err = ValidationError; + fn from_str(s: &str) -> Result<Self, Self::Err> { + if s.len() != 9 { + return Err(ValidationError::InvalidChars); + } + if !s.chars().all(|c| c.is_ascii_digit()) { + return Err(ValidationError::InvalidChars); + } + + Ok(Self(s.to_string())) + } +} + +struct CountryId(String); +impl FromStr for CountryId { + type Err = ValidationError; + fn from_str(s: &str) -> Result<Self, Self::Err> { + Ok(Self(s.to_string())) + } +} + +fn read_input_file(mut commands: Commands) { + let f = File::open("./inputs/day_4.txt").expect("Failed to read file"); + + commands.spawn(()); + for line in BufReader::new(f).lines() { + let line = line.unwrap(); + let line = line.trim(); + if line.is_empty() { + commands.spawn(()); + } else { + for section in line.split_whitespace() { + let mut section_parts = section.split(':'); + let name = section_parts.next().unwrap(); + let value = section_parts.next().unwrap(); + match name { + "byr" => { + BirthYear::from_str(value).ok().map(|c| commands.with(c)); + } + "iyr" => { + IssueYear::from_str(value).ok().map(|c| commands.with(c)); + } + "eyr" => { + ExpirationYear::from_str(value) + .ok() + .map(|c| commands.with(c)); + } + "hgt" => { + Height::from_str(value).ok().map(|c| commands.with(c)); + } + "hcl" => { + HairColor::from_str(value).ok().map(|c| commands.with(c)); + } + "ecl" => { + EyeColor::from_str(value).ok().map(|c| commands.with(c)); + } + "pid" => { + PassportId::from_str(value).ok().map(|c| commands.with(c)); + } + "cid" => { + CountryId::from_str(value).ok().map(|c| commands.with(c)); + } + _ => {} + } + } + } + } +} + +fn count_valid( + passports: Query<( + &BirthYear, + &IssueYear, + &ExpirationYear, + &Height, + &HairColor, + &EyeColor, + &PassportId, + )>, +) { + let count = passports.iter().count(); + println!("There are {} valid passports", count); +} diff --git a/2020/src/bin/day_5.rs b/2020/src/bin/day_5.rs new file mode 100644 index 0000000..15c8a70 --- /dev/null +++ b/2020/src/bin/day_5.rs @@ -0,0 +1,157 @@ +use bevy::prelude::*; +use std::fs::File; +use std::io::{BufRead, BufReader}; + +fn main() { + App::build() + .add_resource(WindowDescriptor { + title: "Advent of Code".to_string(), + width: 1920, + height: 1080, + ..Default::default() + }) + .add_resource(ClearColor(Color::rgb(0., 0., 0.))) + .add_startup_system(setup_camera.system()) + .add_startup_system(read_input_file.system()) + .add_startup_stage("search") + .add_startup_system_to_stage("search", find_unoccupied_seat.system()) + .add_startup_stage("metadata") + .add_startup_system_to_stage("metadata", add_seat_ids.system()) + .add_startup_system_to_stage("metadata", add_seat_sprites.system()) + .add_startup_stage("report") + .add_startup_system_to_stage("report", print_highest_seat_id.system()) + .add_startup_system_to_stage("report", print_my_seat_id.system()) + .add_plugins(DefaultPlugins) + .run(); +} + +fn setup_camera(mut commands: Commands, mut materials: ResMut<Assets<ColorMaterial>>) { + commands.spawn(Camera2dComponents { + transform: Transform::from_translation(Vec3::new(80. / 2., 1280. / 2., 0.)), + ..Default::default() + }); + + commands.insert_resource(Materials { + my_seat_material: materials.add(Color::rgb(0., 0., 255.).into()), + seat_material: materials.add(Color::rgb(0., 255., 0.).into()), + }); +} + +struct Materials { + my_seat_material: Handle<ColorMaterial>, + seat_material: Handle<ColorMaterial>, +} + +#[derive(PartialEq, Eq)] +struct Position { + x: u32, + y: u32, +} +struct SeatId(u32); +struct MySeat; + +fn read_input_file(mut commands: Commands) { + let f = File::open("./inputs/day_5.txt").unwrap(); + for line in BufReader::new(f).lines() { + let mut max_y = 128; + let mut min_y = 0; + let mut max_x = 8; + let mut min_x = 0; + for c in line.unwrap().trim().chars() { + let mid_x = (min_x + max_x) / 2; + let mid_y = (min_y + max_y) / 2; + match c { + 'F' => { + max_y = mid_y; + } + 'B' => { + min_y = mid_y; + } + 'L' => { + max_x = mid_x; + } + 'R' => { + min_x = mid_x; + } + _ => panic!("Unexpected character {}", c), + } + } + + assert_eq!(max_y - min_y, 1); + assert_eq!(max_x - min_x, 1); + + commands.spawn((Position { x: min_x, y: min_y },)); + } +} + +fn find_unoccupied_seat(mut commands: Commands, seats: Query<&Position>) { + for y in 1..127 { + for x in 0..8 { + let potential_position = Position { x, y }; + let required_left = if x == 0 { + Position { x: 7, y: y - 1 } + } else { + Position { x: x - 1, y } + }; + let required_right = if x == 7 { + Position { x: 0, y: y + 1 } + } else { + Position { x: x + 1, y } + }; + + let required_surrounds = [required_left, required_right]; + if !seats.iter().any(|p| p == &potential_position) { + if required_surrounds + .iter() + .all(|required| seats.iter().any(|p| p == required)) + { + commands.spawn((MySeat, potential_position)); + } + } + } + } +} + +fn add_seat_ids(mut commands: Commands, seats: Query<(Entity, &Position)>) { + for (entity, position) in seats.iter() { + let seat_id = position.y * 8 + position.x; + commands.insert_one(entity, SeatId(seat_id)); + } +} + +fn add_seat_sprites( + mut commands: Commands, + materials: Res<Materials>, + seats: Query<(Entity, &Position, Option<&MySeat>)>, +) { + for (entity, position, my_seat) in seats.iter() { + commands.insert( + entity, + SpriteComponents { + sprite: Sprite::new(Vec2::new(10., 10.)), + material: if my_seat.is_some() { + materials.my_seat_material.clone() + } else { + materials.seat_material.clone() + }, + transform: Transform::from_translation(Vec3::new( + position.x as f32 * 10., + position.y as f32 * 10., + 0., + )), + ..Default::default() + }, + ); + } +} + +fn print_highest_seat_id(seats: Query<&SeatId>) { + let max = seats.iter().map(|s| s.0).max(); + println!("Max seat id: {:?}", max); +} + +fn print_my_seat_id(seats: Query<With<MySeat, &SeatId>>) { + for seat_id in seats.iter() { + println!("My seat id: {}", seat_id.0); + } +} diff --git a/2020/src/bin/day_6.rs b/2020/src/bin/day_6.rs new file mode 100644 index 0000000..68efbce --- /dev/null +++ b/2020/src/bin/day_6.rs @@ -0,0 +1,102 @@ +use bevy::prelude::*; +use std::collections::{BTreeMap, BTreeSet}; +use std::fs::File; +use std::io::{BufRead, BufReader}; + +fn main() { + App::build() + .add_resource(WindowDescriptor { + title: "Advent of Code".to_string(), + width: 1920, + height: 1080, + ..Default::default() + }) + .add_resource(ClearColor(Color::rgb(0., 0., 0.))) + .add_startup_system(setup_camera.system()) + .add_startup_system(read_input_file.system()) + .add_stage("calculate") + .add_system_to_stage("calculate", calculate_anyone_groups.system()) + .add_system_to_stage("calculate", calculate_everyone_groups.system()) + .add_stage("report") + .add_system_to_stage("report", count_anyone_group_sizes.system()) + .add_system_to_stage("report", count_everyone_group_sizes.system()) + //.add_plugins(DefaultPlugins) + .run(); +} + +fn setup_camera(mut commands: Commands) { + commands.spawn(Camera2dComponents::default()); +} + +struct Individual; +struct Anyone; +struct Everyone; + +struct Group(usize); +struct Answers(BTreeSet<char>); + +fn read_input_file(mut commands: Commands) { + let f = File::open("./inputs/day_6.txt").unwrap(); + + let mut current_group = 0; + for line in BufReader::new(f).lines() { + let line = line.unwrap(); + let line = line.trim(); + if line.is_empty() { + current_group += 1; + } else { + let answers = line.chars().collect(); + commands.spawn((Individual, Group(current_group), Answers(answers))); + } + } +} + +fn calculate_anyone_groups( + mut commands: Commands, + individuals: Query<With<Individual, (&Group, &Answers)>>, +) { + let mut anyone_groups = BTreeMap::new(); + for (group_id, answer) in individuals.iter() { + let updated = anyone_groups + .entry(group_id.0) + .or_insert(BTreeSet::new()) + .union(&answer.0) + .cloned() + .collect(); + anyone_groups.insert(group_id.0, updated); + } + + for (group_id, anyone) in anyone_groups.into_iter() { + commands.spawn((Anyone, Group(group_id), Answers(anyone))); + } +} + +fn calculate_everyone_groups( + mut commands: Commands, + individuals: Query<With<Individual, (&Group, &Answers)>>, +) { + let mut anyone_groups = BTreeMap::new(); + for (group_id, answer) in individuals.iter() { + let updated = anyone_groups + .entry(group_id.0) + .or_insert(answer.0.clone()) + .intersection(&answer.0) + .cloned() + .collect(); + anyone_groups.insert(group_id.0, updated); + } + + for (group_id, anyone) in anyone_groups.into_iter() { + commands.spawn((Everyone, Group(group_id), Answers(anyone))); + } +} + +fn count_anyone_group_sizes(groups: Query<With<Anyone, &Answers>>) { + let sum: usize = groups.iter().map(|g| g.0.len()).sum(); + println!("Anyone: {}", sum); +} + +fn count_everyone_group_sizes(groups: Query<With<Everyone, &Answers>>) { + let sum: usize = groups.iter().map(|g| g.0.len()).sum(); + println!("Everyone: {}", sum); +} diff --git a/2020/src/bin/day_7.rs b/2020/src/bin/day_7.rs new file mode 100644 index 0000000..45cb9ee --- /dev/null +++ b/2020/src/bin/day_7.rs @@ -0,0 +1,137 @@ +use bevy::prelude::*; +use std::collections::{BTreeMap, BTreeSet}; +use std::fs::File; +use std::io::{BufRead, BufReader}; + +fn main() { + App::build() + .add_resource(WindowDescriptor { + title: "Advent of Code".to_string(), + width: 1920, + height: 1080, + ..Default::default() + }) + .add_resource(ClearColor(Color::rgb(0., 0., 0.))) + .add_startup_system(setup_camera.system()) + .add_startup_system(read_input_file.system()) + .add_system(trim_empty_bags.system()) + .add_system(add_known_sizes.system()) + .add_system(report_gold_bag_known_size.system()) + //.add_system(debug_print_bags.system()) + .add_plugins(DefaultPlugins) + .run(); +} + +fn setup_camera(mut commands: Commands) { + commands.spawn(Camera2dComponents::default()); +} + +const TARGET_COLOUR: &str = "shiny gold"; + +struct Bag { + colour: String, + required: BTreeMap<String, usize>, +} +struct CantContainShinyGold; +#[derive(Clone)] +struct KnownSize(usize); + +fn read_input_file(mut commands: Commands) { + let f = File::open("./inputs/day_7.txt").unwrap(); + + for line in BufReader::new(f).lines() { + let line = line.unwrap(); + let line = line.trim(); + + let (src_colour, contents) = split_2(line, "bags contain"); + let contents_parts = contents + .trim_end_matches('.') + .split(',') + .filter(|part| part != &"no other bags") + .map(|part| { + let (quantity, colour) = split_2( + part.trim().trim_end_matches("bags").trim_end_matches("bag"), + " ", + ); + (colour, quantity.parse().unwrap()) + }) + .collect(); + commands.spawn((Bag { + colour: src_colour, + required: contents_parts, + },)); + } +} + +fn split_2(line: &str, split: &str) -> (String, String) { + let parts = line.splitn(2, split).collect::<Vec<_>>(); + assert_eq!(parts.len(), 2); + (parts[0].trim().to_string(), parts[1].trim().to_string()) +} + +fn debug_print_bags(bags: Query<&Bag>) { + for bag in bags.iter() { + println!("{} requires {:?}", bag.colour, bag.required); + } +} + +fn trim_empty_bags( + mut commands: Commands, + bags: Query<Without<CantContainShinyGold, (Entity, &Bag)>>, +) { + let mut colours_cleared = BTreeSet::new(); + for (entity, bag) in bags.iter() { + let required_not_relevant = bag.required.keys().all(|required| { + !bags + .iter() + .any(|can_contain_shiny_gold| &can_contain_shiny_gold.1.colour == required) + }); + if required_not_relevant && bag.colour != TARGET_COLOUR { + colours_cleared.insert(bag.colour.clone()); + commands.insert_one(entity, CantContainShinyGold); + } + } + + if colours_cleared.is_empty() { + println!( + "{} bags can hold the shiny gold one", + bags.iter().count() - 1 + ); + } +} + +fn add_known_sizes(mut commands: Commands, bags: Query<(Entity, &Bag, Option<&KnownSize>)>) { + for (entity, bag, size) in bags.iter() { + if size.is_some() { + continue; + } + + let mut new_size = Some(0); + for (required_colour, required_quantity) in bag.required.iter() { + if new_size.is_none() { + break; + } + + let inner_bag_size = bags + .iter() + .find(|(_, bag, _)| &bag.colour == required_colour) + .and_then(|(_, _, size)| size.clone()); + new_size = new_size + .zip(inner_bag_size) + .map(|(a, b)| a + required_quantity * b.0) + } + + if let Some(new_size) = new_size { + commands.insert_one(entity, KnownSize(new_size + 1)); + } + } +} + +fn report_gold_bag_known_size(bags: Query<(&Bag, &KnownSize)>) { + println!("{} have a known size", bags.iter().count()); + for (bag, size) in bags.iter() { + if bag.colour == TARGET_COLOUR { + println!("The shiny gold bag must contain {} other bags!", size.0 - 1) + } + } +} diff --git a/2020/src/bin/day_8.rs b/2020/src/bin/day_8.rs new file mode 100644 index 0000000..2c0c227 --- /dev/null +++ b/2020/src/bin/day_8.rs @@ -0,0 +1,154 @@ +use bevy::{app::AppExit, prelude::*}; +use std::convert::TryFrom; +use std::io::{BufRead, BufReader}; +use std::{collections::BTreeSet, fs::File}; + +fn main() { + App::build() + .add_resource(WindowDescriptor { + title: "Advent of Code".to_string(), + width: 1920, + height: 1080, + ..Default::default() + }) + .add_resource(ClearColor(Color::rgb(0., 0., 0.))) + .add_startup_system(setup_camera.system()) + .add_startup_system(read_input_file.system()) + .add_stage("check_line") + .add_system_to_stage("check_line", track_program_line_execution.system()) + .add_system_to_stage("check_line", track_program_termination.system()) + .add_stage("exec") + .add_system_to_stage("exec", tick_computer.system()) + .add_system_to_stage("exec", exit.system()) + .add_plugins(DefaultPlugins) + .run(); +} + +fn setup_camera(mut commands: Commands) { + commands.spawn(Camera2dComponents::default()); +} + +struct Program { + ops: Vec<Op>, +} +#[derive(Clone)] +enum Op { + Acc(i32), + Jmp(i32), + Nop(i32), +} +struct UnalteredProgram; +#[derive(Default)] +struct Computer { + program_counter: i32, + accumulator: i32, + termiated: bool, +} +#[derive(Default)] +struct LineTracker(BTreeSet<i32>); + +impl Computer { + fn exec(&mut self, program: &Program) { + if self.termiated { + return; + } + + let x = usize::try_from(self.program_counter).ok(); + match x.and_then(|x| program.ops.get(x)) { + None => {} + Some(Op::Acc(val)) => { + self.accumulator += val; + self.program_counter += 1; + } + Some(Op::Jmp(val)) => { + self.program_counter += val; + } + Some(Op::Nop(_)) => { + self.program_counter += 1; + } + } + if self.program_counter >= program.ops.len() as i32 { + self.termiated = true; + } + } +} + +fn read_input_file(mut commands: Commands) { + let f = File::open("./inputs/day_8.txt").unwrap(); + + let ops: Vec<Op> = BufReader::new(f) + .lines() + .map(|line| { + let line = line.unwrap(); + let line = line.trim(); + + let mut line_parts = line.split_whitespace(); + let opcode = line_parts.next().unwrap(); + let val: i32 = line_parts.next().unwrap().parse().unwrap(); + let op = match opcode { + "acc" => Op::Acc(val), + "jmp" => Op::Jmp(val), + "nop" => Op::Nop(val), + _ => panic!("Invalid opcode"), + }; + op + }) + .collect(); + commands.spawn(( + UnalteredProgram, + Program { ops: ops.clone() }, + Computer::default(), + LineTracker::default(), + )); + + for i in 0..ops.len() { + let mut ops = ops.clone(); + ops[i] = match ops[i] { + Op::Nop(v) => Op::Jmp(v), + Op::Jmp(v) => Op::Nop(v), + Op::Acc(v) => Op::Acc(v), + }; + commands.spawn(( + Program { ops: ops.clone() }, + Computer::default(), + LineTracker::default(), + )); + } +} + +fn track_program_line_execution( + mut commands: Commands, + entity: Entity, + mut line_tracker: Mut<LineTracker>, + computer: &Computer, + unaltered: Option<&UnalteredProgram>, +) { + if line_tracker.0.contains(&computer.program_counter) { + if unaltered.is_some() { + println!( + "About to execute a line for the second time! Line {}. Accumulator: {}", + computer.program_counter, computer.accumulator + ); + } + commands.despawn(entity); + } else { + line_tracker.0.insert(computer.program_counter); + } +} + +fn track_program_termination(mut commands: Commands, entity: Entity, computer: &Computer) { + if computer.termiated { + println!("Program terminated! Accumulator: {}", computer.accumulator); + commands.despawn(entity); + } +} + +fn tick_computer(mut computer: Mut<Computer>, program: &Program) { + computer.exec(program); +} + +fn exit(mut exit_events: ResMut<Events<AppExit>>, computers: Query<&Computer>) { + if computers.iter().len() == 0 { + exit_events.send(AppExit); + } +} diff --git a/2020/src/bin/day_9.rs b/2020/src/bin/day_9.rs new file mode 100644 index 0000000..b5a02e6 --- /dev/null +++ b/2020/src/bin/day_9.rs @@ -0,0 +1,120 @@ +use bevy::{app::AppExit, prelude::*}; +use std::fs::File; +use std::io::{BufRead, BufReader}; + +fn main() { + App::build() + .add_resource(WindowDescriptor { + title: "Advent of Code".to_string(), + width: 1920, + height: 1080, + ..Default::default() + }) + .add_resource(ClearColor(Color::rgb(0., 0., 0.))) + .add_startup_system(setup_camera.system()) + .add_startup_system(read_input_file.system()) + .add_stage("add") + .add_system_to_stage("add", check_next_num.system()) + .add_stage("remove") + .add_system_to_stage("remove", remove_oldest_line.system()) + .add_stage("find_range") + .add_system_to_stage("find_range", find_contiguous_range.system()) + .add_plugins(DefaultPlugins) + .run(); +} + +fn setup_camera(mut commands: Commands) { + commands.spawn(Camera2dComponents::default()); +} + +#[derive(Clone, PartialEq, Eq, PartialOrd, Ord)] +struct LineNum(usize); +#[derive(Clone)] +struct Num(i64); +struct Active; +struct Invalid; +struct Done; + +fn read_input_file(mut commands: Commands) { + let f = File::open("./inputs/day_9.txt").unwrap(); + + for (line_num, line) in BufReader::new(f).lines().enumerate() { + let line = line.unwrap(); + let line = line.trim(); + let num = line.parse().unwrap(); + commands.spawn((LineNum(line_num), Num(num))); + if line_num < 25 { + commands.with(Active); + } + } +} + +fn check_next_num( + mut commands: Commands, + active: Query<With<Active, &Num>>, + next: Query<Without<Done, Without<Active, (Entity, &LineNum, &Num)>>>, +) { + if let Some((min_entity, line, num)) = next.iter().min_by_key(|(_, line, _)| line.0) { + let mut is_sum = false; + for active_1 in active.iter() { + for active_2 in active.iter() { + is_sum = is_sum || (num.0 == active_1.0 + active_2.0) + } + } + commands.insert_one(min_entity, Active); + + if !is_sum { + commands.insert_one(min_entity, Invalid); + println!( + "{} on line {} was not a sum of the previous lot!", + num.0, line.0 + ); + } + } +} + +fn remove_oldest_line( + mut commands: Commands, + line_nums: Query<Without<Done, With<Active, (Entity, &LineNum)>>>, +) { + if let Some((min_entity, _)) = line_nums.iter().min_by_key(|(_, line)| line.0) { + commands.remove_one::<Active>(min_entity); + commands.insert_one(min_entity, Done); + } else { + println!("All numbers cleared"); + } +} + +fn find_contiguous_range( + mut exit_events: ResMut<Events<AppExit>>, + line_nums: Query<(&LineNum, &Num)>, + invalid: Query<With<Invalid, &Num>>, +) { + for invalid in invalid.iter() { + let mut nums: Vec<(LineNum, Num)> = line_nums + .iter() + .map(|(line, num)| (line.clone(), num.clone())) + .collect(); + + nums.sort_by_key(|(line, _num)| line.clone()); + let nums: Vec<i64> = nums.into_iter().map(|(_line, num)| num.0).collect(); + + for min in 0..nums.len() { + for max in min + 2..nums.len() + 1 { + let sum: i64 = nums[min..max].iter().sum(); + if sum == invalid.0 { + let min_in_range = nums[min..max].iter().min().unwrap(); + let max_in_range = nums[min..max].iter().max().unwrap(); + println!( + "Range found! {} + {} = {}", + min_in_range, + max_in_range, + min_in_range + max_in_range + ); + } + } + } + + exit_events.send(AppExit); + } +} diff --git a/2020/src/lib.rs b/2020/src/lib.rs new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/2020/src/lib.rs @@ -0,0 +1 @@ + diff --git a/2020/src/main.rs b/2020/src/main.rs new file mode 100644 index 0000000..e7a11a9 --- /dev/null +++ b/2020/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, world!"); +} |