@wytrzzeszcz: teoretycznie nie mamy zdefiniowanej stałej MAX_VAR :D i nie ma podanej wielkosci bitowej zmiennej, ale plus za przekręcanie licznika :P chcoiaz ze jak by to było assembly to by poleciał wyjątek z procka
@wytrzzeszcz: powiem szczerze, że nie wiem. Ostatni raz jak pisałem na tak niskim poziomie to było na studiach jak się bawiliśmy juz nie pamietam jaką wersją asm na nie wiem jakim procesorze wtedy dostawalismy błąd przekroczenia zakresu zmiennej
increment(x) [x++]
copy(x,y) [x=y]
zero(x) [x=0]
loop(x) [
//powtorz x razy
]
zaimplementuj:
decrement(x)
#programowanie #zagadka
decrement(x) [ copy(y, -1); loop(x) [ increment(y); ] copy(x, y); ]
?
@Grizwold: loop(MAX_VAR-1)[inc(x)]
zero(tmp1)
zero(tmp2)
loop(x) [
copy(tmp2, tmp1)
incerement(tmp1)
]
Wynik będzie w
tmp2
wtedy dostawalismy błąd przekroczenia zakresu zmiennej
dec(x) {
zero(tmp);
loop(x-1)[ increment(tmp) ];
copy(x,tmp);
}
Przy założeniu, że atomowe operacje arytmetyczne są dozwolone.
@M4lutki: Wykonując taką operację teoretycznie mogłeś to zminimalizować do:
dec(x-1)[x]
( ͡° ͜ʖ ͡°)
No i nie jest dozwolona
loop(MAX_VAR-1)[inc(x)]
do
dec(x)[x-1]