some progress on hw
This commit is contained in:
parent
83a4e6015a
commit
6033833d97
6 changed files with 170 additions and 1 deletions
BIN
ass1/bonus/a.out
Executable file
BIN
ass1/bonus/a.out
Executable file
Binary file not shown.
65
ass1/bonus/dijkstra.asm
Normal file
65
ass1/bonus/dijkstra.asm
Normal 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
|
||||||
51
ass1/bonus/dijkstra_osnova.cpp
Normal file
51
ass1/bonus/dijkstra_osnova.cpp
Normal 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
53
ass1/vaje/stack.asm
Normal 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
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue