June 2018 Update
This commit is contained in:
parent
ba8067c3b7
commit
22f33d4004
5278 changed files with 84726 additions and 14379 deletions
|
|
@ -0,0 +1,65 @@
|
|||
#!/bin/sh
|
||||
|
||||
exp() {
|
||||
R=1
|
||||
local i=1
|
||||
|
||||
while [ $i -le $2 ]; do
|
||||
R=$(($R * $1))
|
||||
i=$(($i + 1))
|
||||
done
|
||||
}
|
||||
|
||||
rpn() {
|
||||
local O1 O2 stack
|
||||
|
||||
while [ $# -ge 1 ]; do
|
||||
grep -iE '^-?[0-9]+$' <<< "$1" > /dev/null 2>&1
|
||||
if [ "$?" -eq 0 ]; then
|
||||
stack=`sed -e '$a'"$1" -e '/^$/d' <<< "$stack"`
|
||||
else
|
||||
grep -iE '^[-\+\*\/\%\^]$' <<< "$1" > /dev/null 2>&1
|
||||
if [ "$?" -eq 0 ]; then
|
||||
O2=`sed -n '$p' <<< "$stack"`
|
||||
stack=`sed '$d' <<< "$stack"`
|
||||
O1=`sed -n '$p' <<< "$stack"`
|
||||
|
||||
case "$1" in
|
||||
'+')
|
||||
stack=`sed -e '$a'"$(($O1 + $O2))" -e '/^$/d' -e '$d' \
|
||||
<<< "$stack"`;;
|
||||
'-')
|
||||
stack=`sed -e '$a'"$(($O1 - $O2))" -e '/^$/d' -e '$d' \
|
||||
<<< "$stack"`;;
|
||||
'*')
|
||||
stack=`sed -e '$a'"$(($O1 * $O2))" -e '/^$/d' -e '$d' \
|
||||
<<< "$stack"`;;
|
||||
'/')
|
||||
stack=`sed -e '$a'"$(($O1 / $O2))" -e '/^$/d' -e '$d' \
|
||||
<<< "$stack"`;;
|
||||
'%')
|
||||
stack=`sed -e '$a'"$(($O1 % $O2))" -e '/^$/d' -e '$d' \
|
||||
<<< "$stack"`;;
|
||||
'^')
|
||||
exp $O1 $O2
|
||||
stack=`sed -e '$a'"$(($R))" -e '/^$/d' -e '$d' <<< \
|
||||
"$stack"`;;
|
||||
esac
|
||||
else
|
||||
echo "Unknown RPN token \`\`$1''"
|
||||
fi
|
||||
fi
|
||||
echo "$1" ":" $stack
|
||||
shift
|
||||
done
|
||||
|
||||
sed -n '1p' <<< "$stack"
|
||||
if [ "`wc -l <<< "$stack"`" -gt 1 ]; then
|
||||
echo "Malformed input expression" > /dev/stderr
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
rpn 3 4 2 '*' 1 5 '-' 2 3 '^' '^' '/' '+'
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
3 : 3
|
||||
4 : 3 4
|
||||
2 : 3 4 2
|
||||
* : 3 8
|
||||
1 : 3 8 1
|
||||
5 : 3 8 1 5
|
||||
- : 3 8 -4
|
||||
2 : 3 8 -4 2
|
||||
3 : 3 8 -4 2 3
|
||||
^ : 3 8 -4 8
|
||||
^ : 3 8 65536
|
||||
/ : 3 0
|
||||
+ : 3
|
||||
3
|
||||
Loading…
Add table
Add a link
Reference in a new issue