diff --git a/ass1/bonus/a.out b/ass1/bonus/a.out new file mode 100755 index 0000000..1c5668f Binary files /dev/null and b/ass1/bonus/a.out differ diff --git a/ass1/bonus/dijkstra.asm b/ass1/bonus/dijkstra.asm new file mode 100644 index 0000000..f55cad6 --- /dev/null +++ b/ass1/bonus/dijkstra.asm @@ -0,0 +1,65 @@ +DIJKSTRA START 0 + .zacetna inicializacija + LDA #0 + STA RAZDALJE, START + STA PROV, START + LDA #-1 + STA PREV, START +WHILE LDS #-1 + LDX #0 +FOR1 LDA PROV, X + CMP #0 + JLT NEXT + RMO S, A + CMP #-1 + JEQ SET + STA old_X + 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 +SET RMO X, S + + RMO S, A + COMP #-1 + JEQ HALT + + RMO S, X + LDA PROV, X + STA D, X + LDA #-2 + STA PROV, X + + LDX #0 +FOR2 + + TIX INPUT_E + JLT FOR2 + +NEXT TIX INPUT_V + J FOR1 +HALT J HALT + END DIJKSTRA + + +.vhodni parametri +INPUT_V = 9 +INPUT_E = 16 +INPUT_X RESW 100 +INPUT_Y RESW 100 +INPUT_W RESW 100 + +.pomozne spremenljivke +old_X RESW 1 +.najkrajse razdalje +D RESW 9 +.prejsnje vozlisce +PREV RESW 9 +.provisional razdalje (okolica), -2 = done, -1 neobiskan +PROV RESW 9 +.indeks zacetnega vozlisca +START WORD 0 diff --git a/ass1/bonus/dijkstra_osnova.cpp b/ass1/bonus/dijkstra_osnova.cpp new file mode 100644 index 0000000..15638cd --- /dev/null +++ b/ass1/bonus/dijkstra_osnova.cpp @@ -0,0 +1,51 @@ +#include +#include +#include +#include +#include +using namespace std; + +void print(vector tab) { + for (int el : tab) + cout << el << " "; + cout << endl; +} + +void dijkstra(vector>> &adjw, vector &d, vector &prev, vector &prov, int n) { + int start = 0; + prov[start] = 0; + d[start] = 0; + prev[start] = -1; + while (1) { + int x = -1; + for (int y = 0; y < n; y++) { + if (prov[y] > -1) { + if (x == -1 || prov[y] < prov[x]) { + x = y; + } + } + } + if (x == -1) + break; + d[x] = prov[x]; + prov[x] = -2; + for (auto[y, w] : adjw[x]) { + if (prov[y] == -1 || prov[y] > -1 && d[x] + w < prov[y]) { + prov[y] = d[x] + w; + prev[y] = x; + } + } + } +} + +int main() { + vector>> adjw = {{{1, 8}, {2, 12}}, {{2, 13}, {3, 25}}, {{6, 21}, {3, 14}}, {{6, 12}, {8, 16}, {7, 12}, {5, 8}, {4, 20}}, {{1, 9}, {5, 19}}, {{7, 11}}, {{8, 11}}, {{8, 9}}, {}}; + int n = adjw.size(); + vector d(n, -1); + vector prev(n, -1); + vector prov(n, -1); + dijkstra(adjw, d, prev, prov, n); + print(d); + print(prev); +} + diff --git a/ass1/bonus/shannon_tree.asm b/ass1/bonus/shannon_tree.asm deleted file mode 100644 index e69de29..0000000 diff --git a/ass1/vaje/stack.asm b/ass1/vaje/stack.asm new file mode 100644 index 0000000..7ee11c9 --- /dev/null +++ b/ass1/vaje/stack.asm @@ -0,0 +1,53 @@ +prog START 0 + +JSUB stackinit + + LDA #5 + +STA @stackptr + JSUB stackpush + + LDA #6 + +STA @stackptr + JSUB stackpush + + JSUB stackpop + +LDA @stackptr + + JSUB stackpop + +LDA @stackptr + +HALT J HALT + END prog + +stackinit STA oldvalue + CLEAR A + LDA #stack + STA stackptr + CLEAR A + LDA oldvalue + RSUB + +stackpush STA oldvalue + CLEAR A + LDA stackptr + ADD #3 + STA stackptr + CLEAR A + LDA oldvalue + RSUB + +stackpop STA oldvalue + CLEAR A + LDA stackptr + SUB #3 + STA stackptr + RSUB + +exit JSUB stackpop + +LDB @stackptr + JSUB stackpop + +LDL @stackptr + RSUB + +oldvalue WORD 0 +stackptr WORD 0 +stack RESW 1000 diff --git a/vaja2/vhod_izhod/echo.asm b/vaja2/vhod_izhod/echo.asm index 743684d..193d922 100644 --- a/vaja2/vhod_izhod/echo.asm +++ b/vaja2/vhod_izhod/echo.asm @@ -67,7 +67,7 @@ num LDX digits_ix STA len SUB #1 STA digits_ix - .izpis v tabele v obratnem vrstnem redu + .izpis tabele v obratnem vrstnem redu loop_num LDX digits_ix LDCH digits, X ADD #48 .stevke v ascii se zacnejo pri 48