Az I. 328. feladat (2013. október) |
I. 328. Egy bűntény felderítése során a detektív sorra hallgatja ki a tanúkat. A detektív segítőjeként az a feladatunk, hogy megállapítsuk, van-e a kijelentések között ellentmondás.
A feladat megoldásához programot készítünk, amelynek természetesen nem mondatokat, hanem az angol ábécé első 10 betűjéből és logikai műveletekből álló kifejezéseket kell feldolgoznia. A logikai kifejezés leírása során a nem, az és, a vagy és az implikáció műveleteket használjuk, amelyeket rendre a ., &, |, > karakterekkel jelöljük. A műveletek végrehajtási sorrendje a matematikában és informatikában szokásos, melyet zárójelezéssel módosíthatunk.
A bemeneti fájlban soronként egy-egy kifejezés van, mindegyik valamelyik tanú által mondott igaz állítás. A kimeneti fájl első sorában annak a sornak a száma van, amelyben szereplő kijelentés ellentmondásban van a korábbiakkal. Ha nincs ellentmondás, az első sorba a 0 kerül.
A program első parancssori argumentuma a bemeneti fájl neve, a második paraméter pedig a kimeneti fájl neve legyen.
Beküldendő a program forráskódja (i328.pas, i328.cpp, ...), valamint a program rövid dokumentációja (i328.txt, i328.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ő 2013. november 11-én LEJÁRT.
A beküldők ötféle nyelven dolgoztak, 4 FreePascal, 3 C++, 2 Java, 1-1 C# és VB nyelven született megoldás érkezett.
Többen alkalmazták azt a kézenfekvő módszert, hogy az elvileg lehetséges 1024 esetet (10 szabad változó szerepelhetett legfeljebb) érdemes megvizsgálni. A vizsgált állítások halmazát egyenként bővítve, ha már nincs olyan eset, amelynél minden állítás igaz, akkor megtaláltuk az ellentmondást adó állítást, amelynek a sorszámát a kimenetbe ki kell írni.
Két, minden tesztesetre helyes kimenetet adó megoldást közlünk, az egyik Fényes Balázsé ( i328fenyes.cs), a másik pedig Uzonyi Ákosé (I328uzonyi.java)
A legjobban sikerült dokumentáció Kovács Balázs Marcellé volt. ( i328.txt) Ez utóbbit azért emelem ki, mert a beküldők fele nem csatolt érdemi dokumentációt munkájához. Hasonlóképp többen elfeledkeztek arról, hogy a bemeneti fájl nevét parancssori argumentumból kell olvasni.
Az értékelés kapcsán használt tesztesetek (i328teszt.zip), amelyben 6 tesztesetcsoport található. A pontok teszesetcsoportonként jártak. Emellett a dokumentáció 2 pontot ér, a be- és kimeneti fájlkokat feladatszövegnek megfelelő módon kezelő programért járt még 1 pont. Aki válaszainak többsége jó volt, még egy pontot kap.
Statisztika:
11 dolgozat érkezett. 10 pontot kapott: Csernák Tamás, Fényes Balázs, Uzonyi 000 Ákos. 9 pontot kapott: Kovács Balázs Marcell. 5 pontot kapott: 1 versenyző. 3 pontot kapott: 1 versenyző. 2 pontot kapott: 2 versenyző. 1 pontot kapott: 3 versenyző.
A KöMaL 2013. októberi informatika feladatai