24 lines
639 B
Plaintext
24 lines
639 B
Plaintext
ClearAll[memory, MemoryGet, MemorySet, MemorySubtract]
|
|
memory = {15, 17, -1, 17, -1, -1, 16, 1, -1, 16, 3, -1, 15, 15, 0,
|
|
0, -1, 72, 101, 108, 108, 111, 44, 32, 119, 111, 114, 108, 100, 33,
|
|
10, 0};
|
|
MemoryGet[addr_] := memory[[addr + 1]]
|
|
MemorySet[addr_, value_] := memory[[addr + 1]] = value
|
|
MemorySubtract[addr1_, addr2_] := MemorySet[addr1, MemoryGet[addr1] - MemoryGet[addr2]]
|
|
p = 0;
|
|
While[p >= 0,
|
|
a = MemoryGet[p];
|
|
b = MemoryGet[p + 1];
|
|
c = MemoryGet[p + 2];
|
|
If[b == -1,
|
|
Print[FromCharacterCode[MemoryGet[a]]]
|
|
,
|
|
MemorySubtract[b, a];
|
|
If[MemoryGet[b] < 1,
|
|
p = MemoryGet[p + 2];
|
|
Continue[]
|
|
]
|
|
];
|
|
p += 3;
|
|
]
|