Day 25 part1 done
Looks like I need to get all the other stars before I can do part 2? Never got this far!master
							parent
							
								
									65a54ef8b8
								
							
						
					
					
						commit
						689bf15df4
					
				| @ -0,0 +1,51 @@ | ||||
| defmodule Day25 do | ||||
|   def run do | ||||
|     %{locks: locks, keys: keys} = parse_input("data.txt") | ||||
| 
 | ||||
|     # compare every key against every lock | ||||
|     good_keys = | ||||
|       Enum.reduce(keys, 0, fn key, acc -> | ||||
|         acc + | ||||
|           Enum.reduce(locks, 0, fn lock, acc2 -> | ||||
|             acc2 + if fits(lock, key), do: 1, else: 0 | ||||
|           end) | ||||
|       end) | ||||
| 
 | ||||
|     dbg(good_keys) | ||||
|   end | ||||
| 
 | ||||
|   defp fits(lock, key) do | ||||
|     Enum.reduce(0..4, true, fn idx, acc -> | ||||
|       acc and Enum.at(lock, idx) + Enum.at(key, idx) <= 5 | ||||
|     end) | ||||
|   end | ||||
| 
 | ||||
|   defp parse_input(file) do | ||||
|     File.read!(file) | ||||
|     |> String.trim() | ||||
|     |> String.split("\n\n") | ||||
|     |> Enum.reduce(%{locks: [], keys: []}, fn el, %{locks: locks, keys: keys} = acc -> | ||||
|       grid = String.split(el, "\n") |> Enum.map(&String.graphemes/1) | ||||
|       is_lock = grid |> hd() |> hd() |> String.graphemes() |> Enum.all?(fn el -> el == "#" end) | ||||
| 
 | ||||
|       res = | ||||
|         Enum.map(0..4, fn col -> | ||||
|           Enum.reduce(0..6, 0, fn row, acc2 -> | ||||
|             el = Enum.at(grid, row) |> Enum.at(col) | ||||
| 
 | ||||
|             case el do | ||||
|               "#" -> acc2 + 1 | ||||
|               _ -> acc2 | ||||
|             end | ||||
|           end) - 1 | ||||
|         end) | ||||
| 
 | ||||
|       case is_lock do | ||||
|         true -> %{acc | locks: [res | locks]} | ||||
|         false -> %{acc | keys: [res | keys]} | ||||
|       end | ||||
|     end) | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| Day25.run() | ||||
					Loading…
					
					
				
		Reference in New Issue