Super-d numbers: Difference between revisions

Added FreeBASIC
m (Updated description and link for Fōrmulæ solution)
(Added FreeBASIC)
 
(14 intermediate revisions by 8 users not shown)
Line 26:
{{trans|D}}
 
<langsyntaxhighlight lang="11l">V rd = [‘22’, ‘333’, ‘4444’, ‘55555’, ‘666666’, ‘7777777’, ‘88888888’, ‘999999999’]
 
L(ii) 2..7
Line 41:
print("\n")
L.break
j++</langsyntaxhighlight>
 
{{out}}
Line 63:
140997 490996 1184321 1259609 1409970 1783166 1886654 1977538 2457756 2714763
 
</pre>
 
=={{header|Amazing Hopper}}==
{{trans|C}}
<p>Debido a que los tipos básicos de Hopper son INT, LONG y DOUBLE, no es posible cumplir con la tarea en los términos específicos de ésta; sin embargo, sí es posible encontrar números "SUPER-D" teniendo en cuenta las limitaciones del coma-flotante, y calculando un poco más.</p>
<p>El coma flotante usado por Hopper garantiza que los primeros 16 dígitos de la parte entera son significativos (correctos), dejando a los restantes dígitos a la imaginación del computador. Esto me permite encontrar números SUPER-D cuyo "target" se encuentre dentro de los primeros 16 dígitos.</p>
<p>Si bien es cierto que la tarea requiere del uso de tipos BIG-INT, asumo que, habiendo encontrado algunos números, ésta está cumplida.</p>
<p>Para SUPER-9, es imposible encontrar números bajo las limitaciones de Hopper.</p>
<p>El resultado fue intervenido para resumir la aparición de los mensajes de error.</p>
<p>
Nota 1: los números grandes fueron comprobados (al menos, los primeros 16 dígitos), en la siguiente página:
</p>
<p>https://calculado.net/calculadora-de-numeros-grandes</p>
<p>Nota 2: por supuesto, algunos de los números desde SUPER-6 en adelante pueden ser incorrectos, porque se debe considerar el número completo como resultado real y correcto. Sin embargo, dudo que estén completamente erróneos, porque de lo contrario tendríamos un problema con el tipo DOUBLE y la confianza en los primeros 16 dígitos.</p><p>Dejo esta nota (2) aquí para su discusión ;) </p>
<syntaxhighlight lang="c">
#include <basico.h>
 
algoritmo
 
