some progress on hw

This commit is contained in:
aljazbrodar. 2025-11-13 16:50:35 +01:00
parent 83a4e6015a
commit 6033833d97
6 changed files with 170 additions and 1 deletions

BIN
ass1/bonus/a.out Executable file

Binary file not shown.

65
ass1/bonus/dijkstra.asm Normal file
View file

@ -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

View file

@ -0,0 +1,51 @@
#include <vector>
#include <algorithm>
#include <iostream>
#include <queue>
#include <climits>
using namespace std;
void print(vector<int> tab) {
for (int el : tab)
cout << el << " ";
cout << endl;
}
void dijkstra(vector<vector<pair<int, int>>> &adjw, vector<int> &d, vector<int> &prev, vector<int> &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<vector<pair<int, int>>> 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<int> d(n, -1);
vector<int> prev(n, -1);
vector<int> prov(n, -1);
dijkstra(adjw, d, prev, prov, n);
print(d);
print(prev);
}

53
ass1/vaje/stack.asm Normal file
View file

@ -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

View file

@ -67,7 +67,7 @@ num LDX digits_ix
STA len STA len
SUB #1 SUB #1
STA digits_ix STA digits_ix
.izpis v tabele v obratnem vrstnem redu .izpis tabele v obratnem vrstnem redu
loop_num LDX digits_ix loop_num LDX digits_ix
LDCH digits, X LDCH digits, X
ADD #48 .stevke v ascii se zacnejo pri 48 ADD #48 .stevke v ascii se zacnejo pri 48