XLIV, 5. aprill 1997. a. Lõppvooru noorema rühma ülesanded 1. DIOFANTILINE VÕRRAND (30 p.) Leida võrrandi Ax+By=C mingi täisarvuline lahend, kus A, B ja C on täisarvud. Sisendandmed : tekstifaili ainsal real on kolm täisarvu, vastavalt A, B ja C. Näide (fail DIO2.DAT : 3 4 5 Õigeid vastuseid : x=3, y=-1 x=-1, y=2 2. ISEJOONISTAJA (30 p.) Seade nimega ISEJOONISTAJA on mõeldud värviliste kujutiste joonistamiseks tasapinnalisele paberile, kasutades spetsiaalsete juhtmehhanismidega varustatud pliiatseid. Iga joonise tegemiseks tuleb kirjutada programm. Seadme tööpiirkond koosneb punktidest täisarvuliste koordinaatidega (0,0) ... (N,N) kus arv N (N≤ 1000) määratakse programmis. Seadmel on 100 erinevat pliiatsit, millest antud joonise jaoks kasutatavate pliiatsite arv M määratakse samuti programmis. Iga pliiatsi juhtimiseks on programmis string, mis koosneb tähtedest D,U,N,W,S,E,P ja numbritest. Tähed tähistavad järgmisi käske, millest igaühe täitmine kestab joonistaja ühe töötakti: U - tõsta pliiats üles, D - langetada pliiats paberile, N - samm põhja suunas (teine koordinaat suureneb 1 võrra), S - samm lõuna suunas (teine koodinaat väheneb), W - samm lääne suunas (esimene koordinaat väheneb), E - samm ida suunas (esimene koordinaat suureneb), P - paigalseis Täisarv käsu järel tähendab selle täitmist vastav arv kordi: P1 on sama, mis P; P10 sama, mis PPPPPPPPPP. U ja D korduv täitmine on lubatud. Kui mingi pliiatsi juhtimise programm lõpeb, jääb pliiats joonistamise lõpuni paigale. Pliiatsi tööpiirkonnast väljaviimine pole võimalik ja vastav käsk katkestab joonise tegemise. Kõiki M pliiatsi juhtimise programmi täidetakse üheaegselt ja ükski pliiats ei tohi segada teiste pliiatsite juhtniite. Punkt, kus pliiats viibib, ning horisontaal- ja vertikaalread, mis seda punkti läbivad, on hõivatud ning seal ei tohi asuda sellel ajahetkel ühtegi teist pliiatsit. Kui pliiats liigub mingi sammu sooritamise jooksul ühest ruudust teise, siis loetakse ta selle sammu jooksul mõlemas ruudus viibivaks. Sisendfaili esimesel real paiknevad arvud N ja M. Järgmised M rida kirjeldavad pliiatsite tööd, andes tühikutega eraldatuna pliiatsi koordinaadid töö alustamise momendil ja selle pliiatsi juhtimise programmi. Kui programmi täitmine on võimalik, siis anda vastus OK. Kui ei ole, siis näidata esimene samm, millel tekib viga, ja (ühe) konflikti põhjustanud pliiats(id). Näited : Fail JOONIS1.DAT
100 3 Vastus: 12 1 2 Fail JOONIS2.DAT
100 2 Vastus: OK 3. FAILINIMED OPERATSIOONISÜSTEEMIS SOS (40 p.) Operatsioonisüsteemis Super OS (SOS) kasutatakse failinimesid, mis koosnevad ladina tähtedest, numbritest ja kirjavahemärkidest ning on pikkusega 1 kuni 32 märki . Suur- ja väiketähed loetakse erinevateks. Keelatud sümboliteks on tühik, tärn ( * ) ja küsimärk ( ? ). Programmidele failinimede etteandmisel kasutatakse avaldisi pikkusega 1 kuni 32 märki. Avaldises võib kasutada lisaks failinimedes lubatud sümbolitele ka metasümboleid ( * ja ? ), kusjuures ? tähistab täpselt ühte ja * tähistab suvalist mittenegatiivset arvu suvalisi lubatud sümboleid. Sisendfaili esimesel real on failinimi ja teisel real avaldis. Programmi ülesandeks on sobitada failinimi avaldisega. Kui see on võimalik, siis väljastada ekraanile sisendandmete kõrvale alates 40. positsioonist üks lahend: esimesele reale failinimi ja teisele reale failinime vastavate sümbolite alla avaldise küsimärgid ja lubatud sümbolid, jättes tärnid väljastamata. Kui sobitamine pole võimalik, siis teatada EI SOBI. Sisendi ja väljundi näited Fail SOS1.DAT Väljund autoexec.bat autoexec.bat *ex?c* ex?c Fail SOS2.DAT Väljund motoexec.mat motoexec.mat exe*c*at exec at Fail SOS3.DAT Väljund motoexec.mat EI SOBI exe?c*at |