decimales '0'
d=2
ir a sub mientras ( #(d<=8), encontrar súperd )
 
terminar
 
subrutinas
 
sub( encontrar súperd )
imprimir("First 10 super-",d," numbers:\n")
count=0, j = 3.0, target=""
#(target = replicate( chr( 48 + d), d ))
iterar mientras ' #(count < 10) '
cuando( #(occurs(target, string( (j^d) * d ))) ){
si ( #( find(target,string( (j^d) * d ))<=16-d+1 ) )
++count, #((j^d) * d ),";"#(int(j)),"\n", imprimir
sino
imprimir("Error by limited floating-point\n")
fin si
}
++j
reiterar
saltar
++d
retornar
 
</syntaxhighlight>
 
{{out}}
<pre>
$ hopper3 basica/superd.bas
First 10 super-2 numbers:
722;19
1922;31
9522;69
13122;81
22050;105
22472;106
22898;107
28322;119
32258;127
34322;131
 
First 10 super-3 numbers:
53338743;261
295833384;462
313461333;471
333853923;481
521223336;558
1280873331;753
3335803968;1036
3433336008;1046
9549030333;1471
13354233375;1645
 
First 10 super-4 numbers:
7444428488704;1168
2444468646298624;4972
12144449506652164;7423
14444916891992064;7752
20210466987444484;8431
44446159394566080;10267
65612298930444480;11317
69644444001866240;11487
71160258444475208;11549
74444284887040000;11680
 
First 10 super-5 numbers:
10320555555665840128;4602
25555531873653735424;5517
121769555550158815232;7539
1824555552575530729472;12955
3266111849055555420160;14555
16555559203438988361728;20137
17574555554247478345728;20379
66949030555551289835520;26629
289495555554740940046336;35689
295053655555780915494912;35825
 
First 10 super-6 numbers:
Error by limited floating-point (x7)
6886666667204071324753900265799680;323576
110225436666664177977616958115282944;513675
Error by limited floating-point (x2)
583566666663286739658021176443142144;678146
Error by limited floating-point (x11)
75170784666666152681821170513110630400;1523993
Error by limited floating-point (x3)
116749666666722233392107835976969093120;1640026
Error by limited floating-point (x3)
176076108666666759379592167193103564800;1756271
Error by limited floating-point (x2)
250899451666666024467063188536426496000;1863051
Error by limited floating-point
266666617561594553577481823130432307200;1882072
436901766666679373685701878627629531136;2043488
Error by limited floating-point (x4)
666666906920386920350237344359883210752;2192601
 
First 10 super-7 numbers:
Error by limited floating-point (x12)
177777775600462518614052285223994784063074336768;4258476
Error by limited floating-point (x4)
993035700777777764170988126348947335750126403584;5444788
Error by limited floating-point (x16)
46713777777797451604889330385832487876519153106944;9438581
Error by limited floating-point (x3)
127977777771329971103305441414911647224808683339776;10900183
Error by limited floating-point (x2)
185944035777777783325705920417758962467398899204096;11497728
Error by limited floating-point (x6)
401493021777777721293822883896686959196909141491712;12834193
Error by limited floating-point (x2)
620807777777080769345318482826386545204255464095744;13658671
Error by limited floating-point (x3)
851802177777771784337179797881318978935678922915840;14290071
Error by limited floating-point (x6)
1907267777777317249638349869607811168558639577300992;16034108
1917295477777774148415418596878943250105383734214656;16046124
 
First 10 super-8 numbers:
Error by limited floating-point (x8)
4277888888883959171581268707647711439890179731079492513300480;29242698
Error by limited floating-point (x6)
98986718888888801286918789785886389895645834536018691101818880;43307276
117888888882653975719110834321860851108606954628126584961236992;44263715
Error by limited floating-point (x5)
627806888888889341739385231069597287624565300411183649261617152;54555936
Error by limited floating-point (x7)
14888888883417818657923930639384765827471804545865401634268381184;81044125
Error by limited floating-point (x20)
540888888884903246645687533027412939667041397478034734067117719552;126984952
Error by limited floating-point (x2)
810999408888888833569602076936910583555158505247065293524113031168;133579963
Error by limited floating-point (x8)
2326737888888882739301890030843707112889574955447311226724451090432;152390251
Error by limited floating-point (x3)
2778888888871981007014152874201195401408300641311199300391968702464;155810833
Error by limited floating-point (x19)
15111188888888925122195732008602567628522323430950253676602689847296;192542267
 
(ESTOS VALORES SON COMPLETAMENTE ERRONEOS:)
 
First 10 super-9 numbers:
Error by limited floating-point
8999999999999999844710088704;1000
4607999999999999920491565416448;2000
177146999999999994896138025041920;3000
2359295999999999959291681493221376;4000
Error by limited floating-point
8999999999999999939063878597132419072;10000
4607999999999999968800705841731798564864;20000
2359295999999999984025961390966680865210368;40000
Error by limited floating-point
....
(ctrl-c)
$
</pre>
 
Line 69 ⟶ 245:
{{libheader|System.Numerics}}
Done three ways, two with BigIntegers, and one with a UIint64 structure. More details on the "Mostly addition" method on the discussion page.
<langsyntaxhighlight lang="csharp">using System;
using System.Collections.Generic;
using BI = System.Numerics.BigInteger;
Line 189 ⟶ 365:
doOne("UInt64 structure mostly addition:", top, funF);
}
}</langsyntaxhighlight>
 
{{out}}
Line 228 ⟶ 404:
=={{header|C}}==
{{libheader|GMP}}
<langsyntaxhighlight lang="c">#include <stdio.h>
#include <stdlib.h>
#include <string.h>
Line 254 ⟶ 430:
}
return 0;
}</langsyntaxhighlight>
 
{{out}}
Line 278 ⟶ 454:
=={{header|C++}}==
{{trans|D}}
There are insufficiant bits avaiolableavalaible to calculate the super-5 or super-6 numbers without a biginteger library
<langsyntaxhighlight lang="cpp">#include <iostream>
#include <sstream>
#include <vector>
Line 322 ⟶ 498:
return 0;
}
</syntaxhighlight>
</lang>
{{out}}
<pre>First 10 super-2 numbers:
Line 336 ⟶ 512:
{{libheader|GMP}}
{{trans|C}}
<langsyntaxhighlight lang="cpp">#include <iostream>
#include <gmpxx.h>
 
Line 358 ⟶ 534:
}
return 0;
}</langsyntaxhighlight>
 
