Colorful numbers: Difference between revisions
Content added Content deleted
(→{{header|Wren}}: Changed to Phix's approach which is over 100 times faster than I had before.) |
|||
Line 259: | Line 259: | ||
=={{header|Wren}}== |
=={{header|Wren}}== |
||
{{trans|Phix}} |
|||
{{libheader|Wren-math}} |
{{libheader|Wren-math}} |
||
{{libheader|Wren-set}} |
{{libheader|Wren-set}} |
||
Line 287: | Line 288: | ||
} |
} |
||
⚫ | |||
⚫ | |||
var used = List.filled(11, false) |
|||
⚫ | |||
⚫ | |||
var largest = 0 |
var largest = 0 |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
var countColorful // recursive |
|||
⚫ | |||
countColorful = Fn.new { |taken, n| |
|||
⚫ | |||
⚫ | |||
var pow = 10 |
|||
⚫ | |||
⚫ | |||
var |
var dx = digit + 1 |
||
⚫ | |||
while (true) { |
|||
countColorful.call((digit < 2) ? 9 : 1, String.fromByte(digit + 48)) |
|||
⚫ | |||
used[dx] = false |
|||
⚫ | |||
⚫ | |||
⚫ | |||
} |
} |
||
} |
|||
⚫ | |||
if (i == pow - 1 || i == largest) { |
|||
⚫ | |||
var pc = 100 * count[dc] / total |
|||
⚫ | |||
⚫ | |||
⚫ | |||
pow = pow * 10 |
|||
⚫ | |||
} else { |
} else { |
||
var nn = Num.fromString(n) |
|||
⚫ | |||
var ln = n.count |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
for (digit in 2..9) { |
|||
⚫ | |||
if (!used[dx]) { |
|||
used[dx] = true |
|||
countColorful.call(taken + 1, n + String.fromByte(digit + 48)) |
|||
used[dx] = false |
|||
⚫ | |||
⚫ | |||
⚫ | |||
} |
} |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
countColorful.call(0, "") |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
} |
} |
||
Line 332: | Line 340: | ||
{{out}} |
{{out}} |
||
<pre> |
<pre> |
||
The colorful numbers less than 100 are: |
The 66 colorful numbers less than 100 are: |
||
0 1 2 3 4 5 6 7 8 9 |
0 1 2 3 4 5 6 7 8 9 |
||
23 24 25 26 27 28 29 32 34 35 |
23 24 25 26 27 28 29 32 34 35 |