June 2018 Update
This commit is contained in:
parent
ba8067c3b7
commit
22f33d4004
5278 changed files with 84726 additions and 14379 deletions
|
|
@ -1,37 +1,37 @@
|
|||
func add_with_carry(result, addend, addendpos) {
|
||||
loop {
|
||||
while (result.len < addendpos+1) {
|
||||
result.append(0);
|
||||
};
|
||||
var addend_digits = (addend.to_i + result[addendpos].to_i -> to_chars);
|
||||
result[addendpos] = addend_digits.pop;
|
||||
addend_digits.len > 0 || break;
|
||||
addend = addend_digits.pop;
|
||||
addendpos++;
|
||||
result.append(0)
|
||||
}
|
||||
var addend_digits = (addend.to_i + result[addendpos] -> to_s.chars)
|
||||
result[addendpos] = addend_digits.pop
|
||||
addend_digits.len > 0 || break
|
||||
addend = addend_digits.pop
|
||||
addendpos++
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
func longhand_multiplication(multiplicand, multiplier) {
|
||||
|
||||
var result = [];
|
||||
var multiplicand_offset = 0;
|
||||
|
||||
|
||||
var result = []
|
||||
var multiplicand_offset = 0
|
||||
|
||||
multiplicand.reverse.each { |multiplicand_digit|
|
||||
var multiplier_offset = multiplicand_offset;
|
||||
var multiplier_offset = multiplicand_offset
|
||||
multiplier.reverse.each { |multiplier_digit|
|
||||
var multiplication_result = (multiplicand_digit.to_i * multiplier_digit.to_i -> to_s);
|
||||
|
||||
var addend_offset = multiplier_offset;
|
||||
var multiplication_result = (multiplicand_digit.to_i * multiplier_digit.to_i -> to_s)
|
||||
|
||||
var addend_offset = multiplier_offset
|
||||
multiplication_result.reverse.each { |result_digit_addend|
|
||||
add_with_carry(result, result_digit_addend, addend_offset);
|
||||
addend_offset++;
|
||||
};
|
||||
multiplier_offset++;
|
||||
};
|
||||
multiplicand_offset++;
|
||||
};
|
||||
|
||||
return result.join.reverse;
|
||||
add_with_carry(result, result_digit_addend, addend_offset)
|
||||
addend_offset++
|
||||
}
|
||||
multiplier_offset++
|
||||
}
|
||||
multiplicand_offset++
|
||||
}
|
||||
|
||||
return result.join.reverse
|
||||
}
|
||||
|
||||
say longhand_multiplication('18446744073709551616', '18446744073709551616');
|
||||
|
||||
say longhand_multiplication('18446744073709551616', '18446744073709551616')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue