Programozó versenyek

DEIK Regionális Programozó Csapatverseny, középiskolai kategória, 2022. december 4.

2022. december 4. 10:00 – 2022. december 4. 15:15

Hexadoku

A sudoku mesterek egyre nehezebb és nehezebb feladványokat találnak ki önmaguk és barátaik szórakoztatására. A legújabb ötletük az, hogy úgy módosítják az eredeti feladványokat, hogy a hagyományos 9x9-es játék helyett 16x16-os táblát használnak. Egy további nehezítés, hogy egyszerű számok helyett tetszőleges, de előre meghatározott karaktereket tartalmazhat a megoldás.
Azonban egy ilyen feladvány helyességét kézzel értékelni kimondottan nehéz, így a mi feladatunk az, hogy egy olyan programot készítsünk, mely egy kitöltött feladványról megmondja, hogy helyesen történt-e a kitöltése.

Input

  • A bemenet első sora az adott teszteset során felhasználható karaktereket adja meg szóközzel elválasztva.
  • A következő 16 darab sor mindegyike 16 darab, szóközzel elválasztott "bejegyzést" tartalmaz.
    • Megjegyzés: bejegyzés alatt a sudoku egy cellájának értékét értjük, mely egy legalább 1, legfeljebb 5 karakteres string.

Output

A kimenet a VALID szó ha az alábbiak mindegyike teljesül:
  • a sudoku összes bejegyzésében lévő karakter a felhasználható karakterek halmazának eleme;
  • a sudokuban pontosan 16-féle különböző bejegyzés szerepel (az egyes cellákat elválasztó szóközön kívül);
  • a sudoku helyesen van kitöltve, azaz minden sorban, oszlopban és 4x4-es alnégyzetben a 16-féle bejegyzés pontosan egyszer szerepel.
Ellenkező esetben a kimenet az INVALID szó.
Megjegyzés: az alnégyzet definíciója megegyezik a hagyományos sudokuban megismerttel azzal a különbséggel, hogy az oldalhossza a klasszikus 3 helyett most 4.

Megkötések

  • A teljes felhasználható karakterlista elemei a 0,1,...,9 számok, az angol ABC kis- és nagybetűi, illetve a {':', '.', ';', '_'} halmaz elemei lehetnek.
  • Az egyes teszteseknél felhasználható karakterlista a fenti halmaz egy (nem feltétlenül valódi) részhalmaza.
  • sudokui,j egy min. 1, maximum 5 hosszúságú string, melynek elemei a teljes felhasználható karakterlistából kerülnek ki minden 0 ≤ i,j ≤ 15 esetén.

Példa

Input:
  1. 0 1 2 3 4 5 6 7 8 9 A B C D E F a b x y :
  2. 8 F 6 5 12 A 7 D 4 9 C 3 2 B 0 EF29
  3. 12 4 2 3 B C EF29 9 0 6 8 D 5 F 7 A
  4. C 7 A 9 0 4 2 3 B EF29 F 5 6 D 8 12
  5. B 0 D EF29 F 5 8 6 7 A 2 12 4 3 C 9
  6. 2 6 4 7 D 8 9 B C 0 EF29 F 3 A 12 5
  7. 3 9 5 12 6 0 A F 2 8 B 4 C 7 EF29 D
  8. F D 8 0 C 12 3 EF29 5 7 A 9 B 6 4 2
  9. A B EF29 C 2 7 5 4 D 3 12 6 9 0 F 8
  10. D 5 9 4 EF29 3 F 8 12 C 7 A 0 2 6 B
  11. 7 2 B A 9 6 D C EF29 4 0 8 F 12 5 3
  12. 0 C 3 F 4 B 12 A 6 5 D 2 EF29 8 9 7
  13. 6 EF29 12 8 5 2 0 7 9 F 3 B D C A 4
  14. EF29 12 7 6 3 F 4 2 A D 9 C 8 5 B 0
  15. 9 8 0 2 A D 6 5 F B 4 7 12 EF29 3 C
  16. 5 A C D 8 9 B 0 3 12 6 EF29 7 4 2 F
  17. 4 3 F B 7 EF29 C 12 8 2 5 0 A 9 D 6
letöltés szöveges állományként Output:
  1. VALID
  2.     
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2019.03.01.