Középiskolai Matematikai és Fizikai Lapok
Informatika rovattal
Kiadja a MATFUND Alapítvány
Már regisztráltál?
Új vendég vagy?

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