langs a-z
This commit is contained in:
parent
db842d013d
commit
d066446780
11389 changed files with 98361 additions and 1020 deletions
|
|
@ -0,0 +1,21 @@
|
|||
gcd() {
|
||||
# Calculate $1 % $2 until $2 becomes zero.
|
||||
until test 0 -eq "$2"; do
|
||||
# Parallel assignment: set -- 1 2
|
||||
set -- "$2" "`expr "$1" % "$2"`"
|
||||
done
|
||||
|
||||
# Echo absolute value of $1.
|
||||
test 0 -gt "$1" && set -- "`expr 0 - "$1"`"
|
||||
echo "$1"
|
||||
}
|
||||
|
||||
lcm() {
|
||||
set -- "$1" "$2" "`gcd "$1" "$2"`"
|
||||
set -- "`expr "$1" \* "$2" / "$3"`"
|
||||
test 0 -gt "$1" && set -- "`expr 0 - "$1"`"
|
||||
echo "$1"
|
||||
}
|
||||
|
||||
lcm 30 -42
|
||||
# => 210
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
alias gcd eval \''set gcd_args=( \!*:q ) \\
|
||||
@ gcd_u=$gcd_args[2] \\
|
||||
@ gcd_v=$gcd_args[3] \\
|
||||
while ( $gcd_v != 0 ) \\
|
||||
@ gcd_t = $gcd_u % $gcd_v \\
|
||||
@ gcd_u = $gcd_v \\
|
||||
@ gcd_v = $gcd_t \\
|
||||
end \\
|
||||
if ( $gcd_u < 0 ) @ gcd_u = - $gcd_u \\
|
||||
@ $gcd_args[1]=$gcd_u \\
|
||||
'\'
|
||||
|
||||
alias lcm eval \''set lcm_args=( \!*:q ) \\
|
||||
@ lcm_m = $lcm_args[2] \\
|
||||
@ lcm_n = $lcm_args[3] \\
|
||||
gcd lcm_d $lcm_m $lcm_n \\
|
||||
@ lcm_r = ( $lcm_m * $lcm_n ) / $lcm_d \\
|
||||
if ( $lcm_r < 0 ) @ lcm_r = - $lcm_r \\
|
||||
@ $lcm_args[1] = $lcm_r \\
|
||||
'\'
|
||||
|
||||
lcm result 30 -42
|
||||
echo $result
|
||||
# => 210
|
||||
Loading…
Add table
Add a link
Reference in a new issue