割り算の筆算
Posted feedbacks - Bash
$ wari 12345 67
184
------
67)12345
67
------
564
536
------
285
268
------
17
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | function wari() {
local -i m=$1
local -i n=$2
local r=$(printf '%*d' ${#m} $((m / n)))
write_head $m $n "$r"
write_body $m $n "$r"
}
function write_head() {
local m=$1
local n=$2
local r=$3
repeat_char ' ' $((${#n} + 1))
echo "$r"
write_bar $m $n
echo "$n)$m"
}
function write_body() {
local m=$1
local n=$2
local r=$3
local rest flag i
for ((i = 0; i < ${#r}; i++)) {
local c=${r:i:1}
rest="$rest${m:i:1}"
if [[ "$c" == [1-9] ]]; then
[ -n "$flag" ] && printf '%*d\n' $((i + ${#n} + 2)) $rest
printf '%*d\n' $((i + ${#n} + 2)) $((c * n))
write_bar $m $n
rest=$((rest - (c * n)))
flag=1
fi
}
[ -z "$flag" ] && write_bar $m $n
printf '%*d\n' $((i + ${#n} + 1)) $rest
}
function write_bar() {
local m=$1
local n=$2
repeat_char ' ' ${#n}
repeat_char - $((${#m} + 1))
echo
}
function repeat_char() {
local c=$1
local n=$2
while ((n--)); do
echo -n "$c"
done
}
|

rennos
#8785()
Rating7/7=1.00
[ reply ]