A kis házi feladat a nagy házi feladathoz (a sátrak feladványhoz) kapcsolódik, ezért először ezt ismertetjük pár mondatban.
to_external/3 függvény
megírása. A függvénynek nem feladata a megoldás
helyességének ellenőrzése. A formális specifikációt lejjebb
találja.
Khf1.to_internal/1 függvény visszatérési
értékével azonos felépítésű.:n
(észak), :e (kelet), :s
(dél), :w (nyugat).khf2_r0.txt, khf2_r1.txt
és khf2_r2.txt).:ok atom.A fájlban sorok vannak, a nemüres sorok szavakból állnak. A sorokat
legalább egy újsor-jel, a szavakat legalább egy szóköz
karakter választja el egymástól. A szavak (esetleg negatív) egész
számok, sátrakat jelölő N, E, S vagy W betűk, fákat jelölő
csillagok (*), valamint üres parcellákat jelölő kötőjelek (-)
lehetnek.
A fájl első nemüres sora a sátrak oszloponkénti számát, további sorainak első szava a sátrak soronkénti számát adja meg, az összes többi szó pedig az egyes parcellák tartalmát (fa, sátor vagy üres) írja le.
:n, :e, :s, :w)
vannak;
@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
to_external/3 függvény specifikációja
@spec to_external(pd::puzzle_desc, ds::tent_dirs, file::String.t) :: :ok
# A pd = {rs, cs, ts} 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énti számának a listája,
# cs a sátrak oszloponkénti számának a listája,
# ts a fákat tartalmazó parcellák koordinátájának lexikálisan rendezett listája
iex> puzzle0 = {[-1, 0, 0, -3, 0], [0, 0, -2, 0, 0], []}
{[-1, 0, 0, -3, 0], [0, 0, -2, 0, 0], []}
iex> Khf2.to_external puzzle0, [], "khf2_r0.txt"
:ok
iex> puzzle1 = {[1, 1, 0, 3, 0], [1, 0, 2, 0, 2], [{1, 2}, {3, 3}, {3, 5}, {5, 1}, {5, 5}]}
{[1, 1, 0, 3, 0], [1, 0, 2, 0, 2], [{1, 2}, {3, 3}, {3, 5}, {5, 1}, {5, 5}]}
iex> Khf2.to_external puzzle1, [:e,:s,:n,:n,:n], "khf2_r1.txt"
:ok
iex> puzzle2 = {[1, 1, -1, 3, 0], [1, 0, -2, 0, 2], [{1, 2}, {3, 3}, {3, 5}, {5, 1}, {5, 5}]}
{[1, 1, -1, 3, 0], [1, 0, -2, 0, 2], [{1, 2}, {3, 3}, {3, 5}, {5, 1}, {5, 5}]}
iex> Khf2.to_external puzzle2, [:e,:s,:n,:n,:w], "khf2_r2.txt"
:ok
iex> puzzle3 = {[2], [0, 1, -1, 0, -1], [{1, 1}, {1, 4}]}
{[2], [0, 1, -1, 0, -1], [{1, 1}, {1, 4}]}
iex> Khf2.to_external puzzle3, [:e,:e], "khf2_r3.txt"
:ok
iex> puzzle4 = {[0, -1, 0, 1, 1, 0], [3], [{1, 1}, {3, 1}, {6, 1}]}
{[0, -1, 0, 1, 1, 0], [3], [{1, 1}, {3, 1}, {6, 1}]}
iex> Khf2.to_external puzzle4, [:s,:s,:n], "khf2_r4.txt"
:ok
khf2_r0.txt khf2_r1.txt khf2_r2.txt khf2_r3.txt khf2_r4.txt
0 0 -2 0 0 1 0 2 0 2 1 0 -2 0 2 0 1 -1 0 -1 3
-1 - - - - - 1 - * E - - 1 - * E - - 2 * E - * E 0 *
0 - - - - - 1 - - - - N 1 - - - - N -1 S
0 - - - - - 0 - - * - * -1 - - * - * 0 *
-3 - - - - - 3 N - S - N 3 N - S - - 1 S
0 - - - - - 0 * - - - * 0 * - - W * 1 N
0 *
Khf2 legyen, a @moduldoc
szakasz pedig legalább a szerző nevét, email-címét és a dátumot
tartalmazza.
defmodule Khf2 do @moduledoc """ Kemping térképe @author "Egyetemi Hallgató <egy.hallg@dp.vik.bme.hu>" @date "2022-10-01" ... """ ... 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.
| DP Admin: dvacakrobotjaitoknakp@iit.bme.hu | Vissza az elejére / Back to the top |