Numbers with prime digits whose sum is 13: Difference between revisions

Content added Content deleted
(→‎bc: add)
(→‎AWK: →‎bc: →‎OCaml: →‎Python: some simplification)
Line 83: Line 83:
BYTE ARRAY digits(MAXDIG)
BYTE ARRAY digits(MAXDIG)
BYTE count,pos
BYTE count,pos

count=1 pos=0
count=1 pos=0
Init(count)
Init(count)
Line 211: Line 211:
=={{header|Arturo}}==
=={{header|Arturo}}==
<syntaxhighlight lang="rebol">pDigits: [2 3 5 7]
<syntaxhighlight lang="rebol">pDigits: [2 3 5 7]

lst: map pDigits 'd -> @[d]
lst: map pDigits 'd -> @[d]
result: new []
result: new []
Line 286: Line 286:
===Generate digit combinations directly===
===Generate digit combinations directly===
<syntaxhighlight lang="awk">BEGIN {
<syntaxhighlight lang="awk">BEGIN {
split("2 3 5 7", digits)
o = 1
src[i = 0] = 13
src[o++] = 13
o = 2
do {
res = ""
r = src[++i]
while (i != o) {
n = src[++i]
r = src[i++]
for (p = 2; p != 9; p += p % 2 + 1) {
n = src[i++]
if (p >= r) {
for (d = 1; d != 5 && (p = digits[d]) <= r; ++d) {
if (p == r) res = res " " n p
if (p == r) {
break
res = res " " n p
} else {
src[o++] = r - p
src[o++] = n p
}
}
src[++o] = r - p
src[++o] = n p
}
}
}
} while (i != o)
print substr(res, 2)
print substr(res, 2)
}</syntaxhighlight>
}
</syntaxhighlight>
{{out}}
{{out}}
<pre>337 355 373 535 553 733 2227 2272 2335 2353 2533 2722 3235 3253 3325 3352 3523 3532 5233 5323 5332 7222 22225 22252 22333 22522 23233 23323 23332 25222 32233 32323 32332 33223 33232 33322 52222 222223 222232 222322 223222 232222 322222</pre>
<pre>337 355 373 535 553 733 2227 2272 2335 2353 2533 2722 3235 3253 3325 3352 3523 3532 5233 5323 5332 7222 22225 22252 22333 22522 23233 23323 23332 25222 32233 32323 32332 33223 33232 33322 52222 222223 222232 222322 223222 232222 322222</pre>
Line 316: Line 313:
for (p = 2; p != 9; p += p % 2 + 1) {
for (p = 2; p != 9; p += p % 2 + 1) {
if (p >= r) {
if (p >= r) {
if (p == r) n * 10 + p
if (p == r) n + p
break
break
}
}
q[o++] = r - p
q[o++] = r - p
q[o++] = n * 10 + p
q[o++] = (n + p) * 10
}
}
}</syntaxhighlight>
}</syntaxhighlight>
Line 1,196: Line 1,193:
reduce .[] as $i ([]; .[$i] += 1);
reduce .[] as $i ([]; .[$i] += 1);
(length|factorial) / (histogram|product_of_factorials);
(length|factorial) / (histogram|product_of_factorials);

def number_of_interesting_numbers($total):
def number_of_interesting_numbers($total):
def digits: [2, 3, 5, 7];
def digits: [2, 3, 5, 7];
Line 1,420: Line 1,417:
| (n, r) :: cs' as cs ->
| (n, r) :: cs' as cs ->
match ds with
match ds with
| d :: ds' when d < r -> next ds' ((n * 10 + d, r - d) :: ns) cs
| d :: ds' when d < r -> next ds' (((n + d) * 10, r - d) :: ns) cs
| d :: ds' when d = r -> n * 10 + d :: next digits ns cs'
| d :: ds' when d = r -> n + d :: next digits ns cs'
| _ -> next digits ns cs'
| _ -> next digits ns cs'
in next digits [] [0, 13]
in next digits [] [0, 13]
Line 1,920: Line 1,917:
<span style="color: #008080;">return</span> <span style="color: #000000;">res</span>
<span style="color: #008080;">return</span> <span style="color: #000000;">res</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>

<span style="color: #004080;">sequence</span> <span style="color: #000000;">r</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">sort</span><span style="color: #0000FF;">(</span><span style="color: #000000;">unlucky</span><span style="color: #0000FF;">({</span><span style="color: #000000;">2</span><span style="color: #0000FF;">,</span><span style="color: #000000;">3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">5</span><span style="color: #0000FF;">,</span><span style="color: #000000;">7</span><span style="color: #0000FF;">},</span><span style="color: #000000;">13</span><span style="color: #0000FF;">))</span>
<span style="color: #004080;">sequence</span> <span style="color: #000000;">r</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">sort</span><span style="color: #0000FF;">(</span><span style="color: #000000;">unlucky</span><span style="color: #0000FF;">({</span><span style="color: #000000;">2</span><span style="color: #0000FF;">,</span><span style="color: #000000;">3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">5</span><span style="color: #0000FF;">,</span><span style="color: #000000;">7</span><span style="color: #0000FF;">},</span><span style="color: #000000;">13</span><span style="color: #0000FF;">))</span>
<span style="color: #7060A8;">puts</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">join_by</span><span style="color: #0000FF;">(</span><span style="color: #000000;">r</span><span style="color: #0000FF;">,</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">11</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" "</span><span style="color: #0000FF;">))</span>
<span style="color: #7060A8;">puts</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">join_by</span><span style="color: #0000FF;">(</span><span style="color: #000000;">r</span><span style="color: #0000FF;">,</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">11</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" "</span><span style="color: #0000FF;">))</span>
Line 1,951: Line 1,948:
<span style="color: #008080;">return</span> <span style="color: #000000;">res</span>
<span style="color: #008080;">return</span> <span style="color: #000000;">res</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>

<span style="color: #004080;">sequence</span> <span style="color: #000000;">r</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">unlucky</span><span style="color: #0000FF;">()</span>
<span style="color: #004080;">sequence</span> <span style="color: #000000;">r</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">unlucky</span><span style="color: #0000FF;">()</span>
<span style="color: #000000;">r</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">apply</span><span style="color: #0000FF;">(</span><span style="color: #004600;">true</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">sprintf</span><span style="color: #0000FF;">,{{</span><span style="color: #008000;">"%6d"</span><span style="color: #0000FF;">},</span><span style="color: #000000;">r</span><span style="color: #0000FF;">})</span>
<span style="color: #000000;">r</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">apply</span><span style="color: #0000FF;">(</span><span style="color: #004600;">true</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">sprintf</span><span style="color: #0000FF;">,{{</span><span style="color: #008000;">"%6d"</span><span style="color: #0000FF;">},</span><span style="color: #000000;">r</span><span style="color: #0000FF;">})</span>
Line 2,002: Line 1,999:
for d in 2, 3, 5, 7:
for d in 2, 3, 5, 7:
if d >= r:
if d >= r:
if d == r: yield n * 10 + d
if d == r: yield n + d
break
break
q.append((r - d, n * 10 + d))
q.append((r - d, (n + d) * 10))


print(*prime_digits_sum(13))</syntaxhighlight>
print(*prime_digits_sum(13))</syntaxhighlight>