Adva van egy n sorból álló szövegfájl (n ≥
0), amelyben a sorokat egy vagy több újsor-karakter
(\n
), a szavakat egy vagy több egyéb szóköz-jellegű
(ún. whitespace) karakter választja el
egymástól. Jelöljük a legtöbb szót tartalmazó sor szavainak
számát m-mel (m > 0). Állítson elő egy
olyan n*m méretű ún. szövegmátrixot, amelynek sorai a
szövegfájl nem üres sorainak felelnek meg, a celláiban pedig a
szövegfájl egyes szavai vannak, balra illesztve. Ha a
szövegfájl valamely sorában m-nél kevesebb szó van, a
mátrix adott sorában az üresen maradó jobb oldali cellákba
a nil
atomot rakja be.
A mátrix sorait listaként, a mátrixot sorok listájaként ábrázoljuk.
A szavak Elixir-sztringek, UTF-8 kódolással. A szavakban — a szóköz-jellegű karaktereket kivéve — bármilyen karakter lehet. A sorok elején és végén a szóköz-jellegű karaktereket, valamint az üres sorokat hagyja figyelmen kívül.
szovegelo
függvény szovegelo
néven olyan Elixir-függvényt,
amelynek egyetlen paramétere a fájl elérési útja, eredménye pedig
a szövegmátrix.
Fájl beolvasására a File.read!/1
függvény
használatát javasoljuk.
@spec szovegelo(file :: String.t) :: rss:: [[String.t | nil]] # A file fájl tartalmából előállítja az rss szövegmátrixot. # A beolvasott szöveg és a szövegmátrix sorainak száma azonos. # A szövegmátrix oszlopainak száma megegyezik a leghosszabb # sor szavainak számával. A mátrix minden egyes cellájában a # fájl egy-egy szava vagy a nil atom van. A szavakat egy vagy # több szóköz-jellegű karakter választja el. A sorokba balról # jobbra haladva kerülnek be a szavak, a sorok végén üresen # maradó cellákba pedig a nil atom.A modul neve
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 """ Szövegelő @author "Egyetemi Hallgató <egy.hallg@dp.vik.bme.hu>" @date "2021-10-01" ... """ ... endMinden publikus, azaz
def
-fel definiált függvény elé
írjon rövid leírást is (a feladatkiírásból átvett specifikáción és
fejkommenten kívül), például:
@doc """ A szovegelo függvény egy szövegfájl tartalmából mátrixot állít elő. """A segédfüggvények legyenek lokálisak (
defp
), írjon
hozzájuk típusspecifikációt és fejkommentként rövid leírást is, például:
@spec hany_eves(x:: integer, t::String.t, z::any) :: n::integer # Az árbóc x hosszából, a kikötő t nevéből és a csillagok z állásából # a kapitány n életkora úgy számítható ki, hogy vesszük...
A beadott programokat Linux környezetben Elixir 1.7.3 (Erlang/OTP 21) rendszerrel teszteljük.
iex> Khf2.szovegelo "khf2_s0.txt" []
iex> Khf2.szovegelo "khf2_s1.txt" [["."]]
iex> Khf2.szovegelo "khf2_s2.txt" [ ["---", "%%%", "7", "(())", "$$$$", "***", nil, nil, nil, nil], ["===", "!!!!!", "\"\"\"\"", "'''", nil, nil, nil, nil, nil, nil], ["..", "??", "@@", "&&", "##", "<<", "...", ">>", "bla", "BlaBla"] ]
iex> Khf2.szovegelo "khf2_s3.txt" [["itt", "a", "vége", ":", "fuss", "el", "véle!"]]
iex> Khf2.szovegelo "khf2_s4.txt" [ ["Lakott", "egy", "kisbaba", "Vácott,", nil], ["folyton", "a", "macskával", "játszott.", nil], ["Kapott", "egy", "plüsst:", nil, nil], ["\"Inkább", "ezt", "üsd!\"", nil, nil], ["Azt", "hitték,", "arra", "majd", "átszok..."] ]A szövegfájlok: khf2_s0.txt, khf2_s1.txt, khf2_s2.txt, khf2_s3.txt, khf2_s4.txt
DP Admin: dvacakrobotjaitoknakp@iit.bme.hu | Vissza az elejére / Back to the top |