Az I. 373. feladat (2015. április) |
I. 373. A szöveg formázásának hatékony módja a stílusok alkalmazása. Használatuk esetén az egyes szövegegységek jellemzőit nem egyenként, hanem a hozzájuk rendelt stílusok segítségével állítjuk be. A legtöbb programban a stílusok nem önállóan létező elemek, hanem fastruktúrába rendezhetők. Egy szövegegység adott tulajdonságát a helyben, egyedileg megadott érték határozza meg. Ha az hiányzik, akkor a hozzárendelt stílusban vagy a struktúrában a felette levő stílusok közül a hozzá legközelebbiben szereplő beállítás a meghatározó.
A feladatban a fentiek leegyszerűsített modelljével dolgozunk: a szövegegységek bekezdések, a tulajdonságaik pozitív egészek. Készítsünk programot i373 néven, amely a stílusok leírását a lehető legtömörebbé alakítja, az egyes szövegrészek tényleges jellemzőit pedig meghatározza.
A bemeneti fájl két részből áll. Az első rész első sora a tárolt stílusok \(\displaystyle s\) száma. A következő \(\displaystyle s\) sor egy-egy stílus leírását tartalmazza. Az első karakter a stílus neve (az angol ábécé nagybetűje), a következő a struktúrában felette lévő stílus neve (a fa csúcsa esetén önmaga), majd a tulajdonság-érték párosok (az angol ábécé kisbetűje-pozitív szám). Az értékeket pontosan egy szóköz választja el. A következő sorban a szöveg bekezdéseinek \(\displaystyle b\) száma található, amely legfeljebb 500 lehet. A következő \(\displaystyle b\) sorban egy-egy bekezdés leírása található. Az első karakter az alkalmazott stílus neve, majd a bekezdésben egyedileg érvényes tulajdonság-érték párosok olvashatók az előző részhez hasonló formában.
A kimeneti fájl szerkezete pontosan egyezik a bemeneti fájl szerkezetével. Az első rész tartalmazza az egyszerűsített stílusokat, ahol azok a tulajdonságok nem jelennek meg, amelyek nem módosítják a struktúrában felettük lévő stílusokban beállított értékeket. A második részben az egyes bekezdésekben ténylegesen érvényre jutó tulajdonságok jelenjenek meg.
A program első parancssori argumentuma a bemeneti fájl neve, a második pedig a kimeneti fájl neve legyen.
Beküldendő egy tömörített i373.zip állományban a program forráskódja (i373.pas, i373.cpp, ...), valamint a program rövid dokumentációja (i373.txt, i373.pdf, ...), amely tartalmazza a megoldás rövid leírását, és megadja, hogy a forrásállomány melyik fejlesztő környezetben fordítható.
(10 pont)
A beküldési határidő 2015. május 11-én LEJÁRT.
A feladatban egy egyszerű fagráffal, a stílusok gráfjával kellett dolgozni.
A kimeneti fájl első részének meghatározásánál az aktuális stílustól indulva a gyökér felé kellett lépdelni, majd út közben a saját tulajdonságok közül azokat elhagyni, amelyek legközelebbi előfordulásának értéke egyezik a saját értékkel.
A kimeneti fájl második részében pedig az egyes tulajdonságok első fordulásának értékét kellett bejegyezni.
Az első 6 teszteset 1-1 pontot ér, az utolsó pedig kettőt. Az egyes tesztesetekre a pontszám felét meg lehetett szerezni akkor is, ha a kimenetnek csak az egyik fele volt helyes. i373teszt.zip
A beküldők közül Mócsy Miklós megoldása állította elő a helyes megoldást minden tesztesetre. i373Mocsy.cpp
Statisztika:
9 dolgozat érkezett. 10 pontot kapott: Mócsy Miklós. 7 pontot kapott: 1 versenyző. 6 pontot kapott: 2 versenyző. 5 pontot kapott: 1 versenyző. 4 pontot kapott: 1 versenyző. 2 pontot kapott: 2 versenyző. 0 pontot kapott: 1 versenyző.
A KöMaL 2015. áprilisi informatika feladatai