A047841: Autobiografische Nummern


12

Definition

Hier ist der Prozess, um eine Zahl zu beschreiben:

  • Für jede Nummer von 0bis 9ist das in der Nummer vorhanden:
  • Notieren Sie die Häufigkeit dieser Ziffer und dann die Ziffer.

Zum Beispiel für die Nummer 10213223:

  • Es ist das 1Auftreten von 0,
  • 2Vorkommen von 1,
  • 3Vorkommen von 2,
  • 2Vorkommen von 3.

Daher 10213223lautet die beschriebene Zahl 10213223( 10von der ersten Eigenschaft, 21von der zweiten usw.).

Beachten Sie, dass die Anzahl der Vorkommen einer Ziffer größer als 9 sein kann .

Aufgabe

Sie müssen alle Zahlen ausdrucken / ausgeben, die sich selbst beschreiben.

Technische Daten

  • Standard Lücken gelten, mit der Ausnahme , dass Sie erlaubt die Ausgabe oder Speicherung von Informationen zu codieren , um die Ausgabe in Ihrem Programm verwendet.
  • Die Zahlen in der Ausgabe können in beliebiger Reihenfolge sein .
  • Die Zahlen in der Ausgabe dürfen Duplikate enthalten.
  • Sie können ein beliebiges Trennzeichen verwenden , wenn Sie anstelle der Ausgabe drucken möchten.
  • Sie erlaubt Präfix und / oder Postfix ausgegeben , wenn Sie anstelle von Ausgabe drucken wählen.
  • Der Abscheider und der Präfix und Postfix des möglicherweise nicht enthalten , keine Ziffern (U + U + 0030 bis 0039).
  • Die Lösung muss an einem Tag berechnet werden .

Vollständige Liste (109 Artikel)

22
10213223
10311233
10313314
10313315
10313316
10313317
10313318
10313319
21322314
21322315
21322316
21322317
21322318
21322319
31123314
31123315
31123316
31123317
31123318
31123319
31331415
31331416
31331417
31331418
31331419
31331516
31331517
31331518
31331519
31331617
31331618
31331619
31331718
31331719
31331819
1031223314
1031223315
1031223316
1031223317
1031223318
1031223319
3122331415
3122331416
3122331417
3122331418
3122331419
3122331516
3122331517
3122331518
3122331519
3122331617
3122331618
3122331619
3122331718
3122331719
3122331819
10413223241516
10413223241517
10413223241518
10413223241519
10413223241617
10413223241618
10413223241619
10413223241718
10413223241719
10413223241819
41322324151617
41322324151618
41322324151619
41322324151718
41322324151719
41322324151819
41322324161718
41322324161719
41322324161819
41322324171819
1051322314251617
1051322314251618
1051322314251619
1051322314251718
1051322314251719
1051322314251819
1051322325161718
1051322325161719
1051322325161819
1051322325171819
5132231425161718
5132231425161719
5132231425161819
5132231425171819
5132232516171819
106132231415261718
106132231415261719
106132231415261819
106132231426171819
106132231526171819
613223141526171819
1011112131415161718
1011112131415161719
1011112131415161819
1011112131415171819
1011112131416171819
1011112131516171819
1011112141516171819
1011113141516171819
1111213141516171819
10713223141516271819
101112213141516171819

Verweise


Ich bin mir ziemlich sicher, dass dies ein Betrug ist ... Ich kann die Frage einfach nicht finden
Beta-Zerfall

Antworten:


8

Gawk, 161 Bytes

BEGIN{
    for(split("0 10 2 2 1 1 1 1",a);c=c<11;n=o=_){
        while(++$c>a[c]+1)$(c++)=0;
        for(i in a)n=$i?n$i i-1:n;
        for(i=10;i--;)if(d=gsub(i,i,n))o=d i o;
        if(n==o)print n
    }
}

(Zeilenumbrüche und Tabulatoren zur Verdeutlichung)

