Programozó versenyek

Magas szintű programozási nyelvek 2, 2016. január 5., K14 ZH

2016. január 5. 14:05 – 2016. január 5. 17:35

Csigavonalban 4

Írjon egy programot, amely első parancssori argumentumaként megkapja egy szöveges állomány nevét (elérési útját)! Az állomány soraiban pozitív egész számpárok vannak, a két számot egymástól pontosan egy szóköz karakter választja el egymástól. A két szám egy mátrix sorainak (1 ≤ n ≤ 30) és oszlopainak (1 ≤ m ≤ 30) a számát adja meg, ebben a sorrendben.

Az ön feladata annak meghatározása, hogy egy tetszőleges n × m-es mátrix csigavonalban történő bejárása során az elemeket milyen sorrendben érintjük. A mátrix jobb alsó sarkából elindulva először a mátrix utolsó oszlopát járjuk végig, majd elérve az oszlop tetejét, balra fordulunk, és végigjárjuk az első sort. A bal szélső cella elérésekor újra balra fordulunk, és végigjárjuk az első oszlopot az utolsó sor felé haladva. Elérve a mátrix bal alsó celláját, újabb balkanyarral már az utolsó sor elemei következnek, egészen addig, míg el nem érjük a kiindulópontot (a jobb alsó sarkot). Ekkor azonban egy újabb balra kanyarodással elindulunk az eddig még be nem járt terület jobb szélső oszlopában, és az előzőekben leírtakat ismételgetve ezt mindaddig csináljuk, amíg a mátrix összes celláját nem érintettük.

A mátrix bejárását a standard kimeneten kell megjeleníteni. Minden mátrix esetén n + 1 sort kell a kimenetre írni. Az első n sor mindegyikében m darab számnak kell szerepelnie, a számok közé pontosan egy darab szóköz karaktert írva. A sorok utolsó száma után nem állhat szóköz karakter, azt a sort lezáró soremelés karakternek kell követnie. A kiírt számok az egyes cellák elérésének a sorrendjét kell, hogy meghatározzák. A jobb alsó (kiindulási) cella értéke 1-es legyen! Az (n + 1). sorba semmit sem kell írni, az egy üres sor legyen!

Példa állomány (sample.txt)

  1. 4 3
  2. 7 8
letöltés szöveges állományként

Parancssori argumentumok

  1. sample.txt
letöltés szöveges állományként

A futtatás eredménye a standard kimeneten

  1. 6 5 4
  2. 7 12 3
  3. 8 11 2
  4. 9 10 1
  5. 14 13 12 11 10 9 8 7
  6. 15 36 35 34 33 32 31 6
  7. 16 37 50 49 48 47 30 5
  8. 17 38 51 56 55 46 29 4
  9. 18 39 52 53 54 45 28 3
  10. 19 40 41 42 43 44 27 2
  11. 20 21 22 23 24 25 26 1
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2019.03.01.