mirror of
https://github.com/Smaug123/advent-of-code-2017
synced 2025-10-09 13:38:39 +00:00
Day 19
This commit is contained in:
4
Cargo.lock
generated
4
Cargo.lock
generated
@@ -20,6 +20,10 @@ version = "0.1.0"
|
||||
name = "day_18"
|
||||
version = "0.1.0"
|
||||
|
||||
[[package]]
|
||||
name = "day_19"
|
||||
version = "0.1.0"
|
||||
|
||||
[[package]]
|
||||
name = "day_2"
|
||||
version = "0.1.0"
|
||||
|
@@ -12,5 +12,6 @@ members = [
|
||||
"day_15",
|
||||
"day_16",
|
||||
"day_18",
|
||||
"day_19",
|
||||
"day_23",
|
||||
]
|
||||
|
9
day_19/Cargo.toml
Normal file
9
day_19/Cargo.toml
Normal file
@@ -0,0 +1,9 @@
|
||||
[package]
|
||||
name = "day_19"
|
||||
version = "0.1.0"
|
||||
authors = ["Smaug123 <patrick+github@patrickstevens.co.uk>"]
|
||||
edition = "2018"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
201
day_19/input.txt
Normal file
201
day_19/input.txt
Normal file
@@ -0,0 +1,201 @@
|
||||
|
|
||||
+---------------------------------------------------+ +-+ +-----+ +-------------------------------+ +-------------------------------------+ +---+
|
||||
| | | | | | | | | | | | |
|
||||
| | +-----+ +---------------------------|-------------------|---------+ | | | | +-----+ | | |
|
||||
| | | | | | | | | | | | | | | | |
|
||||
+---+ +-+ | +---+ +-----------------------------+ | +---------------+ | +-----------|-----------------------------|---+ +-+ +---|-+ |
|
||||
| | | | | | | | | | | | | | | | | | |
|
||||
| | +-|---+ +---+ +-|-----------------------------|-|-------------------------------------------------------+ | | +-------------------------------------------|---|-+ |
|
||||
| | | | | | | | | | | | | | | | | | |
|
||||
+---|-+ | +-|---|-----------------------------------|-----------------------------+ +-------------|-----------|-------------------------------------------------------|-----+ |
|
||||
| | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | +---+ +-+ | +---------------|-----------------------------------------------+ | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
+---|-|-----|-|---|-|---+ | | | | | +---------------|--------------------------------P--------------|-------------------------------------------------------+ | | | |
|
||||
| | | | | | | | | | | O | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | +-----------|-------|-----------------------------------------------------------------------------------------------------------------+ | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
+-------+ | | | | | | +---|-|---+ +-|---+ | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | +-------------------+ | | | +-+ | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| +-+ | +-------|-----|-|-|---|-------------------|-----|-|-----------------------------|-------------------------|-------|---------------------------|-----------------|---|---|-+ | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| +-----|---|-----|-----|---|-----------|-+ +---|-|-----|-----------------|-----------------------------------------------|-------|-|-------------------------+ | +-|---|---|-+ | | | |
|
||||
| | | | | | | M | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
+-|-+ +-+ | +---|---+ | | | +---------+ | | | | | | | | | | | | | +---------------------+ | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | +-----------|-------------|---------------------------------|-----------|-----+ | +-------------|-|-------+ | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | +-|-----------|-|-|---|---|----------------S--|-----|-------------------------------|-----------------+ | | | | +-------------------+ | | | | | +-|L----+ | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | +-|-----------|-----------|-----|-----|-----------|-+ | | | +---|---|-----------+ | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | +-+ | | | | | | | | | | | | | | | | | | | | | | +-----------|---|---------|-|-------|-----|-|-------|-|-+ | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
+-|-|-------|-------------|-----|-|-------|---------------------|-------------------|-----------|---------------------------------------------------|-|-------|-----+ | | | | | +---+ | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| +-+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-+ | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | +-----|-+ +-|-----|---|-|---------|---|---------|-|-----------|-----------|-|-----------|-+ | +---+ | | | +-------------|---------+ | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | +-----------------|---|---------|---+ | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | +-+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | +---|-------|-----------|---+ | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | +-----+ | | | | | | | | | +---------|-------------------|---------|---|-|-------|---|-----|-------|---------+ | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
+---|-----|-----|-------|---|---+ | | | | | | | | | | +-----+ | | | | | | +-------------------|-------|-|-----|-------|---|-----|-|---------------|-+ | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
+---|---|-|-----|-----|-----+ | | | | | | | | | | +-----|-----|-------------|-|-----------------------|-----------|-+ | | | | | | | | | | | | +-|---+ | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
+---------------|---------|---------|---------|---+ | | | +-----|---------------|-------------|-|-----------|-----------|-----------+ | +-+ | | | | | +-----|-----|---|-------------+ | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | +-|-|---|-----|---|-+ | | | | | | | | | | | +-|-------|-------------|-----------|-----------|---------------------------|-------|---|-----|-|-----|---|---------+ | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-|---+ | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-+ | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | +-|-|---|-----|-----------|-------|-------|---|-----------------|-----|-|-------------------+ | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-|-------+ | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | +-----|---|---|-------|-|---------|-----------------+ | | | | | | | | +-+ | | | | | | | | | | +-----+ | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | +-+ | | | | | | | | | | | | | | | | | +-----------|-------------------------------------------------------------|-----|-|-|-|-----|---|-----|----A|-+ | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | +---|-----+ | | | | | | | | | | | | | | | +-|-----------|-------------------------|-------|-----------------------|-|-------------|-+ | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
+---|-|-|---|-----|---|-------|-----|-----|-----|-----|---|-|---|-----------------|-|-----------------------------------------------------------+ | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | +---------------------------|-----|---|-|-----|---|---|-------|-|-------------------------+ | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | +-|-|---|---------------|-|-----------|-----|-------|---|---------|-----------|---------------------------------------------------------|---------|-----|-------|-+ | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| +-----|---+ | | +-|---+ | | +---|-|---|-+ | | | | | | | | | | | | | +-------|-------------------------------------|---|---------------|-|---|-|---------|-|---|---|-------|-|-|-+
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| +---|---+ +-+ +---|-|-|---|-|-----|-----|---|-----------|-|---|-----|-+ | | | | | | +-------------------------|-------------|-----|-|---|-----------------|---|-------|-|-+
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | +---|---------------------|-------------------------------------|-------------------|-|---|-------|-+ | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | +-----------|-------------|-------------------------------------|---|-----------------|-----|---|---|-|-----|---|-------|-----+
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | +-----|---|-|-----|-|-|-----|---|-----|-------|---------------------+ | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | +-----------------|---------|---------|-------|-|-|---|-|---------|-----|-|---------|---|-----------|-----------|-----------------|---------|-------|---|-----|---|-|-|---|-------+ | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +---+ |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| +---|-|---|---------|-|-|---|-----|-----------|-------+ | | | | | | | | | | | +---|-----------------------|---------------------------|-----|-----|-|---|-+ | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | +-----------+ | | | | | | | | | | | | | | | | | | | | +-|-----|-------------------|---------+ | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | +-----------|---------------------------------------------|---|---------|-----------|-----+ | | | | | +-|-----|---+
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-------|---------------|-------------+ | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | +-|-------+ | | | | | | | | | | | +-|-------|-----------|-----------|-------------|-------------------|-|-----|-----------|-------|-------+ | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | +---+ +---|-----|-|---|-+ +---|---|-|-----+ | | +---------|-------------|---------+ | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | +-|-+ | | | | | | +-----------|-|-----|---|-------|---|-|-------|---------------------+ | | | | +---|-------|-+ | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | +---+ +-|---|-+ | | | | | | +-----------|---+ | | | | | | | | | | | | | | | | | | | | | +-|-----------------------|-+
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | +---------+ | +-------|-----|-+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| +-----|-|-------------|-|-|---|---|-------|-------|-+ | | | | | | | | | | | +-----+ +---+ | | +-+ | | | | | | | | +-------------|-+ | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | +-|---------|---|-|---|---|-|-----|---------|---------------|-|-----+ | +-|---+ | | +-------------|-------------|-------------|-------------------|-----|-+ +---|-+ | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +---------|-----------------------|-----|---|-|---|---+ | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | +-----------+ | | | | | | | | | | | | | | | +---------------------|---|---------|-|-------------|-|---------|-|-----+ | | Y
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | +---------------|---|-|-----|-----------|-----------------|---------|---------------------|---|-----|-----|---|-------|-+ | | | | +-----+ | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | +-----------|-|-----+ | | | | +---------------------|-|-|---+ | +---------------------------|---------|---------------|---------------------------------------------------------|-|-+
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | G | | | | | | | | | | | | | | |
|
||||
| | | +---|---------|---|---|-------|---------------------------------------------|-----|---|-|-----------------------|-|-------------|-----|---------|---|-------+ | | +-------------+ | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-----|---------|-----+ | | | +-|-----+ | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | +-|---+ | +-|---|-------|-|-------------------------------|-|---|---|---|---+ | | | | | | | | | | | | +-+ | | +-------------|---|-------+ | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | +---|-|---+ | +---|---------|---------------+ | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | +---------------|-|---------------|-------------------|---|-|-|-|-|---|---|---|-|-|-|-|-------------------+ | | | | | | | | | +---+ | | | | +---|---|-----|-+ | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | +-------------|---|-|---------|-+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
+-+ | | +-------------------|-----|-------|-----|-------------+ | | | | | | | | | | | | | +-----------------|---|-|---+ | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
+---+ | | | | | | | | | | | | | | | | | | | | | | | | | | | +-------------+ | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | +---+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-----|-|-|-----+ | | +-------+ |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
+-----|---------+ | | | +-----|---|-------|-----|-----------------|-|-----------------+ +---|---------------+ | | | | | | | +-------|---|-------|-|-------|-|---|-+ | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | +-------------|-------------+ | | | +-|---|-+ | | | | | | | | | | | | | +---+ | | | | | | | +-+ | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | J | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | +-------------|-----------+ | | | | | | | | | | | | | | | +---|---+ | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | +---+ | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | +-+ | | | +---------|---|-|-|-------|---|-------|-|---------|---|---------------------|---------|-----|---------------|-----------|-----+ +---------|-+ |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | +-------|-------|---|-----+ | | +-|-----------------|-----+ +-----------|---|-----|-+ | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
+-----|---------|---------+ +-----------------------------+ | | +---|-+ | | +-|-----|-----|-------------|---------|-------+ | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | +---+ | | +---+ | | | +---+
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
+---------+ | | | | | | | | | | | | | +-|---|-------------|-------|-+ | | | +-+ | | +-|---+
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| | | | | | | | | +-------|-------|---------------|-------------|---------+ | | | | | | | | |
|
||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| +---+ | | | | +-----|-|-------|-|---------|-----------|-------------------------|-----------------------------------------+ +-+ | +---|-----|-+
|
||||
| | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| +-----------------------------------|---------|---------+ | +-------|---+ | | | | +-------|---------------------------+ +-----------|-------+ +-+
|
||||
| | | | | | | | | | | | | | | | | |
|
||||
| +-----------------------------------+ | | +---+ | +-----------+ +-----------------------|-------------------------------------------+ +-------+
|
||||
| | | | | | | | | | | | | |
|
||||
| | +---------------------|-----------|-----------------------------|-------------------------|-----------------------------------+ +-------+
|
||||
| | | | | | | | | | | | | |
|
||||
+-----+ +-------------------|---------------------------+ +---------------------------------|-|-----------------------|-----------------------------------------------------+ |
|
||||
| | | | | | | | | | | | | |
|
||||
| +-------------------------|-------------------|-------|---|-----+ | | | | | | |
|
||||
| | | | | | | | | | | | | |
|
||||
| | +---|-------------------|-----------|-----------------------------+ +---------------------+ | | +-----+
|
||||
| | | | | | | | | | | |
|
||||
+-----------------+ +-+ +-------------------+ +---+ +-----------------------------------+ +---+
|
||||
|
146
day_19/src/main.rs
Normal file
146
day_19/src/main.rs
Normal file
@@ -0,0 +1,146 @@
|
||||
#[derive(Clone, Copy, PartialEq, Eq)]
|
||||
enum Square {
|
||||
Empty,
|
||||
Vertical,
|
||||
Horizontal,
|
||||
Cross,
|
||||
Char(char),
|
||||
}
|
||||
|
||||
fn parse(c: char) -> Square {
|
||||
match c {
|
||||
' ' => Square::Empty,
|
||||
'|' => Square::Vertical,
|
||||
'-' => Square::Horizontal,
|
||||
'+' => Square::Cross,
|
||||
c => Square::Char(c),
|
||||
}
|
||||
}
|
||||
|
||||
fn input() -> Vec<Vec<Square>> {
|
||||
let input = include_str!("../input.txt");
|
||||
let mut output = input
|
||||
.lines()
|
||||
.map(|l| l.chars().map(|c| parse(c)).collect())
|
||||
.collect::<Vec<Vec<_>>>();
|
||||
let max_len = output.iter().map(|l| l.len()).max().unwrap();
|
||||
for row in output.iter_mut() {
|
||||
if row.len() < max_len {
|
||||
row.extend(std::iter::repeat(Square::Empty).take(max_len - row.len()))
|
||||
}
|
||||
}
|
||||
output
|
||||
}
|
||||
|
||||
fn execute(square: &Vec<Vec<Square>>) -> (String, u32) {
|
||||
let mut row = 0;
|
||||
let mut col = square[0]
|
||||
.iter()
|
||||
.enumerate()
|
||||
.filter_map(|(i, &j)| {
|
||||
if j == Square::Vertical {
|
||||
Some(i.clone())
|
||||
} else {
|
||||
None
|
||||
}
|
||||
})
|
||||
.next()
|
||||
.unwrap();
|
||||
|
||||
let mut answer: Vec<char> = vec![];
|
||||
|
||||
let mut is_vertical = true;
|
||||
let mut increasing = true;
|
||||
let mut steps = 0;
|
||||
|
||||
loop {
|
||||
steps += 1;
|
||||
match square[row][col] {
|
||||
Square::Empty => {
|
||||
return (answer.iter().collect::<String>(), steps - 1);
|
||||
}
|
||||
Square::Cross => {
|
||||
if is_vertical {
|
||||
is_vertical = false;
|
||||
if col == 0 {
|
||||
increasing = true;
|
||||
col = 1;
|
||||
} else if col == square[row].len() - 1 {
|
||||
increasing = false;
|
||||
col = square[row].len() - 2;
|
||||
} else {
|
||||
let left = &square[row][col - 1];
|
||||
let right = &square[row][col + 1];
|
||||
if *left == Square::Empty {
|
||||
increasing = true;
|
||||
col += 1;
|
||||
} else if *right == Square::Empty {
|
||||
increasing = false;
|
||||
col -= 1;
|
||||
} else {
|
||||
panic!("Expected crossroads to move us horizontal.");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
is_vertical = true;
|
||||
if row == 0 {
|
||||
increasing = true;
|
||||
row = 1;
|
||||
} else if row == square.len() - 1 {
|
||||
increasing = false;
|
||||
row = square.len() - 2;
|
||||
} else {
|
||||
let top = &square[row - 1][col];
|
||||
let bottom = &square[row + 1][col];
|
||||
if *top == Square::Empty {
|
||||
increasing = true;
|
||||
row += 1;
|
||||
} else if *bottom == Square::Empty {
|
||||
increasing = false;
|
||||
row -= 1;
|
||||
} else {
|
||||
panic!("Expected crossroads to move us vertical.");
|
||||
}
|
||||
}
|
||||
}
|
||||
continue;
|
||||
}
|
||||
Square::Char(c) => {
|
||||
answer.push(c);
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
if increasing {
|
||||
if is_vertical {
|
||||
row += 1;
|
||||
} else {
|
||||
col += 1;
|
||||
};
|
||||
} else {
|
||||
if is_vertical {
|
||||
row -= 1;
|
||||
} else {
|
||||
col -= 1;
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let input = input();
|
||||
let (part_1, part_2) = execute(&input);
|
||||
println!("part 1 => {}", part_1);
|
||||
println!("part 2 => {}", part_2);
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_day_1() {
|
||||
let (part_1, part_2) = execute(&input());
|
||||
assert_eq!(part_1, "GPALMJSOY");
|
||||
assert_eq!(part_2, 16204);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user