Subleq: Difference between revisions
Content added Content deleted
m (→{{header|Ruby}}: mild idiomaticity adjustment) |
(→bash: lowercase non-env vars; take advantage of arithmetic contexts; use printf instead of echo) |
||
Line 3,086: | Line 3,086: | ||
</lang> |
</lang> |
||
===bash=== |
===bash=== |
||
<lang bash>#!/bin/ |
<lang bash>#!/usr/bin/env bash |
||
mem=(15 17 -1 17 -1 -1 16 1 -1 16 3 -1 15 15 0 0 -1 |
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) |
|||
addr=0 |
|||
step=0 |
|||
while |
while (( addr >= 0 )); do |
||
(( step++ )) |
|||
do |
|||
a=${mem[addr]} |
|||
b=${mem[addr + 1]} |
|||
c=${mem[addr + 2]} |
|||
(( addr += 3 )) |
|||
if |
if (( b < 0 )); then |
||
printf '%b' '\x'$(printf '%x' ${mem[ |
printf '%b' '\x'$(printf '%x' ${mem[a]}) |
||
else |
else |
||
if (( (mem[b] -= mem[a]) <= 0 )); then |
|||
⚫ | |||
if [[ ${mem[$B]} -le 0 ]]; then |
|||
if [[ $C -eq -1 ]]; then |
|||
echo "Total step:"$STEP |
|||
exit 0 |
|||
fi |
|||
⚫ | |||
fi |
fi |
||
fi |
fi |
||
done |
done |
||
printf 'Total step:%d\n' "$step" |
|||
</lang> |
</lang> |
||