41 lines
927 B
Plaintext
41 lines
927 B
Plaintext
# Output: a PRN in range(0; .)
|
|
def prn:
|
|
if . == 1 then 0
|
|
else . as $n
|
|
| (($n-1)|tostring|length) as $w
|
|
| [limit($w; inputs)] | join("") | tonumber
|
|
| if . < $n then . else ($n | prn) end
|
|
end;
|
|
|
|
# Input and output: {n, s, next, m}
|
|
# The initial input should be
|
|
# {n: $n, s: [range(0;$n)|0], next: 0, m: $n}
|
|
# where $n is the maximum sample size.
|
|
def sOfN(items):
|
|
if (.next < .n)
|
|
then .s[.next] = items
|
|
| .next += 1
|
|
else .m += 1
|
|
| if ((.m | prn) < .n)
|
|
then (.n | prn) as $t
|
|
| .s[$t] = items
|
|
| if .next <= $t
|
|
then .next = $t + 1
|
|
else .
|
|
end
|
|
else .
|
|
end
|
|
end;
|
|
|
|
def task($iterations):
|
|
def dim($n): [range(0;$n)|0];
|
|
def init($n): {n: $n, s: dim($n), next: 0, m: $n };
|
|
|
|
reduce range(0; $iterations) as $r ( {freq: dim(10) };
|
|
reduce range(48; 57) as $d (. + init(3); sOfN($d) )
|
|
| reduce sOfN(57).s[] as $d (.;
|
|
.freq[$d - 48] += 1) )
|
|
| .freq ;
|
|
|
|
task(1e5)
|