C# ütközés játéktábla feladat hogyan lehetséges lista,linq nélkül ?
Egy játéktáblán a 0. időegységben L bábu van. Mindegyiket elindítjuk valamerre. Egy
időegység alatt mindegyik a neki megfelelő távolságra mozdul el, a tábla szélére érve
megállnak. Lehetséges, hogy előbb-utóbb két bábu összeütközik: ugyanarra a helyre lépnének
vagy átlépnének egymáson.
Készítsen programot, amely megadja, hogy K időegységen belül mikor ütközik legelőször
két bábu!
A tabla.be szöveges állomány első sorában a játéktábla sorai és oszlopai száma
(1N,M100), a bábuk száma (1L10) és az időtartam (1K100 000) van, egyetlen
szóközzel elválasztva. A következő L sor egy-egy bábu leírását tartalmazza: a kezdő helyét
(1SiN, 1OiM) és mozgás irányát (Xi
,{F,L,J,B} – fel, le, jobbra, balra), egy-egy
szóközzel elválasztva.
A tabla.ki szöveges állomány egyetlen sorába az első ütközés időpontját kell írni! Ha
K időegységen belül nincs ütközés, akkor -1-et kell kiírni!
Példa:
tabla.be tabla.ki
7 10 3 100 3
4 3 J
2 6 F
4 8 B
Magyarázat: A bábuk helyzete időegységenként:
1: (4,4), (1,6), (4,7)
2: (4,5), (1,6), (4,6)
3: (4,6), (1,6), (4,5)
A 3. időegységre az 1-es és a 3-as bábu egymáson átlépett volna, azaz a 3.
időegységben ütköztek.
Fontos hogy listát,linq nem lehet használni és kezdőként nehéz feladat számomra.Előre is köszönöm a segítségeket.
Egy babu egy idoegyseg alatt mindig csak 1 cellat lep?
Illetve ha nem valtoztathatnak iranyt, akkor mi ertelme van k > max(n, m)-nek? Max 99 idoegyseg utan egy helyben fog allni mindegyik.
#4: Szerintem te nagyon túlbonyolítod, azért ehhez nem kell gráfot építeni.
Elég egy (vagy pár) sima N*M-es tömb (tekintve, hogy N és M elég kicsi, max 100)
Az adott helyeken pedig van egy struktúra amiben benne van a bábu sorszáma és iránya. Vagy ha úgy tetszik, akkor 2 ilyen tömböd van, egyik a sorszámokat tartalmazza, másik az irányokat. Kb tökmindegy, bár az utóbbi esetben valószínűleg valamivel (de nem számottevőem) lassab programot tudsz írni.
Igazából az a kérdés, hogy mi van akkor, ha pl az egyik bábu jobbra, másik lefelé lép és a jobbra lépő oda lépne ahol a lefelé lépő kezdetben áll:
(1,1), (1,2)
(1,2), (2,1)
Ekkor az (1,2) mezőn ideiglenesen, részben egyszerre vannak. Ha ez határozatlan (elfogadják ütközésnek is és nem ütkötésnek is), akkor nagyon egyszerű a feladat, hiszen csak sorban a bábukat át kell rakni az új helyre és megnézni, hogy van-e már ott valami amikor éppen lép.
Ha ez meg van határozva (akármelyik módon), akkor egy picikét bonyolultabb, de még így simán megoldható :)
Kérdező vagyok.
Nem azért írtam ide a kérdést hogy valaki a komplett programot ide írja.Inkább a feladat megértéséhez kellene segítség,miként kéne felépíteni a feladatot.Lista,Linq függvények,Tömb rendezési algoritmusokat nem lehet használni.Ezek helyett programozási tételek használata megengedett.Köszönöm az eddigi segítségeket
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!