Rust/2019/02: add solution

This commit is contained in:
Felix Bargfeldt 2024-12-01 20:07:53 +01:00
parent 80228ed797
commit 037820b3fd
Signed by: Defelo
GPG key ID: 2A05272471204DD3
6 changed files with 208 additions and 7 deletions

View file

@ -55,11 +55,11 @@
|[**21**](https://adventofcode.com/2020/day/21) [<img height=12 src=".assets/py.svg">](Python/2020/21.py "Python solution for 2020/21")|[**22**](https://adventofcode.com/2020/day/22) [<img height=12 src=".assets/py.svg">](Python/2020/22.py "Python solution for 2020/22")|[**23**](https://adventofcode.com/2020/day/23) [<img height=12 src=".assets/py.svg">](Python/2020/23.py "Python solution for 2020/23")|[**24**](https://adventofcode.com/2020/day/24) [<img height=12 src=".assets/py.svg">](Python/2020/24.py "Python solution for 2020/24")|[**25**](https://adventofcode.com/2020/day/25) [<img height=12 src=".assets/py.svg">](Python/2020/25.py "Python solution for 2020/25")|26|27|
|28|29|30|31||||
## [2019](https://adventofcode.com/2019) ([<img height=18 src=".assets/py.svg"> Python](Python/2019): 25/25 | [<img height=18 src=".assets/ua.png"> Uiua](Uiua/2019): 6/25)
## [2019](https://adventofcode.com/2019) ([<img height=18 src=".assets/py.svg"> Python](Python/2019): 25/25 | [<img height=18 src=".assets/ua.png"> Uiua](Uiua/2019): 6/25 | [<img height=18 src=".assets/rs.svg"> Rust](Rust/2019): 1/25)
|Mo|Tu|We|Th|Fr|Sa|Su|
|-|-|-|-|-|-|-|
|||||||[**1**](https://adventofcode.com/2019/day/1) [<img height=12 src=".assets/py.svg">](Python/2019/01.py "Python solution for 2019/01") [<img height=12 src=".assets/ua.png">](https://uiua.org/pad?src=JnNjCgriipzii5XiiaBAXG4uCgrin5woLystMuKMisO3MykKLyviiaEoLytb4peM4peM4o2iKC4tMuKMisO3M3ziiaUwKV0pCg== "Uiua solution for 2019/01")|
|[**2**](https://adventofcode.com/2019/day/2) [<img height=12 src=".assets/py.svg">](Python/2019/02.py "Python solution for 2019/02") [<img height=12 src=".assets/ua.png">](https://uiua.org/pad?src=JnNjCgrilIzilIDilbRJbnRjb2RlCiAgUGFyc2Ug4oaQIG1hcOKHoeKKuOKnuyDiipzii5XiiIjiioJALStAMOKHoTEwLgogIE9wIOKGmiDijaQu4omlMC7il78xMDAKICBNb2RlIOKGmiDil78xMOKMisO34oG_4oqZMTArMgogIFJlYWQg4oaaIOKsmjDiqKwoZ2V04oqZ4peMfOKImHxnZXQrKSDiioMoTW9kZeKKmShnZXR84peMKXxnZXQrKzHiipniipnil4x84ouF4ouF4oqZ4oiYKQogIFdyaXRlIOKGmiBpbnNlcnQ64oqZKOKorCjiipnil4x84o2kLjB8Kykg4oqDKE1vZGXiipkoZ2V0fOKXjCl8Z2V0Kysx4oqZ4oqZ4peMfOKLheKLheKKmeKImCkpCiAgQmluT3AhIOKGmiArNOKKg-KLheKLheKKmeKImFdyaXRl4oqZMuKXoSheMOKKgyhSZWFkMXxSZWFkMCkpCiAgT3BBZGQgIOKGmiBCaW5PcCErCiAgT3BNdWwgIOKGmiBCaW5PcCHDlwogIElucHV0ISAg4oaaICsy4oqD4ouF4ouF4oqZ4oiYV3JpdGXiioMo4ouF4ouF4ouF4oiYfDB84oqZ4oqZ4oiYKSDiipniipniipleMAogIE91dHB1dCEg4oaaICsyIOKKmeKKmeKKmV4wIOKKgyjii4XiipniipniiJh84oqZ4ouF4ouF4peMKSDil6EoUmVhZDApCiAgSm1wISAgICAg4oaaIOKorCgrM-KXjHziipnil4wpXjDil6HiioMoUmVhZDB8UmVhZDEpCiAgSm1wVHJ1ZSAg4oaaIEptcCEo4omgMCkKICBKbXBGYWxzZSDihpogSm1wISg9MCkKICBMdCDihpogQmluT3AhPAogIEVxIOKGmiBCaW5PcCEoPSkKICBCYXNlIOKGmiArMuKKmSs64pehKFJlYWQwKQogIFN0ZXDigLwgIOKGmiDiqKwo4oqZ4oqZ4oqZ4oiYfE9wQWRkfE9wTXVsfElucHV0IV4wfE91dHB1dCFeMXxKbXBUcnVlfEptcEZhbHNlfEx0fEVxfEJhc2UpT3Dil6EoZ2V04oqZ4peMKQogIElzRG9uZSDihpog4omNOTlnZXTiipnil4wKICBSdW7igLwg4oaQIOKXjOKXjOKNoihTdGVw4oC8XjBeMXzCrElzRG9uZSkwIDAK4pSU4pSA4pW0CgpJbnRjb2RlflBhcnNlCgpSdW5XaXRoSW5wdXQg4oaQIOKKouKNnOKKmTBJbnRjb2RlflJ1buKAvCgufOKXjCnijZziio_il4wxXzI6CgriioMo4oqXMTk2OTA3MjDiiaFSdW5XaXRoSW5wdXTima3igoLih6ExMDBfMTAwwqR8UnVuV2l0aElucHV0IDEyXzIpCg== "Uiua solution for 2019/02")|[**3**](https://adventofcode.com/2019/day/3) [<img height=12 src=".assets/py.svg">](Python/2019/03.py "Python solution for 2019/03") [<img height=12 src=".assets/ua.png">](https://uiua.org/pad?src=JnNjCgriiKnCsOKWocKw4oqf4oqc4pah4omgQFxuLgriiKkoXCvilr064oqP4oqZW-KIqeKKuMKv4oq44oeM4oehMl3iipfiipkiTFJVRCLiipwo4oqZ4ouVwrDiioIp4omgQCwuKQoK4pehKOKWveKKuOKIiCkK4oqDKC_ihqcrKzLiiKniipfin5w6fC_ihqfiiaEvK-KMtSkK "Uiua solution for 2019/03")|[**4**](https://adventofcode.com/2019/day/4) [<img height=12 src=".assets/py.svg">](Python/2019/04.py "Python solution for 2019/04") [<img height=12 src=".assets/ua.png">](https://uiua.org/pad?src=JnNjCgriipzii5XiiIgrQDDih6ExMC4K4o2cLeKHocKw4oqfKzBfMQoKQ2hlY2shIOKGkCDihqfiioMoL-KGpV4w4oqc4qe7KzHiirjiipt84omN4oeh4oq44qe74o2PKSDCsOKLlQriiKkvK-KJoeKKg0NoZWNrISg9MilDaGVjayEo4omlMikK "Uiua solution for 2019/04")|[**5**](https://adventofcode.com/2019/day/5) [<img height=12 src=".assets/py.svg">](Python/2019/05.py "Python solution for 2019/05") [<img height=12 src=".assets/ua.png">](https://uiua.org/pad?src=JnNjCgrilIzilIDilbRJbnRjb2RlCiAgUGFyc2Ug4oaQIG1hcOKHoeKKuOKnuyDiipzii5XiiIjiioJALStAMOKHoTEwLgogIE9wIOKGmiDijaQu4omlMC7il78xMDAKICBNb2RlIOKGmiDil78xMOKMisO34oG_4oqZMTArMgogIFJlYWQg4oaaIOKsmjDiqKwoZ2V04oqZ4peMfOKImHxnZXQrKSDiioMoTW9kZeKKmShnZXR84peMKXxnZXQrKzHiipniipnil4x84ouF4ouF4oqZ4oiYKQogIFdyaXRlIOKGmiBpbnNlcnQ64oqZKOKorCjiipnil4x84o2kLjB8Kykg4oqDKE1vZGXiipkoZ2V0fOKXjCl8Z2V0Kysx4oqZ4oqZ4peMfOKLheKLheKKmeKImCkpCiAgQmluT3AhIOKGmiArNOKKg-KLheKLheKKmeKImFdyaXRl4oqZMuKXoSheMOKKgyhSZWFkMXxSZWFkMCkpCiAgT3BBZGQgIOKGmiBCaW5PcCErCiAgT3BNdWwgIOKGmiBCaW5PcCHDlwogIElucHV0ISAg4oaaICsy4oqD4ouF4ouF4oqZ4oiYV3JpdGXiioMo4ouF4ouF4ouF4oiYfDB84oqZ4oqZ4oiYKSDiipniipniipleMAogIE91dHB1dCEg4oaaICsyIOKKmeKKmeKKmV4wIOKKgyjii4XiipniipniiJh84oqZ4ouF4ouF4peMKSDil6EoUmVhZDApCiAgSm1wISAgICAg4oaaIOKorCgrM-KXjHziipnil4wpXjDil6HiioMoUmVhZDB8UmVhZDEpCiAgSm1wVHJ1ZSAg4oaaIEptcCEo4omgMCkKICBKbXBGYWxzZSDihpogSm1wISg9MCkKICBMdCDihpogQmluT3AhPAogIEVxIOKGmiBCaW5PcCEoPSkKICBCYXNlIOKGmiArMuKKmSs64pehKFJlYWQwKQogIFN0ZXDigLwgIOKGmiDiqKwo4oqZ4oqZ4oqZ4oiYfE9wQWRkfE9wTXVsfElucHV0IV4wfE91dHB1dCFeMXxKbXBUcnVlfEptcEZhbHNlfEx0fEVxfEJhc2UpT3Dil6EoZ2V04oqZ4peMKQogIElzRG9uZSDihpog4omNOTlnZXTiipnil4wKICBSdW7igLwg4oaQIOKXjOKXjOKNoihTdGVw4oC8XjBeMXzCrElzRG9uZSkwIDAK4pSU4pSA4pW0CgpJbnRjb2RlflBhcnNlCgriiKko4o2kLi_Dlz0wOsKw4oqCIOKLheKKmeKXjEludGNvZGV-UnVu4oC8KCx84oqCKeKKmVtdOik1LDEK "Uiua solution for 2019/05")|[**6**](https://adventofcode.com/2019/day/6) [<img height=12 src=".assets/py.svg">](Python/2019/06.py "Python solution for 2019/06")|[**7**](https://adventofcode.com/2019/day/7) [<img height=12 src=".assets/py.svg">](Python/2019/07.py "Python solution for 2019/07")|[**8**](https://adventofcode.com/2019/day/8) [<img height=12 src=".assets/py.svg">](Python/2019/08.py "Python solution for 2019/08")|
|[**2**](https://adventofcode.com/2019/day/2) [<img height=12 src=".assets/rs.svg">](Rust/2019/02.rs "Rust solution for 2019/02") [<img height=12 src=".assets/py.svg">](Python/2019/02.py "Python solution for 2019/02") [<img height=12 src=".assets/ua.png">](https://uiua.org/pad?src=JnNjCgrilIzilIDilbRJbnRjb2RlCiAgUGFyc2Ug4oaQIG1hcOKHoeKKuOKnuyDiipzii5XiiIjiioJALStAMOKHoTEwLgogIE9wIOKGmiDijaQu4omlMC7il78xMDAKICBNb2RlIOKGmiDil78xMOKMisO34oG_4oqZMTArMgogIFJlYWQg4oaaIOKsmjDiqKwoZ2V04oqZ4peMfOKImHxnZXQrKSDiioMoTW9kZeKKmShnZXR84peMKXxnZXQrKzHiipniipnil4x84ouF4ouF4oqZ4oiYKQogIFdyaXRlIOKGmiBpbnNlcnQ64oqZKOKorCjiipnil4x84o2kLjB8Kykg4oqDKE1vZGXiipkoZ2V0fOKXjCl8Z2V0Kysx4oqZ4oqZ4peMfOKLheKLheKKmeKImCkpCiAgQmluT3AhIOKGmiArNOKKg-KLheKLheKKmeKImFdyaXRl4oqZMuKXoSheMOKKgyhSZWFkMXxSZWFkMCkpCiAgT3BBZGQgIOKGmiBCaW5PcCErCiAgT3BNdWwgIOKGmiBCaW5PcCHDlwogIElucHV0ISAg4oaaICsy4oqD4ouF4ouF4oqZ4oiYV3JpdGXiioMo4ouF4ouF4ouF4oiYfDB84oqZ4oqZ4oiYKSDiipniipniipleMAogIE91dHB1dCEg4oaaICsyIOKKmeKKmeKKmV4wIOKKgyjii4XiipniipniiJh84oqZ4ouF4ouF4peMKSDil6EoUmVhZDApCiAgSm1wISAgICAg4oaaIOKorCgrM-KXjHziipnil4wpXjDil6HiioMoUmVhZDB8UmVhZDEpCiAgSm1wVHJ1ZSAg4oaaIEptcCEo4omgMCkKICBKbXBGYWxzZSDihpogSm1wISg9MCkKICBMdCDihpogQmluT3AhPAogIEVxIOKGmiBCaW5PcCEoPSkKICBCYXNlIOKGmiArMuKKmSs64pehKFJlYWQwKQogIFN0ZXDigLwgIOKGmiDiqKwo4oqZ4oqZ4oqZ4oiYfE9wQWRkfE9wTXVsfElucHV0IV4wfE91dHB1dCFeMXxKbXBUcnVlfEptcEZhbHNlfEx0fEVxfEJhc2UpT3Dil6EoZ2V04oqZ4peMKQogIElzRG9uZSDihpog4omNOTlnZXTiipnil4wKICBSdW7igLwg4oaQIOKXjOKXjOKNoihTdGVw4oC8XjBeMXzCrElzRG9uZSkwIDAK4pSU4pSA4pW0CgpJbnRjb2RlflBhcnNlCgpSdW5XaXRoSW5wdXQg4oaQIOKKouKNnOKKmTBJbnRjb2RlflJ1buKAvCgufOKXjCnijZziio_il4wxXzI6CgriioMo4oqXMTk2OTA3MjDiiaFSdW5XaXRoSW5wdXTima3igoLih6ExMDBfMTAwwqR8UnVuV2l0aElucHV0IDEyXzIpCg== "Uiua solution for 2019/02")|[**3**](https://adventofcode.com/2019/day/3) [<img height=12 src=".assets/py.svg">](Python/2019/03.py "Python solution for 2019/03") [<img height=12 src=".assets/ua.png">](https://uiua.org/pad?src=JnNjCgriiKnCsOKWocKw4oqf4oqc4pah4omgQFxuLgriiKkoXCvilr064oqP4oqZW-KIqeKKuMKv4oq44oeM4oehMl3iipfiipkiTFJVRCLiipwo4oqZ4ouVwrDiioIp4omgQCwuKQoK4pehKOKWveKKuOKIiCkK4oqDKC_ihqcrKzLiiKniipfin5w6fC_ihqfiiaEvK-KMtSkK "Uiua solution for 2019/03")|[**4**](https://adventofcode.com/2019/day/4) [<img height=12 src=".assets/py.svg">](Python/2019/04.py "Python solution for 2019/04") [<img height=12 src=".assets/ua.png">](https://uiua.org/pad?src=JnNjCgriipzii5XiiIgrQDDih6ExMC4K4o2cLeKHocKw4oqfKzBfMQoKQ2hlY2shIOKGkCDihqfiioMoL-KGpV4w4oqc4qe7KzHiirjiipt84omN4oeh4oq44qe74o2PKSDCsOKLlQriiKkvK-KJoeKKg0NoZWNrISg9MilDaGVjayEo4omlMikK "Uiua solution for 2019/04")|[**5**](https://adventofcode.com/2019/day/5) [<img height=12 src=".assets/py.svg">](Python/2019/05.py "Python solution for 2019/05") [<img height=12 src=".assets/ua.png">](https://uiua.org/pad?src=JnNjCgrilIzilIDilbRJbnRjb2RlCiAgUGFyc2Ug4oaQIG1hcOKHoeKKuOKnuyDiipzii5XiiIjiioJALStAMOKHoTEwLgogIE9wIOKGmiDijaQu4omlMC7il78xMDAKICBNb2RlIOKGmiDil78xMOKMisO34oG_4oqZMTArMgogIFJlYWQg4oaaIOKsmjDiqKwoZ2V04oqZ4peMfOKImHxnZXQrKSDiioMoTW9kZeKKmShnZXR84peMKXxnZXQrKzHiipniipnil4x84ouF4ouF4oqZ4oiYKQogIFdyaXRlIOKGmiBpbnNlcnQ64oqZKOKorCjiipnil4x84o2kLjB8Kykg4oqDKE1vZGXiipkoZ2V0fOKXjCl8Z2V0Kysx4oqZ4oqZ4peMfOKLheKLheKKmeKImCkpCiAgQmluT3AhIOKGmiArNOKKg-KLheKLheKKmeKImFdyaXRl4oqZMuKXoSheMOKKgyhSZWFkMXxSZWFkMCkpCiAgT3BBZGQgIOKGmiBCaW5PcCErCiAgT3BNdWwgIOKGmiBCaW5PcCHDlwogIElucHV0ISAg4oaaICsy4oqD4ouF4ouF4oqZ4oiYV3JpdGXiioMo4ouF4ouF4ouF4oiYfDB84oqZ4oqZ4oiYKSDiipniipniipleMAogIE91dHB1dCEg4oaaICsyIOKKmeKKmeKKmV4wIOKKgyjii4XiipniipniiJh84oqZ4ouF4ouF4peMKSDil6EoUmVhZDApCiAgSm1wISAgICAg4oaaIOKorCgrM-KXjHziipnil4wpXjDil6HiioMoUmVhZDB8UmVhZDEpCiAgSm1wVHJ1ZSAg4oaaIEptcCEo4omgMCkKICBKbXBGYWxzZSDihpogSm1wISg9MCkKICBMdCDihpogQmluT3AhPAogIEVxIOKGmiBCaW5PcCEoPSkKICBCYXNlIOKGmiArMuKKmSs64pehKFJlYWQwKQogIFN0ZXDigLwgIOKGmiDiqKwo4oqZ4oqZ4oqZ4oiYfE9wQWRkfE9wTXVsfElucHV0IV4wfE91dHB1dCFeMXxKbXBUcnVlfEptcEZhbHNlfEx0fEVxfEJhc2UpT3Dil6EoZ2V04oqZ4peMKQogIElzRG9uZSDihpog4omNOTlnZXTiipnil4wKICBSdW7igLwg4oaQIOKXjOKXjOKNoihTdGVw4oC8XjBeMXzCrElzRG9uZSkwIDAK4pSU4pSA4pW0CgpJbnRjb2RlflBhcnNlCgriiKko4o2kLi_Dlz0wOsKw4oqCIOKLheKKmeKXjEludGNvZGV-UnVu4oC8KCx84oqCKeKKmVtdOik1LDEK "Uiua solution for 2019/05")|[**6**](https://adventofcode.com/2019/day/6) [<img height=12 src=".assets/py.svg">](Python/2019/06.py "Python solution for 2019/06")|[**7**](https://adventofcode.com/2019/day/7) [<img height=12 src=".assets/py.svg">](Python/2019/07.py "Python solution for 2019/07")|[**8**](https://adventofcode.com/2019/day/8) [<img height=12 src=".assets/py.svg">](Python/2019/08.py "Python solution for 2019/08")|
|[**9**](https://adventofcode.com/2019/day/9) [<img height=12 src=".assets/py.svg">](Python/2019/09.py "Python solution for 2019/09") [<img height=12 src=".assets/ua.png">](https://uiua.org/pad?src=JnNjCgrilIzilIDilbRJbnRjb2RlCiAgUGFyc2Ug4oaQIG1hcOKHoeKKuOKnuyDiipzii5XiiIjiioJALStAMOKHoTEwLgogIE9wIOKGmiDijaQu4omlMC7il78xMDAKICBNb2RlIOKGmiDil78xMOKMisO34oG_4oqZMTArMgogIFJlYWQg4oaaIOKsmjDiqKwoZ2V04oqZ4peMfOKImHxnZXQrKSDiioMoTW9kZeKKmShnZXR84peMKXxnZXQrKzHiipniipnil4x84ouF4ouF4oqZ4oiYKQogIFdyaXRlIOKGmiBpbnNlcnQ64oqZKOKorCjiipnil4x84o2kLjB8Kykg4oqDKE1vZGXiipkoZ2V0fOKXjCl8Z2V0Kysx4oqZ4oqZ4peMfOKLheKLheKKmeKImCkpCiAgQmluT3AhIOKGmiArNOKKg-KLheKLheKKmeKImFdyaXRl4oqZMuKXoSheMOKKgyhSZWFkMXxSZWFkMCkpCiAgT3BBZGQgIOKGmiBCaW5PcCErCiAgT3BNdWwgIOKGmiBCaW5PcCHDlwogIElucHV0ISAg4oaaICsy4oqD4ouF4ouF4oqZ4oiYV3JpdGXiioMo4ouF4ouF4ouF4oiYfDB84oqZ4oqZ4oiYKSDiipniipniipleMAogIE91dHB1dCEg4oaaICsyIOKKmeKKmeKKmV4wIOKKgyjii4XiipniipniiJh84oqZ4ouF4ouF4peMKSDil6EoUmVhZDApCiAgSm1wISAgICAg4oaaIOKorCgrM-KXjHziipnil4wpXjDil6HiioMoUmVhZDB8UmVhZDEpCiAgSm1wVHJ1ZSAg4oaaIEptcCEo4omgMCkKICBKbXBGYWxzZSDihpogSm1wISg9MCkKICBMdCDihpogQmluT3AhPAogIEVxIOKGmiBCaW5PcCEoPSkKICBCYXNlIOKGmiArMuKKmSs64pehKFJlYWQwKQogIFN0ZXDigLwgIOKGmiDiqKwo4oqZ4oqZ4oqZ4oiYfE9wQWRkfE9wTXVsfElucHV0IV4wfE91dHB1dCFeMXxKbXBUcnVlfEptcEZhbHNlfEx0fEVxfEJhc2UpT3Dil6EoZ2V04oqZ4peMKQogIElzRG9uZSDihpog4omNOTlnZXTiipnil4wKICBSdW7igLwg4oaQIOKXjOKXjOKNoihTdGVw4oC8XjBeMXzCrElzRG9uZSkwIDAK4pSU4pSA4pW0CgpJbnRjb2RlflBhcnNlCgosMuKKmTEK4oqZ4peM4peM4oipSW50Y29kZX5SdW7igLwoLnziiJgpCg== "Uiua solution for 2019/09")|[**10**](https://adventofcode.com/2019/day/10) [<img height=12 src=".assets/py.svg">](Python/2019/10.py "Python solution for 2019/10")|[**11**](https://adventofcode.com/2019/day/11) [<img height=12 src=".assets/py.svg">](Python/2019/11.py "Python solution for 2019/11")|[**12**](https://adventofcode.com/2019/day/12) [<img height=12 src=".assets/py.svg">](Python/2019/12.py "Python solution for 2019/12")|[**13**](https://adventofcode.com/2019/day/13) [<img height=12 src=".assets/py.svg">](Python/2019/13.py "Python solution for 2019/13")|[**14**](https://adventofcode.com/2019/day/14) [<img height=12 src=".assets/py.svg">](Python/2019/14.py "Python solution for 2019/14")|[**15**](https://adventofcode.com/2019/day/15) [<img height=12 src=".assets/py.svg">](Python/2019/15.py "Python solution for 2019/15")|
|[**16**](https://adventofcode.com/2019/day/16) [<img height=12 src=".assets/py.svg">](Python/2019/16.py "Python solution for 2019/16")|[**17**](https://adventofcode.com/2019/day/17) [<img height=12 src=".assets/py.svg">](Python/2019/17.py "Python solution for 2019/17")|[**18**](https://adventofcode.com/2019/day/18) [<img height=12 src=".assets/py.svg">](Python/2019/18.py "Python solution for 2019/18")|[**19**](https://adventofcode.com/2019/day/19) [<img height=12 src=".assets/py.svg">](Python/2019/19.py "Python solution for 2019/19")|[**20**](https://adventofcode.com/2019/day/20) [<img height=12 src=".assets/py.svg">](Python/2019/20.py "Python solution for 2019/20")|[**21**](https://adventofcode.com/2019/day/21) [<img height=12 src=".assets/py.svg">](Python/2019/21.py "Python solution for 2019/21")|[**22**](https://adventofcode.com/2019/day/22) [<img height=12 src=".assets/py.svg">](Python/2019/22.py "Python solution for 2019/22")|
|[**23**](https://adventofcode.com/2019/day/23) [<img height=12 src=".assets/py.svg">](Python/2019/23.py "Python solution for 2019/23")|[**24**](https://adventofcode.com/2019/day/24) [<img height=12 src=".assets/py.svg">](Python/2019/24.py "Python solution for 2019/24")|[**25**](https://adventofcode.com/2019/day/25) [<img height=12 src=".assets/py.svg">](Python/2019/25.py "Python solution for 2019/25")|26|27|28|29|

40
Rust/2019/02.rs Normal file
View file

@ -0,0 +1,40 @@
#![feature(test)]
use intcode::{Int, Vm};
use rayon::iter::{IntoParallelIterator, ParallelIterator};
mod intcode;
type Input = Vec<Int>;
fn setup(input: &str) -> Input {
input
.split(',')
.map(|x| x.trim().parse().unwrap())
.collect()
}
fn run(input: &Input, noun: Int, verb: Int) -> Int {
let mut vm = Vm::new(input.iter().copied());
vm.write(1, noun);
vm.write(2, verb);
vm.run().unwrap();
vm.read(0)
}
fn part1(input: &Input) -> Int {
run(input, 12, 2)
}
fn part2(input: &Input) -> Int {
(0..100)
.into_par_iter()
.find_map_any(|noun| {
(0..100)
.find(|&verb| run(input, noun, verb) == 19690720)
.map(|verb| 100 * noun + verb)
})
.unwrap()
}
aoc::main!(2019, 2);

104
Rust/2019/intcode.rs Normal file
View file

@ -0,0 +1,104 @@
use rustc_hash::FxHashMap;
use thiserror::Error;
pub type Int = i64;
#[derive(Debug, Clone)]
pub struct Vm {
mem: FxHashMap<Int, Int>,
ip: Int,
}
impl Vm {
pub fn new(program: impl IntoIterator<Item = Int>) -> Self {
Self {
mem: program
.into_iter()
.enumerate()
.map(|(i, x)| (i as _, x))
.collect(),
ip: 0,
}
}
pub fn read(&self, addr: Int) -> Int {
self.mem.get(&addr).copied().unwrap_or(0)
}
pub fn write(&mut self, addr: Int, value: Int) -> Int {
self.mem.insert(addr, value).unwrap_or(0)
}
pub fn run(&mut self) -> Result<()> {
while self.step()? {}
Ok(())
}
pub fn step(&mut self) -> Result<bool> {
let op = self.parse_op()?;
match op {
Op::Add { in1, in2, out } => {
self.write_arg(out, self.read_arg(in1) + self.read_arg(in2));
self.ip += 4;
}
Op::Mul { in1, in2, out } => {
self.write_arg(out, self.read_arg(in1) * self.read_arg(in2));
self.ip += 4;
}
Op::Halt => return Ok(false),
}
Ok(true)
}
fn parse_op(&self) -> Result<Op> {
let code = self.read(self.ip);
let in1 = self.parse_arg(0);
let in2 = self.parse_arg(1);
let out = self.parse_arg(2);
Ok(match code {
1 => Op::Add { in1, in2, out },
2 => Op::Mul { in1, in2, out },
99 => Op::Halt,
code => return Err(Error::InvalidOpcode { ip: self.ip, code }),
})
}
fn parse_arg(&self, n: Int) -> Arg {
let arg = self.read(self.ip + 1 + n);
Arg::Addr(arg)
}
fn read_arg(&self, arg: Arg) -> Int {
match arg {
Arg::Addr(addr) => self.read(addr),
}
}
fn write_arg(&mut self, arg: Arg, value: Int) -> Int {
match arg {
Arg::Addr(addr) => self.write(addr, value),
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
enum Op {
Add { in1: Arg, in2: Arg, out: Arg }, // 1
Mul { in1: Arg, in2: Arg, out: Arg }, // 2
Halt, // 99
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
enum Arg {
Addr(Int),
}
#[derive(Debug, Error)]
pub enum Error {
#[error("Invalid opcode {code} at {ip}")]
InvalidOpcode { ip: Int, code: Int },
}
pub type Result<T, E = Error> = core::result::Result<T, E>;

27
Rust/2019/main.rs Normal file
View file

@ -0,0 +1,27 @@
aoc::year! {
// "01.rs",
"02.rs",
// "03.rs",
// "04.rs",
// "05.rs",
// "06.rs",
// "07.rs",
// "08.rs",
// "09.rs",
// "10.rs",
// "11.rs",
// "12.rs",
// "13.rs",
// "14.rs",
// "15.rs",
// "16.rs",
// "17.rs",
// "18.rs",
// "19.rs",
// "20.rs",
// "21.rs",
// "22.rs",
// "23.rs",
// "24.rs",
// "25.rs",
}

31
Rust/Cargo.lock generated
View file

@ -1,6 +1,6 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
version = 4
[[package]]
name = "ahash"
@ -47,6 +47,7 @@ dependencies = [
"rustc-hash 2.0.0",
"rustworkx-core",
"smallvec",
"thiserror",
"z3",
]
@ -555,9 +556,9 @@ dependencies = [
[[package]]
name = "proc-macro2"
version = "1.0.86"
version = "1.0.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0"
dependencies = [
"unicode-ident",
]
@ -782,9 +783,9 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
[[package]]
name = "syn"
version = "2.0.77"
version = "2.0.90"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed"
checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31"
dependencies = [
"proc-macro2",
"quote",
@ -804,6 +805,26 @@ dependencies = [
"windows-sys 0.59.0",
]
[[package]]
name = "thiserror"
version = "2.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c006c85c7651b3cf2ada4584faa36773bd07bac24acfb39f3c431b36d7e667aa"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
version = "2.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f077553d607adc1caf65430528a576c757a71ed73944b66ebb58ef2bbd243568"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "typenum"
version = "1.17.0"

View file

@ -31,6 +31,7 @@ regex = "1.10.6"
rustc-hash = "2.0.0"
rustworkx-core = "0.15.1"
smallvec = "1.13.2"
thiserror = "2.0.3"
z3 = "0.12.1"
[dev-dependencies]
@ -66,6 +67,14 @@ path = "2015/06.rs"
name = "2015_07"
path = "2015/07.rs"
# 2019
[[bin]]
name = "2019"
path = "2019/main.rs"
[[bin]]
name = "2019_02"
path = "2019/02.rs"
# 2020
[[bin]]
name = "2020"