Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
44
Task/Currency/Jq/currency.jq
Normal file
44
Task/Currency/Jq/currency.jq
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
def lpad($len): tostring | ($len - length) as $l | (" " * $l)[:$l] + .;
|
||||
|
||||
# print as dollars and cents
|
||||
def dollars:
|
||||
(. % 100) as $c
|
||||
| "$\((. - $c) /100).\($c)";
|
||||
|
||||
def dollars($width):
|
||||
dollars | lpad($width);
|
||||
|
||||
def innerproduct($y):
|
||||
. as $x
|
||||
| reduce range(0;$x|length) as $i (0; . + ($x[$i]*$y[$i]));
|
||||
|
||||
def plus($y):
|
||||
. as $x
|
||||
| reduce range(0;$x|length) as $i ([]; .[$i] = ($x[$i]+$y[$i]));
|
||||
|
||||
# Round up or down
|
||||
def integer_division($y):
|
||||
(. % $y) as $remainder
|
||||
| (. - $remainder) / $y
|
||||
| if $remainder * 2 > $y then . + 1 else . end;
|
||||
|
||||
# For computing taxes
|
||||
def precision: 10000;
|
||||
def cents: integer_division(precision);
|
||||
|
||||
|
||||
### The task:
|
||||
|
||||
def p: [550, 286];
|
||||
def q: [4000000000000000, 2];
|
||||
|
||||
def taxrate: 765; # relative to `precision`
|
||||
|
||||
(p | innerproduct(q)) as $before_tax # cents
|
||||
| ($before_tax * taxrate) as $taxes # relative to precision
|
||||
| ((($before_tax * precision) + $taxes) | cents) as $after_tax # cents
|
||||
| ($after_tax|tostring|length + 2) as $width
|
||||
|
|
||||
" Total before tax: \($before_tax | dollars($width))",
|
||||
" - tax: \($taxes | cents | dollars($width))",
|
||||
" Total after tax: \($after_tax | dollars($width))"
|
||||
Loading…
Add table
Add a link
Reference in a new issue