{{out}}
Line 382 ⟶ 558:
===Alternative ''not'' using GMP===
{{trans|C#}}
<langsyntaxhighlight lang="cpp">#include <cstdio>
#include <sstream>
#include <chrono>
Line 452 ⟶ 628:
for (int i = 2; i <= 9; i++) fun(i);
}
</syntaxhighlight>
</lang>
{{out}}
<pre>2: 19 31 69 81 105 106 107 119 127 131 0.002s
Line 468 ⟶ 644:
A more naïve implementation inspired by the Raku one, but without its use of parallelism; on my somewhat old and underpowered laptop, it gets through the basic task of 2 through 6 in about 6 seconds, then takes almost 40 to complete 7, and about six minutes for 8; with that growth rate, I didn't wait around for nine to complete.
 
<langsyntaxhighlight lang="clojure">(defn super [d]
(let [run (apply str (repeat d (str d)))]
(filter #(clojure.string/includes? (str (* d (Math/pow % d ))) run) (range))))
 
(doseq [d (range 2 9)]
(println (str d ": ") (take 10 (super d))))</langsyntaxhighlight>
{{Out}}
<pre>2: (19 31 69 81 105 106 107 119 127 131)
Line 485 ⟶ 661:
=={{header|D}}==
{{trans|Go}}
<langsyntaxhighlight lang="d">import std.bigint;
import std.conv;
import std.stdio;
Line 514 ⟶ 690:
}
}
}</langsyntaxhighlight>
{{out}}
<pre>First 10 super-2 numbers:
Line 542 ⟶ 718:
=={{header|F_Sharp|F#}}==
;The Function
<langsyntaxhighlight lang="fsharp">
// Generate Super-N numbers. Nigel Galloway: October 12th., 2019
let superD N=
Line 550 ⟶ 726:
let rec fL n=match (E-n%I).IsZero with true->true |_->if (E*10I)<n then false else fL (n/10I)
seq{1I..999999999999999999I}|>Seq.choose(fun n->if fL (G*n**N) then Some n else None)
</syntaxhighlight>
</lang>
;The Task
<langsyntaxhighlight lang="fsharp">
superD 2 |> Seq.take 10 |> Seq.iter(printf "%A "); printfn ""
superD 3 |> Seq.take 10 |> Seq.iter(printf "%A "); printfn ""
Line 561 ⟶ 737:
superD 8 |> Seq.take 10 |> Seq.iter(printf "%A "); printfn ""
superD 9 |> Seq.take 10 |> Seq.iter(printf "%A "); printfn ""
</syntaxhighlight>
</lang>
{{out}}
<pre>
Line 575 ⟶ 751:
 
=={{header|Factor}}==
<langsyntaxhighlight lang="factor">USING: arrays formatting io kernel lists lists.lazy math
math.functions math.ranges math.text.utils prettyprint sequences
;
Line 592 ⟶ 768:
] with each ;
 
MAIN: super-d-demo</langsyntaxhighlight>
{{out}}
<pre>
Line 610 ⟶ 786:
27257 272570 302693 323576 364509 502785 513675 537771 676657 678146
</pre>
 
=={{header|FreeBASIC}}==
{{trans|Visual Basic .NET}}
<syntaxhighlight lang="vbnet">Dim rd(7) As String = {"22", "333", "4444", "55555", "666666", "7777777", "88888888", "999999999"}
 
For n As Integer = 2 To 9
Dim cont As Integer = 0
Dim j As Uinteger = 3
Print Using !"\nFirst 10 super-# numbers:"; n
Do
Dim k As Ulongint = n * (j ^ n)
Dim ix As Uinteger = Instr(Str(k), rd(n - 2))
If ix > 0 Then
cont += 1
Print j; " " ;
End If
j += 1
Loop Until cont = 10
Next n</syntaxhighlight>
 
=={{header|Fōrmulæ}}==
{{FormulaeEntry|page=https://formulae.org/?script=examples/Super-d_numbers}}
 
'''Solution'''
 
'''Case 1. Write a function/procedure/routine to find super-d numbers'''
 
[[File:Fōrmulæ - Super-d numbers 01.png]]
 
'''Case 2. For d=2 through d=9, use the routine to show the first 1 ssuper-d numbers'''
Fōrmulæ programs are not textual, visualization/edition of programs is done showing/manipulating structures but not text. Moreover, there can be multiple visual representations of the same program. Even though it is possible to have textual representation &mdash;i.e. XML, JSON&mdash; they are intended for storage and transfer purposes more than visualization and edition.
 
[[File:Fōrmulæ - Super-d numbers 02.png]]
Programs in Fōrmulæ are created/edited online in its [https://formulae.org website], However they run on execution servers. By default remote servers are used, but they are limited in memory and processing power, since they are intended for demonstration and casual use. A local server can be downloaded and installed, it has no limitations (it runs in your own computer). Because of that, example programs can be fully visualized and edited, but some of them will not run if they require a moderate or heavy computation/memory resources, and no local server is being used.
 
[[File:Fōrmulæ - Super-d numbers 03.png]]
In '''[https://formulae.org/?example=Super-d_numbers this]''' page you can see the program(s) related to this task and their results.
 
=={{header|Go}}==
Simple brute force approach and so not particularly quick - about 2.25 minutes on a Core i7.
<langsyntaxhighlight lang="go">package main
 
import (
Line 655 ⟶ 858:
}
}
}</langsyntaxhighlight>
 
{{out}}
Line 692 ⟶ 895:
</pre>
=={{header|Haskell}}==
<langsyntaxhighlight lang="haskell">import Data.List (isInfixOf)
import Data.Char (intToDigit)
 
Line 708 ⟶ 911:
("First 10 super-" ++) .
((++) . show <*> ((" : " ++) . show . take 10 . findSuperd)))
[2 .. 6]</langsyntaxhighlight>
{{out}}
<pre>
Line 735 ⟶ 938:
 
=={{header|Java}}==
<langsyntaxhighlight lang="java">
import java.math.BigInteger;
 
Line 770 ⟶ 973:
 
}
</syntaxhighlight>
</lang>
 
{{out}}
Line 806 ⟶ 1,009:
Run time 268460 ms
</pre>
 
=={{header|jq}}==
'''Works with gojq, the Go implementation of jq'''
 
The C implementation of jq does not have sufficiently accurate integer arithmetic to fulfill the task,
so the output shown below is based on a run of gojq.
<syntaxhighlight lang="jq"># To take advantage of gojq's arbitrary-precision integer arithmetic:
def power($b): . as $in | reduce range(0;$b) as $i (1; . * $in);
 
# Input is $d, the number of consecutive digits, 2 <= $d <= 9
# $max is the number of superd numbers to be emitted.
def superd($number):
. as $d
| tostring as $s
| ($s * $d) as $target
| {count:0, j: 3 }
| while ( .count <= $number;
.emit = null
| if ((.j|power($d) * $d) | tostring) | index($target)
then .count += 1
| .emit = .j
else .
end
| .j += 1 )
| select(.emit).emit ;
 
# super-d for 2 <=d < 8
range(2; 8)
| "First 10 super-\(.) numbers:",
superd(10)</syntaxhighlight>
{{out}}
<pre>
First 10 super-2 numbers:
19
31
69
81
105
106
107
119
127
131
First 10 super-3 numbers:
261
462
471
481
558
753
1036
1046
1471
1645
First 10 super-4 numbers:
1168
4972
7423
7752
8431
10267
11317
11487
11549
11680
First 10 super-5 numbers:
4602
5517
7539
12955
14555
20137
20379
26629
32767
35689
First 10 super-6 numbers:
27257
272570
302693
323576
364509
502785
513675
537771
676657
678146
First 10 super-7 numbers:
140997
490996
1184321
1259609
1409970
1783166
1886654
1977538
2457756
2714763
</pre>
 
 
=={{header|Julia}}==
{{trans|Phix}}
<langsyntaxhighlight lang="julia">function superd(N)
println("First 10 super-$N numbers:")
count, j = 0, BigInt(3)
Line 826 ⟶ 1,129:
@time superd(n)
end
</langsyntaxhighlight>{{out}}
<pre>
First 10 super-2 numbers:
Line 856 ⟶ 1,159:
=={{header|Kotlin}}==
{{trans|Java}}
<langsyntaxhighlight lang="scala">import java.math.BigInteger
 
fun superD(d: Int, max: Int) {
Line 884 ⟶ 1,187:
superD(i, 10)
}
}</langsyntaxhighlight>
{{out}}
<pre>First 10 super-2 numbers:
Line 921 ⟶ 1,224:
==={{header|Lua - using doubles}}===
Lua's default numeric type is IEEE-754 doubles, which are insufficient beyond d=5, but for reference:
<langsyntaxhighlight lang="lua">for d = 2, 5 do
local n, found = 0, {}
local dds = string.rep(d, d)
Line 930 ⟶ 1,233:
end
print("super-" .. d .. ": " .. table.concat(found,", "))
end</langsyntaxhighlight>
{{out}}
<pre>super-2: 19, 31, 69, 81, 105, 106, 107, 119, 127, 131
Line 938 ⟶ 1,241:
==={{header|Lua - using lbc}}===
Using the lbc library to provide support for arbitrary-precision integers, which are sufficient for both task and extra-credit:
<langsyntaxhighlight lang="lua">bc = require("bc")
for i = 2, 9 do
local d, n, found = bc.new(i), bc.new(0), {}
Line 948 ⟶ 1,251:
end
print("super-" .. d:tostring() .. ": " .. table.concat(found,", "))
end</langsyntaxhighlight>
{{out}}
<pre>super-2: 19, 31, 69, 81, 105, 106, 107, 119, 127, 131
Line 960 ⟶ 1,263:
 
