Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
81
Task/Long-multiplication/NetRexx/long-multiplication.netrexx
Normal file
81
Task/Long-multiplication/NetRexx/long-multiplication.netrexx
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
/* NetRexx */
|
||||
options replace format comments java crossref symbols nobinary
|
||||
|
||||
numeric digits 100
|
||||
|
||||
runSample(arg)
|
||||
return
|
||||
|
||||
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
method multiply(multiplier, multiplicand) public static
|
||||
result = ''
|
||||
mpa = s2a(multiplier)
|
||||
mpb = s2a(multiplicand)
|
||||
r_ = 0
|
||||
rim = 1
|
||||
loop bi = 1 to mpb[0]
|
||||
loop ai = 1 to mpa[0]
|
||||
ri = ai + bi -1
|
||||
p_ = mpa[ai] * mpb[bi]
|
||||
loop i_ = ri by 1 until p_ = 0
|
||||
s_ = r_[i_] + p_
|
||||
r_[i_] = s_ // 10
|
||||
p_ = s_ % 10
|
||||
end i_
|
||||
rim = rim.max(i_)
|
||||
end ai
|
||||
end bi
|
||||
r_[0] = rim
|
||||
result = a2s(r_)
|
||||
result = result.strip('l', 0)
|
||||
if result = '' then result = 0
|
||||
return result
|
||||
|
||||
-- .............................................................................
|
||||
-- copy characters of a numeric string into a corresponding array
|
||||
-- digits are numbered 1 to n from right to left
|
||||
method s2a(numbr) private static
|
||||
result = 0
|
||||
lstr = numbr.length()
|
||||
loop z_ = 1 to lstr
|
||||
result[z_] = numbr.substr(lstr - z_ + 1, 1)
|
||||
end z_
|
||||
result[0] = lstr
|
||||
return result
|
||||
|
||||
-- .............................................................................
|
||||
-- turn the array of digits into a numeric string
|
||||
method a2s(numbr) private static
|
||||
result = ''
|
||||
loop z_ = numbr[0] to 1 by -1
|
||||
result = result || numbr[z_]
|
||||
end z_
|
||||
return result
|
||||
|
||||
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
method runSample(arg) private static
|
||||
mms = [ -
|
||||
123', '123, -
|
||||
012', '12, -
|
||||
123456789012' , '44444444444, -
|
||||
2 ** 64' , '2**64, -
|
||||
0' ,0 ' -
|
||||
]
|
||||
ok = 0
|
||||
errors = 0
|
||||
|
||||
loop mm over mms
|
||||
parse mm multiplier . ',' multiplicand .
|
||||
builtIn = multiplier * multiplicand
|
||||
calculated = multiply(multiplier, multiplicand)
|
||||
say 'Calculate' multiplier + 0 'x' multiplicand + 0
|
||||
say 'Built in:' builtIn
|
||||
say 'Derived: ' calculated
|
||||
say
|
||||
if builtIn = calculated then ok = ok + 1
|
||||
else errors = errors + 1
|
||||
end mm
|
||||
say ok 'ok'
|
||||
say errors 'not ok'
|
||||
|
||||
return
|
||||
Loading…
Add table
Add a link
Reference in a new issue