checkpoint hw bonus

This commit is contained in:
aljazbrodar. 2025-11-14 16:16:51 +01:00
parent 6033833d97
commit a0a6fc7a5e

View file

@ -1,47 +1,56 @@
DIJKSTRA START 0 DIJKSTRA START 0
.zacetna inicializacija .zacetna inicializacija, d=0
LDA #0 LDA #0
STA RAZDALJE, START STA RAZDALJE, START
STA PROV, START STA PROV, START
.zacetno vozlisce nima predhodnika
LDA #-1 LDA #-1
STA PREV, START STA PREV, START
WHILE LDS #-1 .neskoncna while zanka
LDX #0 WHILE LDS #-1 . S = -1, hrani vozlisce ki imam min razdaljo v okolici
FOR1 LDA PROV, X LDX #0 . stevec = 0
CMP #0 FOR1 LDA PROV, X . nalozi potencialno razdaljo sosednjega vozlisca v okolici
JLT NEXT
RMO S, A
CMP #-1 CMP #-1
JEQ SET JEQ NEXT . ce ze obiskano=-2 ali neobiskano=-1 preskoci vozlisce
STA old_X CMP #-2
LDA PROV, X
RMO A, T
RMO S, X
LDA PROV, X
LDX old_X
COMPR A, T . A-> PROV[Y] T -> PROV[X]
JGT NEXT
JEQ NEXT JEQ NEXT
SET RMO X, S RMO S, A . sicer S v A
CMP #-1 . ce S se ni nastavljen ga nastavi prvic
JEQ SET
STA old_X . sicer poglej ali ima trenutno vozl. manjso pot. razdaljo prov[X] < prov[S]
LDA PROV, X . nalozi p. razdaljo tren. vozl.
RMO A, T . shrani jo v T reg.
RMO S, X . premakni trenutni ix min. vozl. v X za ix naslavljanje
LDA PROV, X . nalozi trenutno min razdaljo
LDX old_X . obnovi X, vrednost stevca zanke FOR1
COMPR A, T . primerjaj vrednosti tj. ce razdalja ni krajsa preskoci, sicer SET
JEQ NEXT
JGT NEXT
SET RMO X, S . S nastavi na ix vozlisca - trenutna iteracija
NEXT CLEAR T
TIX INPUT_V
J FOR1
. ce ni vec vozlisc v okolici koncaj
RMO S, A RMO S, A
COMP #-1 CMP #-1
JEQ HALT JEQ HALT
.sicer p. razdaljo shrani kot dejansko in oznaci vozlisce kot obiskano
RMO S, X RMO S, X
LDA PROV, X
STA D, X STA D, X
LDA #-2 LDA #-2
STA PROV, X STA PROV, X
.nato dodaj vozlisca v okolico oz. posodobi razdalje obstojecih vozlisc v okolici
LDX #0 LDX #0
FOR2 FOR2 LDA INPUT_X, X
COMPR A, S
TIX INPUT_E JGT NEXT2
JLT FOR2 JLT NEXT2
NEXT TIX INPUT_V
J FOR1 NEXT2 TIX INPUT_V
J FOR2
. J ZA WHILE?!
HALT J HALT HALT J HALT
END DIJKSTRA END DIJKSTRA