Programozó versenyek

Informatikai versenyfeladatok, 2014/2015/1

2014. szeptember 16. 16:00 – 2014. december 21. 20:00

Ősi üzenetek

A korai civilizációk megértése érdekében az archeológusok gyakran tanulmányoznak ősi nyelveken íródott szövegeket. Az egyik ilyen nyelv, amelyet Egyiptomban használtak több mint 3000 évvel ezelőtt, hieroglifáknak nevezett karaktereken alapul. Az 1. ábra hat hieroglifát mutat be a nevükkel együtt. Ebben a feladatban egy olyan programot kell írnod, amely képes felismerni ezt a hat karaktert.


1. ábra: Hat hieroglifa

A bemenet specifikációja

A bemenet számos tesztesetet tartalmaz. A tesztesetek mindegyike egy olyan képet ír le, amelyen az 1. ábrán látható hieroglifák közül szerepel egy vagy több. A kép (1-essel reprezentált) fekete és (0-val reprezentált) fehér pixelekből álló vízszintes sorok sorozataként lesz megadva. A bemeneten minden sor hexadecimális jelöléssel lesz kódolva. A nyolc pixelből álló 10011100 sorozat (egy fekete pixel, majd két fehér pixel stb.) például hexadecimális jelöléssel 9c lesz. A hexadecimális kódban csak számjegyek és kisbetűk szerepelnek a-tól f-ig. Minden teszteset első sora két egész számot tartalmaz: H-t és W-t. H (0 < H ≤ 200) a kép sorainak a száma, míg W (0 < W ≤ 50) az egyes sorokban szereplő hexadecimális karakterek száma. A következő H sor a kép hexadecimális karaktereit adja meg felülről lefelé haladva. A bemeneten megadott képek megfelelnek a következő szabályoknak:

  • A kép csak az 1. ábrán látható hieroglifákat tartalmaz.
  • Minden képen szerepel legalább egy szabályos hieroglifa.
  • A kép mindegyik fekete pixele egy szabályos hieroglifa része.
  • Minden hieroglifát fekete pixelek összefüggő sorozata ad meg, és minden fekete pixel felső, alsó, bal vagy jobb oldalán legalább egy másik fekete pixel van.
  • A hieroglifák nem érintik egymást, és egyik hieroglifa sincs egy másik belsejében.
  • Két, egymást átlósan érintő fekete pixelhez mindig tartozik egy közösen érintett fekete pixel.
  • A hieroglifák lehetnek ugyan torzítottak, de mindegyiknek olyan alakja van, amely topologikusan ekvivalens az 1. ábrán látható valamelyik szimbólummal. (Két alakzat topologikusan ekvivalens, ha átvihetők egymásba nyújtással, de vágás nélkül.)

Az utolsó tesztesetet egy olyan sor követi, amely két nullát tartalmaz.

A kimenet specifikációja

Minden tesztesetre a teszteset sorszámát követően egy olyan sztringet kell a kimenetre írni, amely a képen felismert minden hieroglifához egyetlen karaktert tartalmaz az alábbi kódolás szerint:

Ankh: A
Wedjat: J
Djed: D
Scarab: S
Was: W
Akhet: K

A kimeneti sztringekben a kódokat alfabetikus sorrendben kell megadni. Kövesd a példa kimenet formátumát!

A példa bemenet a 2. és 3. ábrán látható tesztesetek leírásait tartalmazza. Hely hiányában nem adjuk meg a példa bemenet összes sorát.


2. és 3. ábra: A példa bemenet tesztesetei

Példa bemenet

  1. 100 25
  2. 0000000000000000000000000
  3. 0000000000000000000000000
  4. ...(50 lines omitted)...
  5. 00001fe0000000000007c0000
  6. 00003fe0000000000007c0000
  7. ...(44 lines omitted)...
  8. 0000000000000000000000000
  9. 0000000000000000000000000
  10. 150 38
  11. 00000000000000000000000000000000000000
  12. 00000000000000000000000000000000000000
  13. ...(75 lines omitted)...
  14. 0000000003fffffffffffffffff00000000000
  15. 0000000003fffffffffffffffff00000000000
  16. ...(69 lines omitted)...
  17. 00000000000000000000000000000000000000
  18. 00000000000000000000000000000000000000
  19. 0 0
letöltés szöveges állományként

A példa bemenethez tartozó kimenet

  1. Case 1: AKW
  2. Case 2: AAAAA
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2019.03.01.