Programozó versenyek

Magas szintű programozási nyelvek 2, 2015. december 21., H14 ZH

2015. december 21. 14:15 – 2015. december 21. 18:00

Csigavonalban 2

Í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 bal alsó sarkából elindulva először a mátrix első oszlopát járjuk végig, majd elérve az oszlop tetejét, jobbra fordulunk, és végigjárjuk az első sort. A jobb szélső cella elérésekor újra jobbra fordulunk, és végigjárjuk az utolsó oszlopot az utolsó sor felé haladva. Elérve a mátrix jobb alsó celláját, újabb jobbkanyarral már az utolsó sor elemei következnek, egészen addig, míg el nem érjük a kiindulópontot (a bal alsó sarkot). Ekkor azonban egy újabb jobbra kanyarodással elindulunk az eddig még be nem járt terület bal 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 bal felső (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. 4 5 6
  2. 3 12 7
  3. 2 11 8
  4. 1 10 9
  5. 7 8 9 10 11 12 13 14
  6. 6 31 32 33 34 35 36 15
  7. 5 30 47 48 49 50 37 16
  8. 4 29 46 55 56 51 38 17
  9. 3 28 45 54 53 52 39 18
  10. 2 27 44 43 42 41 40 19
  11. 1 26 25 24 23 22 21 20
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2019.03.01.