Es ist ein einfacher Zähler, der die Tatsache ausnutzt, dass jede Zahl ein begrenztes Vorkommen hat. Zum Beispiel ist 0 nicht mehr als einmal in einer beliebigen Anzahl, 1 nicht mehr als 11 Mal, 2 nicht mehr als 3 Mal ... und so weiter.

Auf diese Weise müssen nur 124415 Nummern überprüft werden.

Anschließend werden alle Nummern erstellt und auf ihre Gültigkeit überprüft.

Ist in wenigen Sekunden fertig.


2

Gleichstrom, 487 Bytes

Hardcodierte die Lösung. Ich beginne mit 22 und addiere die Differenzen, um die nächsten Zahlen zu erhalten. Einige Rückkehroperationen wie das Hinzufügen von 1 fünfmal hintereinander werden in Registern gespeichert.

Dies ist mein erstes Programm, das jemals in DC geschrieben wurde, also kann es wahrscheinlich viel mehr Golf spielen.

[1+d1+d1+d1+d1+d]sa[1+d1+d1+d1+d97+d]sb[1+d1+d99+d1+d100+d]sc[1+d1+d1+d98+dlcx]sd[1+d100+d10000+d]se22d10213201+d98010+d2081+dlax11008995+dlax9800995+dlax208096+dlbxldx999891495+dlax2091108096+dlbxldx10410100909697+dldx30909100909798+dlcx9899+dlex1009999990079798+dlcx10909899+dlex4080909099989899+dlex1091000000+d100999998899089899+d1+d100+d10910000+d10 8^+d50709091 10 10^*+d397888989888989899+dlex10 6^+d10 8^+d10 10^+d10 12^+d1001 10 14^*+d9602010000000100000+d90398989999999900000+f

Sie können das Programm mit ausführen dc -e "[solution]", wobei [solution] die obige Zeichenfolge ist. Die Zahlen werden in umgekehrter Reihenfolge ausgegeben. dc -e "[solution]" | sort -nfür die Ausgabe in der gleichen Reihenfolge wie die Liste.


1

Ruby, 776 Bytes

Die Regeln besagen, dass "Sie die Ausgabe fest codieren dürfen", also macht diese Lösung genau das.

x="m|62wkn|65075|651sy|651sz|651t0|651t1|651t2|651t3|cp0ei|cp0ej|cp0ek|cp0el|cp0em|cp0en|ij2wi|ij2wj|ij2wk|ij2wl|ij2wm|ij2wnAh3Ah4Ah5Ah6Ah7AjwAjxAjyAjzAmpAmqAmrApiApjAsb|h1yp02|h1yp03|h1yp04|h1yp05|h1yp06|h1yp07Bc7Bc8Bc9BcaBcbBf0Bf1Bf2Bf3BhtBhuBhvBkmBknBnfFh8Fh9FhaFhbFk1Fk2Fk3FmuFmvFpnC08xC08yC08zC0bqC0brC0ejC81iC81jC84bCfu3EsxkfohEsxkfoiEsxkfojEsxkfraEsxkfrbEsxkfu3Et429yuEt429yvEt42a1nEt42hrf|1ej82kg93hy|1ej82kg93hz|1ej82kg93kr|1ej82kg9baj|1ej832ht8a3|t10qi0rmwpi|t10qi0rmwpj|t10qi0rmwsb|t10qi0y4qzv|t10qi2lo3hn|4nq1gm5kd1grG4p2zeraG4p2zerbG4p2zeu3G4p2zmjvG4p3l25nG4qr4enfG9c4v417|7ojtp0qb1maz|8fxg6lw9mtyj|29e6onjxe94gb|lc7bc5zbz4je3";a="|inj,|1fmye,|enb7ow,|enb7,|acnu,|3ovro98,|7ojtc".split',';b="ABCDEFG";7.times{|i|x.gsub! b[i],a[i]};x.split('|').map{|x|p x.to_i 36}

Ruby, 116 Bytes

