Pochopenie kodu - Python

Programovacie jazyky, rady, poradňa...
rackom
Medium Star
Medium Star
Príspevky: 307
Registrovaný: 08 aug 2005, 5:37

Pochopenie kodu - Python

Príspevok od používateľa rackom »

zdravim, mam problem. potrebujem pochopit tento zdrojak v Python-e ale v zivote som sa s tym nestretol (veci ako sys.srgv, sys.exit, ...). neviete poradit? potreboval by som to nasledne hodit do C alebo Pascal-u (teda hocicomu co budem rozumit :D) diki moc.
zaggi
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 314
Registrovaný: 04 feb 2007, 19:32

Re: Pochopenie kodu - Python

Príspevok od používateľa zaggi »

rackom napísal:zdravim, mam problem. potrebujem pochopit tento zdrojak v Python-e ale v zivote som sa s tym nestretol (veci ako sys.srgv, sys.exit, ...). neviete poradit? potreboval by som to nasledne hodit do C alebo Pascal-u (teda hocicomu co budem rozumit :D) diki moc.
sys.argv - argumenty v prikazovom riadku
sys.exit - ukoncenie programu

navyse je ten program dost okomentovany na to aby si ho pochopil :)
rackom
Medium Star
Medium Star
Príspevky: 307
Registrovaný: 08 aug 2005, 5:37

Príspevok od používateľa rackom »

hej hej ked som to kukal odvtedy ako som postol sem tak mi je par veci jasnejsich, no stale nechapemtieto veci:

if len(sys.argv) != 2:
- ak je dlzka niecoho rozna od 2, ale coho?

try: g_sqSize = int(sys.argv[1])
print("Usage: " + sys.argv[0] + " <squareSize>") sys.exit(1)
- try funguje ako v C?
- sys.argv je nejake pole?

assert g_board[y][x] == 0
- toto vobec netusim co je :D

to je hadam vsetko comu este nechapem
neutronmind
Expert
Expert
Príspevky: 189
Registrovaný: 05 aug 2008, 14:17

Príspevok od používateľa neutronmind »

sys.argv pravdepodobne predstavuje pocet argumentov prikazoveho riadku, ked vypisujes napr. sys.argv[0], tak je to prvy argument. :)

//chrono: hej, mas pravdu :roll:
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

neutronmind napísal:...
sys.argv[0]Je názov spúšťaného programu (parametre sú číslované až od 1).

rackom napísal:if len(sys.argv) != 2:
- ak je dlzka niecoho rozna od 2, ale coho?
Prečítaj si niečo o module sys http://docs.python.org/library/sys.html
rackom napísal:try: g_sqSize = int(sys.argv[1])
print("Usage: " + sys.argv[0] + " <squareSize>") sys.exit(1)
- try funguje ako v C?
Skôr ako v C++. http://docs.python.org/reference/compou ... -statement
rackom napísal:- sys.argv je nejake pole?
Prečítaj si niečo o module sys http://docs.python.org/library/sys.html
rackom napísal:assert g_board[y][x] == 0
- toto vobec netusim co je :D
Je to v podstate to isté, čo v C, C++... http://docs.python.org/reference/simple ... -statement
rackom
Medium Star
Medium Star
Príspevky: 307
Registrovaný: 08 aug 2005, 5:37

Príspevok od používateľa rackom »

ok tak som si to prepisal do pascalu ale nejde mi to ... dufam ze to je dobre ... teda neviem ci to ide lebo to robi strasne dlho aj pre 4x4 :D na konci som si pridal sam dva vnorene cykly koli tomu aby zacal vzdy od ineho miesta ak sa vrati ... kazdopadne som to skusal aj backtracking-om ale ani tym mi to nejde, lebo by som si musel pametat vsetky chybne tahy dozadu, co sa mi zatial nechcelo a hladal som ine riesenie :D

pozn: ide o to prejst s konom po sachovnici kazde pole prave 1x.
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Nemám po ruke Pascal, takže som s tým nerobil nič, ale ten algoritmus je dosť jednoduchý.
Funguje ti aspoň hľadanie keď je začiatok v 1,1?
Vo funkcii Fill by si mal vykonávanie ukončiť, ak je na tom mieste niečo iné ako 0 (v tom prípade tam ten kráľ už bol a teda to nie je správne riešenie).
rackom
Medium Star
Medium Star
Príspevky: 307
Registrovaný: 08 aug 2005, 5:37

Príspevok od používateľa rackom »

ako nahle pride do nerekurzivnej vetvy tak by to malo skoncit ... ano vyzera to jednoducho ale asi som niekde spravil chybu v prepise a neviem si ju najst :D
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Práve som si tam všimol dve chyby:
Jedna je vo funkcii jePrazdna (máš tam sach[x,y] a predpokladám, že si to chcel sach[y,x]).
Druhá je fo funkcii Fill. Podmienka else sach[y,x]:=0; sa nemá vykonávať vtedy, keď funkcia jePrazdna vráti false. Má sa to nastaviť na nulu vždy pri ukončovaní tej rekurzie (teda až za tým for).
rackom
Medium Star
Medium Star
Príspevky: 307
Registrovaný: 08 aug 2005, 5:37

Príspevok od používateľa rackom »

okej opravil som to, hej malo byt y,x nie x,y ... a to druhe so mtiez zmenil ... pri poli 4x4 mi dalo nema riesenie a pri 5x5 o robi stale ... bude tam niekde problem ze nevracia tah ... stale tam blikaju cisla n^2 ... cize pri 4 stale 16 a tak ... cize ono sa nevracia ... len neviem v com to bude
Napísať odpoveď