=={{header|Mathematica}} / {{header|Wolfram Language}}==
<langsyntaxhighlight Mathematicalang="mathematica">ClearAll[SuperD]
SuperD[d_, m_] := Module[{n, res, num},
res = {};
Line 973 ⟶ 1,276:
res
]
Scan[Print[SuperD[#, 10]] &, Range[2, 6]]</langsyntaxhighlight>
{{out}}
<pre>{19,31,69,81,105,106,107,119,127,131}
Line 985 ⟶ 1,288:
Using only the standard library, we would be limited to "d = 2, 3, 4". So, here is the program using the third-party library "bignum".
 
<langsyntaxhighlight Nimlang="nim">import sequtils, strutils, times
import bignum
 
Line 1,003 ⟶ 1,306:
echo "First 10 super-$# numbers:".format(d)
echo toSeq(superDNumbers(d, 10)).join(" ")
echo "Time: ", getTime() - t0</langsyntaxhighlight>
 
{{out}}
Line 1,027 ⟶ 1,330:
{{works with|Free Pascal}}
gmp is fast.Same brute force as [http://rosettacode.org/wiki/Super-d_numbers#Go Go]
<langsyntaxhighlight lang="pascal">program Super_D;
uses
sysutils,gmp;
Line 1,065 ⟶ 1,368:
end;
mpz_clear(test);
End.</langsyntaxhighlight>
{{out}}
<pre>Finding 22 in 2*i**2
Line 1,099 ⟶ 1,402:
 
=={{header|Perl}}==
<langsyntaxhighlight lang="perl">use strict;
use warnings;
use bigint;
Line 1,120 ⟶ 1,423:
}
say "\nFirst 10 super-$_ numbers:\n", join ' ', super($_) for 2..6;</langsyntaxhighlight>
 
<pre>
Line 1,140 ⟶ 1,443:
=={{header|Phix}}==
{{trans|Go}}
<!--<syntaxhighlight lang="phix">(phixonline)-->
<lang Phix>include mpfr.e
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
 
<span style="color: #008080;">include</span> <span style="color: #004080;">mpfr</span><span style="color: #0000FF;">.</span><span style="color: #000000;">e</span>
procedure main()
atom t0 = time()
<span style="color: #008080;">procedure</span> <span style="color: #000000;">main</span><span style="color: #0000FF;">()</span>
mpz k = mpz_init()
<span style="color: #004080;">atom</span> <span style="color: #000000;">t0</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">time</span><span style="color: #0000FF;">()</span>
for i=2 to 9 do
<span style="color: #004080;">mpz</span> <span style="color: #000000;">k</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">mpz_init</span><span style="color: #0000FF;">()</span>
printf(1,"First 10 super-%d numbers:\n", i)
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">2</span> <span style="color: #008080;">to</span> <span style="color: #008080;">iff</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">platform</span><span style="color: #0000FF;">()=</span><span style="color: #004600;">JS</span><span style="color: #0000FF;">?</span><span style="color: #000000;">7</span><span style="color: #0000FF;">:</span><span style="color: #000000;">9</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">do</span>
integer count := 0, j = 3
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"First 10 super-%d numbers:\n"</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">)</span>
string tgt = repeat('0'+i,i)
<span style="color: #004080;">integer</span> <span style="color: #000000;">count</span> <span style="color: #0000FF;">:=</span> <span style="color: #000000;">0</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">j</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">3</span>
while count<10 do
<span style="color: #004080;">string</span> <span style="color: #000000;">tgt</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">repeat</span><span style="color: #0000FF;">(</span><span style="color: #008000;">'0'</span><span style="color: #0000FF;">+</span><span style="color: #000000;">i</span><span style="color: #0000FF;">,</span><span style="color: #000000;">i</span><span style="color: #0000FF;">)</span>
mpz_ui_pow_ui(k,j,i)
<span style="color: #008080;">while</span> <span style="color: #000000;">count</span><span style="color: #0000FF;"><</span><span style="color: #000000;">10</span> <span style="color: #008080;">do</span>
mpz_mul_si(k,k,i)
<span style="color: #7060A8;">mpz_ui_pow_ui</span><span style="color: #0000FF;">(</span><span style="color: #000000;">k</span><span style="color: #0000FF;">,</span><span style="color: #000000;">j</span><span style="color: #0000FF;">,</span><span style="color: #000000;">i</span><span style="color: #0000FF;">)</span>
string s = mpz_get_str(k)
<span style="color: #7060A8;">mpz_mul_si</span><span style="color: #0000FF;">(</span><span style="color: #000000;">k</span><span style="color: #0000FF;">,</span><span style="color: #000000;">k</span><span style="color: #0000FF;">,</span><span style="color: #000000;">i</span><span style="color: #0000FF;">)</span>
integer ix = match(tgt,s)
<span style="color: #004080;">string</span> <span style="color: #000000;">s</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">mpz_get_str</span><span style="color: #0000FF;">(</span><span style="color: #000000;">k</span><span style="color: #0000FF;">)</span>
if ix then
<span style="color: #004080;">integer</span> <span style="color: #000000;">ix</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">match</span><span style="color: #0000FF;">(</span><span style="color: #000000;">tgt</span><span style="color: #0000FF;">,</span><span style="color: #000000;">s</span><span style="color: #0000FF;">)</span>
count += 1
<span style="color: #008080;">if</span> <span style="color: #000000;">ix</span> <span style="color: #008080;">then</span>
printf(1,"%d ", j)
<span style="color: #000000;">count</span> <span style="color: #0000FF;">+=</span> <span style="color: #000000;">1</span>
end if
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"%d "</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">j</span><span style="color: #0000FF;">)</span>
j += 1
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
end while
<span style="color: #000000;">j</span> <span style="color: #0000FF;">+=</span> <span style="color: #000000;">1</span>
printf(1,"\nfound in %s\n\n", {elapsed(time()-t0)})
<span style="color: #008080;">end</span> <span style="color: #008080;">while</span>
end for
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"\nfound in %s\n\n"</span><span style="color: #0000FF;">,</span> <span style="color: #0000FF;">{</span><span style="color: #7060A8;">elapsed</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">time</span><span style="color: #0000FF;">()-</span><span style="color: #000000;">t0</span><span style="color: #0000FF;">)})</span>
end procedure
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
main()</lang>
<span style="color: #008080;">end</span> <span style="color: #008080;">procedure</span>
<span style="color: #000000;">main</span><span style="color: #0000FF;">()</span>
<!--</syntaxhighlight>-->
{{out}}
<pre>
Line 1,196 ⟶ 1,502:
First 10 super-9 numbers:
17546133 <killed>
</pre>
Since its actually about 3 times faster under pwa/p2js, I let that one run, just the once, keeping the above capped at 7 for ~11s:
<pre>
...
First 10 super-8 numbers:
185423 641519 1551728 1854230 6415190 12043464 12147605 15517280 16561735 18542300 
found in 1 minute and 22s
 
First 10 super-9 numbers:
17546133 32613656 93568867 107225764 109255734 113315082 121251742 175461330 180917907 182557181 
found in 16 minutes and 6s
</pre>
 
=={{header|Python}}==
===Procedural===
<langsyntaxhighlight lang="python">from itertools import islice, count
 
def superd(d):
Line 1,212 ⟶ 1,529:
if __name__ == '__main__':
for d in range(2, 9):
print(f"{d}:", ', '.join(str(n) for n in islice(superd(d), 10)))</langsyntaxhighlight>
 
{{out}}
Line 1,224 ⟶ 1,541:
 
===Functional===
<langsyntaxhighlight lang="python">'''Super-d numbers'''
 
from itertools import count, islice
Line 1,362 ⟶ 1,679:
# MAIN ---
if __name__ == '__main__':
main()</langsyntaxhighlight>
{{Out}}
<pre>1 :: Super-d is defined only for integers drawn from {2..9}
Line 1,370 ⟶ 1,687:
First 10 super-5: [4602,5517,7539,12955,14555,20137,20379,26629,32767,35689]
First 10 super-6: [27257,272570,302693,323576,364509,502785,513675,537771,676657,678146]</pre>
 
=={{header|Quackery}}==
 
<code>from</code>, <code>index</code> and <code>end</code> are defined at [[Loops/Increment loop index within loop body#Quackery]].
 
<syntaxhighlight lang="Quackery"> [ over findseq swap found ] is hasseq ( [ x --> b )
 
[ [] swap
[ 10 /mod
rot join swap
dup 0 = until ]
drop ] is digits ( n --> [ )
 
[ over ** over * digits
swap dup of hasseq ] is superd ( n --> b )
 
[] 5 times
[ [] 1 from
[ i^ 2 + index
superd if [ index join ]
dup size 10 = if end ]
nested join ]
witheach
[ i^ 2 + echo say " -> " echo cr ]</syntaxhighlight>
 
{{out}}
 
<pre>2 -> [ 19 31 69 81 105 106 107 119 127 131 ]
3 -> [ 261 462 471 481 558 753 1036 1046 1471 1645 ]
4 -> [ 1168 4972 7423 7752 8431 10267 11317 11487 11549 11680 ]
5 -> [ 4602 5517 7539 12955 14555 20137 20379 26629 32767 35689 ]
6 -> [ 27257 272570 302693 323576 364509 502785 513675 537771 676657 678146 ]
</pre>
 
=={{header|R}}==
 
{{libheader|Rmpfr}}
Library is necessary to go beyond super-4 numbers. Indeed [https://cran.r-project.org/web/packages/Rmpfr/Rmpfr.pdf Rmpfr] allows to augment precision for floating point numbers. I didn't go for extra task, because it took some minutes for super-6 numbers.
 
<syntaxhighlight lang="r">library(Rmpfr)
options(scipen = 999)
 
find_super_d_number <- function(d, N = 10){
super_number <- c(NA)
n = 0
n_found = 0
while(length(super_number) < N){
n = n + 1
test = d * mpfr(n, precBits = 200) ** d #Here I augment precision
test_formatted = .mpfr2str(test)$str #and I extract the string from S4 class object
iterable = strsplit(test_formatted, "")[[1]]
if (length(iterable) < d) next
for(i in d:length(iterable)){
if (iterable[i] != d) next
equalities = 0
for(j in 1:d) {
if (i == j) break
if(iterable[i] == iterable[i-j])
equalities = equalities + 1
else break
}
if (equalities >= (d-1)) {
n_found = n_found + 1
super_number[n_found] = n
break
}
}
}
message(paste0("First ", N, " super-", d, " numbers:"))
print((super_number))
return(super_number)
}
 
for(d in 2:6){find_super_d_number(d, N = 10)}
</syntaxhighlight>
 
{{out}}
<pre>
First 10 super-2 numbers:
[1] 19 31 69 81 105 106 107 119 127 131
First 10 super-3 numbers:
[1] 261 462 471 481 558 753 1036 1046 1471 1645
First 10 super-4 numbers:
[1] 1168 4972 7423 7752 8431 10267 11317 11487 11549 11680
First 10 super-5 numbers:
[1] 4602 5517 7539 12955 14555 20137 20379 26629 32767 35689
First 10 super-6 numbers:
[1] 27257 272570 302693 323576 364509 502785 513675 537771 676657 678146
</pre>
 
=={{header|Raku}}==
Line 1,376 ⟶ 1,793:
2 - 6 take a few seconds, 7 about 17 seconds, 8 about 90... 9, bleh... around 700 seconds.
 
<syntaxhighlight lang="raku" perl6line>sub super (\d) {
my \run = d x d;
^∞ .hyper.grep: -> \n { (d * n ** d).Str.contains: run }
Line 1,384 ⟶ 1,801:
my $now = now;
put "\nFirst 10 super-$_ numbers:\n{.&super[^10]}\n{(now - $now).round(.1)} sec."
}</langsyntaxhighlight>
 
<pre>First 10 super-2 numbers:
Line 1,419 ⟶ 1,836:
 
=={{header|REXX}}==
<langsyntaxhighlight lang="rexx">/*REXX program computes and displays the first N super─d numbers for D from LO to HI.*/
numeric digits 100 /*ensure enough decimal digs for calc. */
parse arg n LO HI . /*obtain optional arguments from the CL*/
Line 1,435 ⟶ 1,852:
say center(' the first ' n " super-"d 'numbers ', digits(), "═")
say $
end /*d*/ /*stick a fork in it, we're all done. */</langsyntaxhighlight>
{{out|output|text=&nbsp; when using the default inputs:}}
<pre>
Line 1,464 ⟶ 1,881:
 
=={{header|Ruby}}==
<langsyntaxhighlight lang="ruby">(2..8).each do |d|
rep = d.to_s * d
print "#{d}: "
puts (2..).lazy.select{|n| (d * n**d).to_s.include?(rep) }.first(10).join(", ")
end
</syntaxhighlight>
</lang>
{{out}}
<pre>2: 19, 31, 69, 81, 105, 106, 107, 119, 127, 131
Line 1,483 ⟶ 1,900:
=={{header|Rust}}==
<langsyntaxhighlight lang="rust">// [dependencies]
// rug = "1.9"
 
Line 1,511 ⟶ 1,928:
print_super_d_numbers(d, 10);
}
}</langsyntaxhighlight>
 
{{out}}
Line 1,534 ⟶ 1,951:
 
=={{header|Sidef}}==
<langsyntaxhighlight lang="ruby">func super_d(d) {
var D = Str(d)*d
1..Inf -> lazy.grep {|n| Str(d * n**d).contains(D) }
Line 1,541 ⟶ 1,958:
for d in (2..8) {
say ("#{d}: ", super_d(d).first(10))
}</langsyntaxhighlight>
{{out}}
<pre>
Line 1,557 ⟶ 1,974:
{{libheader|AttaSwift BigInt}}
 
<langsyntaxhighlight lang="swift">import BigInt
import Foundation
 
Line 1,589 ⟶ 2,006:
print()
print()
}</langsyntaxhighlight>
 
{{out}}
Line 1,619 ⟶ 2,036:
=={{header|Visual Basic .NET}}==
{{trans|D}}
<langsyntaxhighlight lang="vbnet">Imports System.Numerics
 
Module Module1
Line 1,651 ⟶ 2,068:
End Sub
 
End Module</langsyntaxhighlight>
{{out}}
<pre>First 10 super-2 numbers:
Line 1,679 ⟶ 2,096:
=={{header|Wren}}==
{{trans|Go}}
===CLI (BigInt)===
{{libheader|Wren-big}}
{{libheader|Wren-fmt}}
Managed to get up to 8 but too slow for 9.
<langsyntaxhighlight ecmascriptlang="wren">import "./big" for BigInt
import "./fmt" for Fmt
 
var start = System.clock
Line 1,704 ⟶ 2,122:
j = j.inc
}
}</langsyntaxhighlight>
 
{{out}}
Line 1,735 ⟶ 2,153:
185423 641519 1551728 1854230 6415190 12043464 12147605 15517280 16561735 18542300
found in 434.536825 seconds
</pre>
===Embedded (GMP)===
{{libheader|Wren-gmp}}
Much sprightlier with 8 now being reached in 11.7 seconds and 9 in 126.5 seconds.
<syntaxhighlight lang="wren">/* Super-d_numbers_2.wren */
 
import "./gmp" for Mpz
import "./fmt" for Fmt
var start = System.clock
var rd = ["22", "333", "4444", "55555", "666666", "7777777", "88888888", "999999999"]
for (i in 2..9) {
Fmt.print("First 10 super-$d numbers:", i)
var count = 0
var j = Mpz.three
var k = Mpz.new()
while (true) {
k.pow(j, i).mul(i)
var ix = k.toString.indexOf(rd[i-2])
if (ix >= 0) {
count = count + 1
Fmt.write("$i ", j)
if (count == 10) {
Fmt.print("\nfound in $f seconds\n", System.clock - start)
break
}
}
j.inc
}
}</syntaxhighlight>
 
{{out}}
<pre>
First 10 super-2 numbers:
19 31 69 81 105 106 107 119 127 131
found in 0.000222 seconds
 
First 10 super-3 numbers:
261 462 471 481 558 753 1036 1046 1471 1645
found in 0.001222 seconds
 
First 10 super-4 numbers:
1168 4972 7423 7752 8431 10267 11317 11487 11549 11680
found in 0.007386 seconds
 
First 10 super-5 numbers:
4602 5517 7539 12955 14555 20137 20379 26629 32767 35689
found in 0.024863 seconds
 
First 10 super-6 numbers:
27257 272570 302693 323576 364509 502785 513675 537771 676657 678146
found in 0.339837 seconds
 
First 10 super-7 numbers:
140997 490996 1184321 1259609 1409970 1783166 1886654 1977538 2457756 2714763
found in 1.684412 seconds
 
First 10 super-8 numbers:
185423 641519 1551728 1854230 6415190 12043464 12147605 15517280 16561735 18542300
found in 11.695570 seconds
 
First 10 super-9 numbers:
17546133 32613656 93568867 107225764 109255734 113315082 121251742 175461330 180917907 182557181
found in 126.454911 seconds
</pre>
 
=={{header|zkl}}==
{{libheader|GMP}} GNU Multiple Precision Arithmetic Library
<langsyntaxhighlight lang="zkl">var [const] BI=Import("zklBigNum"); // libGMP
 
fcn superDW(d){
Line 1,746 ⟶ 2,228:
{ BI(n).pow(d).mul(d).toString().holds(digits) and n or Void.Skip });
}
foreach d in ([2..8]){ println(d," : ",superDW(d).walk(10).concat(" ")) }</langsyntaxhighlight>
{{out}}
<pre>
2,122

edits