3. naloga

Pletenje puloverja


Neža se je med karanteno lotila novega konjička. Naučila se je plesti. Nekaj preglavic pa ji povzročajo sheme za pletenje vzorcev. V knjigah so pogosto narisane velike sheme, na primer:

---0-0---0-0---0-0---0-0---0-0
---000---000---000---000---000
---0-0---0-0---0-0---0-0---0-0
---000---000---000---000---000
---0-0---0-0---0-0---0-0---0-0
---000---000---000---000---000
---0-0---0-0---0-0---0-0---0-0
---000---000---000---000---000

Zgornja shema predstavlja osnovni vzorec

---0-0
---000


Neža je hitro ugotovila, da si mora pri pletenju izdelka zapomniti oziroma zapisati le osnovni vzorec in ne celotne velike sheme iz knjige. Prosi te, da napišeš program ali podprogram (funkcijo), ki v poljubni dani shemi poišče osnovni vzorec. Osnovni vzorec je najmanjši (po površini) tak vzorec, iz katerega lahko s ponavljanjem sestavimo celotno shemo (pri čemer se mora vzorec lepo zaključiti na vseh robovih sheme). Program naj izpiše širino in višino osnovnega vzorca. Za primer zgoraj je rešitev 6 2. Če je možnih več enako dobrih rešitev, je vseeno, katero od njih izpišeš. Shemo lahko tvoj program prebere iz datoteke ali s standardnega vhoda ali pa predpostavi, da je že podana v neki tabeli ali seznamu nizov (ali dvodimenzionalni tabeli znakov). Shemo sestavljajo le znaki „-“ in „0“.