satrak/1
függvény megírása. A
formális specifikációt lejjebb találja.
A függvény egyetlen paramétere a feladványt írja le (lásd a kis
házi feladatokban a puzzle_desc
típust), visszatérési
értéke pedig a feladvány összes megoldásának a listája,
tetszőleges sorrendben. Egy megoldást a sátrak saját fájukhoz
viszonyított helyzetét leíró atomok listájaként kell megadni (lásd
a kis házi feladatokban a tent_dirs
típust).
Megoldásának nem kell nagyon hatékonynak lennie, azaz
alkalmazhatja a generate-and-test módszert: állítsa elő az
összes lehetséges elrendezést, és gyűjtse össze közülük egy
listába azokat, amelyeket a 3. kis házi feladatban
megírt check_sol/2
függvény vagy annak egy változata
helyesnek talál. Programját csak nem túl nagy méretű
feladványokkal fogjuk tesztelni. De ha jó vagy jeles megajánlott
jegyet szeretne kapni a létraversenybe való bejutással, és jó
helyezést elérni a létraversenyen
(lásd: Egyéb tudnivalók), akkor
ügyeljen a hatékonyságra. Teljesítménymérésre
használhatja a
Benchee
modult.
@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
satrak/1
függvény specifikációja@spec satrak(pd::puzzle_desc) :: tss::[tent_dirs] # tss a pd feladványleíróval megadott feladvány összes megoldásának listája, tetszőleges sorrendben
1 0 2 0 2 1 0 2 0 2 1 - * - - - 1 - * E - - 1 - - - - - 1 - - - - N 0 - - * - * 0 - - * - * 3 - - - - - 3 N - S - N 0 * - - - * 0 * - - - *
iex> Nhf1.satrak {[1, 1, 0, 3, 0], [1, 0, 2, 0, 2], [{1, 2}, {3, 3}, {3, 5}, {5, 1}, {5, 5}]} [[:e, :s, :n, :n, :n]]Egy másik feladvány és a megoldásai
-1 -2 -2 0 -2 -1 -2 -2 0 -2 -1 -2 -2 0 -2 -1 -2 -2 0 -2 -1 - * - - - -1 W * - - - -1 - * - - - -1 - * E - - -1 - - - - - -1 - - - - N -1 - S - - N -1 - - - - N -1 - - * - * -1 - - * - * -1 - - * - * -1 - - * - * 3 - - - - - 3 N - S - N 3 N - S - N 3 N - S - N 0 * - - - * 0 * - - - * 0 * - - - * 0 * - - - *
iex> Nhf1.satrak {[-1, -1, -1, 3, 0], [-1, -2, -2, 0, -2], [{1, 2}, {3, 3}, {3, 5}, {5, 1}, {5, 5}]} [[:w, :s, :n, :n, :n], [:s, :s, :n, :n, :n], [:e, :s, :n, :n, :n]]
Nhf1
legyen, a @moduldoc
szakasz pedig legalább a szerző nevét, email-címét és a dátumot
tartalmazza.
defmodule Nhf1 do @moduledoc """ Sátrak @author "Egyetemi Hallgató <egy.hallg@dp.vik.bme.hu>" @date "2023-10-14" ... """ ... endA segédfüggvények legyenek lokálisak (
defp
), írjon
hozzájuk típusspecifikációt és fejkommentként tömör leírást is.
A beadott programokat Linux környezetben Elixir 1.14 (Erlang/OTP 25) rendszerrel teszteljük.
Khf1.to_internal/1
függvényt.
DP Admin: dvacakrobotjaitoknakp@iit.bme.hu | Vissza az elejére / Back to the top |