Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
42
Task/Subleq/UNIX-Shell/subleq-1.sh
Normal file
42
Task/Subleq/UNIX-Shell/subleq-1.sh
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
#!/bin/sh
|
||||
|
||||
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 "
|
||||
|
||||
i=0
|
||||
for v in $mem
|
||||
do
|
||||
eval 'mem_'$i=$v
|
||||
i=$(( $i + 1 ))
|
||||
done
|
||||
|
||||
get_m () {
|
||||
eval echo '$mem_'$1
|
||||
}
|
||||
set_m () {
|
||||
eval 'mem_'$1=$2
|
||||
}
|
||||
|
||||
ADDR=0
|
||||
STEP=0
|
||||
|
||||
while [ ${STEP} -lt 9999 ]
|
||||
do
|
||||
STEP=$(( $STEP + 1 ))
|
||||
A=$(get_m $ADDR)
|
||||
B=$(get_m $(($ADDR + 1)) )
|
||||
C=$(get_m $(($ADDR + 2)) )
|
||||
ADDR=$((ADDR + 3))
|
||||
if [ $B -lt 0 ]; then
|
||||
get_m $A | awk '{printf "%c",$1}'
|
||||
else
|
||||
set_m $B $(( $(get_m $B) - $(get_m $A) ))
|
||||
if [ $(get_m $B) -le 0 ]; then
|
||||
if [ $C -eq -1 ]; then
|
||||
echo "Total step:"$STEP
|
||||
exit 0
|
||||
fi
|
||||
ADDR=$C
|
||||
fi
|
||||
fi
|
||||
done
|
||||
echo "Total step:"$STEP
|
||||
23
Task/Subleq/UNIX-Shell/subleq-2.sh
Normal file
23
Task/Subleq/UNIX-Shell/subleq-2.sh
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
#!/usr/bin/env 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)
|
||||
|
||||
addr=0
|
||||
step=0
|
||||
|
||||
while (( addr >= 0 )); do
|
||||
(( step++ ))
|
||||
a=${mem[addr]}
|
||||
b=${mem[addr + 1]}
|
||||
c=${mem[addr + 2]}
|
||||
(( addr += 3 ))
|
||||
if (( b < 0 )); then
|
||||
printf '%b' '\x'$(printf '%x' ${mem[a]})
|
||||
else
|
||||
if (( (mem[b] -= mem[a]) <= 0 )); then
|
||||
addr=$c
|
||||
fi
|
||||
fi
|
||||
done
|
||||
printf 'Total step:%d\n' "$step"
|
||||
Loading…
Add table
Add a link
Reference in a new issue