Subleq: Difference between revisions

98 bytes removed ,  3 years ago
→‎bash: lowercase non-env vars; take advantage of arithmetic contexts; use printf instead of echo
m (→‎{{header|Ruby}}: mild idiomaticity adjustment)
(→‎bash: lowercase non-env vars; take advantage of arithmetic contexts; use printf instead of echo)
Line 3,086:
</lang>
===bash===
<lang bash>#!/usr/bin/shenv bash
 
mem=(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 )
72 101 108 108 111 44 32 119 111 114 108 100 33 10 0)
 
ADDRaddr=0
STEPstep=0
 
while [[ $((STEP++ ))addr -lt>= 3000 )); ]]do
(( step++ ))
do
Aa=${mem[$ADDRaddr]}
Bb=${mem[(($ADDRaddr + 1))]}
Cc=${mem[(($ADDRaddr + 2))]}
ADDR=$((ADDR addr += 3 ))
if [[(( $Bb -lt< 0 ]])); then
printf '%b' '\x'$(printf '%x' ${mem[$Aa]})
else
mem[$B]=$if ((${ (mem[$Bb]} -= ${mem[$Aa]}) <= 0 )); then
ADDRaddr=$Cc
if [[ ${mem[$B]} -le 0 ]]; then
if [[ $C -eq -1 ]]; then
echo "Total step:"$STEP
exit 0
fi
ADDR=$C
fi
fi
done
echoprintf "'Total step:%d\n' "$STEPstep"
</lang>
 
1,480

edits