defmodule Nhf1 do @moduledoc """ Sátrak @author "Egyetemi Hallgató " @date "2021-10-16" ... """ @doc """ ... """ @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 tentsCountRows :: [integer] # a sátrak száma soronként @type tentsCountCols :: [integer] # a sátrak száma oszloponként @type trees :: [field] # a fákat tartalmazó parcellák koordinátái @type puzzle_desc :: {tentsCountRows, tentsCountCols, trees} # a feladványleíró hármas @type dir :: :N | :E | :S | :W # a sátorpozícikó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 kertben @type cnt_tent :: integer # a sátrak száma a kertben @type err_diff :: %{err_diff: [{cnt_tree, cnt_tent}]} # különbözik egymástól a sátrak és a fák száma @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_diff, err_rows, err_cols, err_touch} # hibaleíró négyes @doc """ ... """ @spec to_internal(file::String.t) :: pd::puzzle_desc # A file fájlban szövegesen ábrázolt feladvány leírója pd @doc """ ... """ @spec to_external(pd::puzzle_desc, ds::tent_dirs, file::String.t) :: :ok # Az {rs, cs, ts} = pd feladványleíró és a ds sátorirány-lista alapján # a feladvány szöveges ábrázolását írja ki a file fájlba, 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 listája @doc """ ... """ @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_diff, e_rows, e_cols, e_touch} = ed négyes 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