Ein viel kürzeres Programm, dessen Ausführung viel zu lange dauert, das aber lang genug ist, sollte es können. Ich weiß nicht, ob es dem Zeitdruck entspricht.

f=->n{(?0..?9).map{|x|[n.to_s.chars.count{|c|c==x},x]}.select{|a|a[0]>0}.join.to_i}
(10**9).times{|i|p i if i==f[i]}

Komm schon, es sollte nur so lange dauern, bis die ganzzahlige Partition von 29 (19 + 10) erstellt ist.
Undichte Nonne

0

Python 2.7 - 684 Bytes

o=[22]
i=[[10213223,100096],[21322314,5],[31123314,5],[31331415,404],[1031223314,5],[3122331415,404],[10413223241516,303],[41322324151617,20202],[1051322314251617,202],[1051322325161718,10101],[5132231425161718,10101],[5132232516171819,0],[106132231415261718,101],[106132231426171819,0],[106132231526171819,0],[613223141526171819,0],[1011112131415161718,10101]]
l=[1011112131416171819,1011112131516171819,1011112141516171819,1011113141516171819,1111213141516171819,10713223141516271819,101112213141516171819]
for n in i:
 for x in range(n[0],n[0]+n[1]):
  m="";x=str(x)
  for v in range(10):
   v=str(v);c=x.count(v)
   if c!=0:
    m=m+str(c)+v
    if m==x:o.append(m)
o+=l
print o

Art von halb hart codiert und halb berechnet. Dabei werden die Zahlen in Gruppen von überschaubarer Größe mit oberer und unterer Grenze aufgeteilt. Die Liste i speichert die Untergrenze und die Differenz zwischen ihr und der Obergrenze als verschachtelte Liste. Alle potenziellen Kandidaten werden dann innerhalb des der Ausgabeliste o hinzugefügten Bereichs überprüft. Die letzten 7 Zahlen liegen so weit auseinander, dass es günstiger ist, sie in einer eigenen Liste zu speichern und am Ende hinzuzufügen.

Derzeit dauert die Ausführung ein paar Sekunden. Eine Vergrößerung der Gruppe würde die Anzahl der Bytes verringern, die Laufzeit jedoch verlängern. Ich bin mir nicht sicher, auf was es ankommen würde und was immer noch innerhalb des Tageslimits liegt.


0

/// 542 Bytes

/:/\/\///^/13223:!/31:*/
10:#/!223!:&/4^241:$/1819:(/51617:)/
!3!:%/5^142:@/111:-/*@121!:_/51:+/
!123!:=/41:A/617:B/19:C/*!3!:D/18:E/6^1=52:F/
#:G/
2^:H/*5^2:I/1!=($:J/_6:K/
&:L/*&:M/_7/22*2^*!1233C4C5C6C7C8C9G14G15G16G17GDGB+4+5+6+7+8+9)=5)=6)=7)=8)=9)J)M)_8)_9)A)6D)6B)7D)7B)8B*#4*#5*#6*#7*#8*#9F=5F=6F=7F=8F=9FJF_7F_8F_9FAF6DF6BF7DF7BF8BLJLML_8L_9LAL6DL6BL7DL7BL8BK(KJDKJBKMDKMBK5$KADKABK6$K7$*%(*%JD*%JB*%MD*%MB*%5$H(DH(BHJ$HM$
%(D
%(B
%J$
%M$
5^2($*EAD*EAB*E6$*6^142A$*6^152A$
EA$-=(D-=(B-=J$-=_7$-=617$-($*@121=($*@I
@12I*7^1=_627$*@22I

Probieren Sie es online!

Auf jeden Fall weniger als 1440 Bytes !!! Verwendet 28 Konstanten zusammen mit dem Literal, eine ungewöhnlich hohe Menge für ///.


Beachten Sie, dass echter Code bei 22*2^... beginnt . Alles, was zuvor passiert, ist das Suchen und Ersetzen von Mustern.
Erik der Outgolfer
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.