34 lines
821 B
Text
34 lines
821 B
Text
To take advantage of gojq's arbitrary-precision integer arithmetic:
|
|
def power($b): . as $in | reduce range(0;$b) as $i (1; . * $in);
|
|
|
|
# In case gojq is used:
|
|
def _nwise($n):
|
|
def nw: if length <= $n then . else .[0:$n] , (.[$n:] | nw) end;
|
|
nw;
|
|
|
|
def lpad($len): tostring | ($len - length) as $l | (" " * $l)[:$l] + .;
|
|
|
|
def D($n):
|
|
if $n < 0 then -D(- $n)
|
|
elif $n < 2 then 0
|
|
else [$n | factors] as $f
|
|
| ($f|length) as $c
|
|
| if $c <= 1 then 1
|
|
elif $c == 2 then $f[0] + $f[1]
|
|
else ($n / $f[0]) as $d
|
|
| D($d) * $f[0] + $d
|
|
end
|
|
end ;
|
|
|
|
def task:
|
|
def task1:
|
|
reduce range(-99; 101) as $n ([]; .[$n+99] = D($n))
|
|
| _nwise(10) | map(lpad(4)) | join(" ");
|
|
|
|
def task2:
|
|
range(1; 21) as $i
|
|
| "D(10^\($i)) / 7 = \( D(10|power($i))/7 )" ;
|
|
|
|
task1, "", task2 ;
|
|
|
|
task
|