defmodule Khf3 do @moduledoc """ Kemping helyessége @author "Egyetemi Hallgató " @date "2023-10-07" ... """ @type row :: integer # sor száma (1-től n-ig) @type col :: integer # oszlop száma (1-től m-ig) @type field :: {row, col} # egy parcella koordinátái @type tents_count_rows :: [integer] # a sátrak száma soronként @type tents_count_cols :: [integer] # a sátrak száma oszloponként @type trees :: [field] # a fákat tartalmazó parcellák koordinátái lexikálisan rendezve @type puzzle_desc :: {tents_count_rows, tents_count_cols, trees} # a feladványleíró hármas @type dir :: :n | :e | :s | :w # a sátorpozíciók iránya: north, east, south, west @type tent_dirs :: [dir] # a sátorpozíciók irányának listája a fákhoz képest @type cnt_tree :: integer # a fák száma a kempingben @type cnt_tent :: integer # az elemek száma a sátorpozíciók irányának listájában @type err_rows :: %{err_rows: [integer]} # a sátrak száma rossz a felsorolt sorokban @type err_cols :: %{err_cols: [integer]} # a sátrak száma rossz a felsorolt oszlopokban @type err_touch :: %{err_touch: [field]} # a felsorolt koordinátájú sátrak másikat érintenek @type errs_desc :: {err_rows, err_cols, err_touch} # hibaleíró hármas @spec check_sol(pd::puzzle_desc, ds::tent_dirs) :: ed::errs_desc # Az {rs, cs, ts} = pd feladványleíró és a ds sátorirány-lista # alapján elvégzett ellenőrzés eredménye a cd hibaleíró, ahol # rs a sátrak soronként elvárt számának a listája, # cs a sátrak oszloponként elvárt számának a listája, # ts a fákat tartalmazó parcellák koordinátájának a listája # Az {e_rows, e_cols, e_touch} = ed hármas elemei olyan # kulcs-érték párok, melyekben a kulcs a hiba jellegére utal, az # érték pedig a hibahelyeket felsoroló lista (üres, ha nincs hiba) end