Own digits power sum: Difference between revisions

Added 11l
m (→‎{{header|Phix}}: added comment (results collected in son order))
(Added 11l)
Line 14:
Optionally, do the same for '''N''' = '''9''' which may take a while for interpreted languages.
<br><br>
 
=={{header|11l}}==
{{trans|Python}}
 
<lang 11l>V MAX_BASE = 10
V POWER_DIGIT = (0 .< MAX_BASE).map(_ -> (0 .< :MAX_BASE).map(_ -> 1))
V USED_DIGITS = (0 .< MAX_BASE).map(_ -> 0)
[Int] NUMBERS
 
F calc_num(=depth, &used)
‘ calculate the number at a given recurse depth ’
V result = Int64(0)
I depth < 3
R
L(i) 1 .< :MAX_BASE
I used[i] > 0
result += Int64(used[i]) * :POWER_DIGIT[depth][i]
I result != 0
V (num, rnum) = (result, Int64(1))
L rnum != 0
rnum = num I/ :MAX_BASE
used[Int(num - rnum * :MAX_BASE)]--
num = rnum
depth--
I depth == 0
V i = 1
L i < :MAX_BASE & used[i] == 0
i++
I i >= :MAX_BASE
:NUMBERS.append(Int(result))
 
F next_digit(=dgt, depth) -> N
‘ get next digit at the given depth ’
I depth < :MAX_BASE - 1
L(i) dgt .< :MAX_BASE
:USED_DIGITS[dgt]++
next_digit(i, depth + 1)
:USED_DIGITS[dgt]--
 
I dgt == 0
dgt = 1
L(i) dgt .< :MAX_BASE
:USED_DIGITS[i]++
calc_num(depth, &copy(:USED_DIGITS))
:USED_DIGITS[i]--
 
L(j) 1 .< MAX_BASE
L(k) 0 .< MAX_BASE
POWER_DIGIT[j][k] = POWER_DIGIT[j - 1][k] * k
 
next_digit(0, 0)
print(NUMBERS)
NUMBERS = Array(Set(NUMBERS))
NUMBERS.sort()
print(‘Own digits power sums for N = 3 to 9 inclusive:’)
L(n) NUMBERS
print(n)</lang>
 
{{out}}
<pre>
[9800817, 9800817, 24678050, 24678050, 146511208, 146511208, 146511208, 4210818, 24678051, 24678051, 8208, 370, 93084, 93084, 370, 370, 370, 370, 407, 407, 407, 407, 912985153, 1741725, 9926315, 153, 371, 1634, 1634, 1634, 153, 371, 153, 371, 371, 371, 92727, 92727, 92727, 472335975, 472335975, 472335975, 534494836, 534494836, 548834, 88593477, 88593477, 54748, 54748, 9474, 9474, 9474]
Own digits power sums for N = 3 to 9 inclusive:
153
370
371
407
1634
8208
9474
54748
92727
93084
548834
1741725
4210818
9800817
9926315
24678050
24678051
88593477
146511208
472335975
534494836
912985153
</pre>
 
=={{header|ALGOL 68}}==
1,481

edits