A047841: Otobiyografik sayılar


13

Tanım

İşte bir sayıyı tanımlama süreci:

  • Her numara için 0için 9bu sayı bulunur:
  • Bu basamağın frekansını ve ardından basamağı yazın.

Örneğin, numara için 10213223:

  • Orada 1meydana gelmesi 0,
  • 2oluşumları 1,
  • 3oluşumları 2,
  • 2oluşumları 3.

Bu nedenle, tarif sayı 10213223olduğu 10213223( 10birinci özelliği ile ilgili 21ikinci, vb.)

Bir basamağın meydana gelme sayısının 9'dan fazla olabileceğini unutmayın .

Görev

Kendini tanımlayan tüm sayıları basmanız / çıkarmanız gerekir.

gözlük

  • Çıktıyı sabit olarak kodlamanıza veya çıktıyla ilgili bilgileri programınızda depolamanıza izin verilmesi dışında standart boşluklar uygulanır .
  • Çıktıdaki sayılar herhangi bir sırada olabilir .
  • Çıktıdaki sayıların yinelenmesine izin verilir .
  • Çıktı yerine yazdırmayı seçerseniz, herhangi bir ayırıcı kullanabilirsiniz .
  • Sen edilir izin yerine çıktı yazdırmak seçerseniz ve / veya postfix çıkışını önek.
  • Ayırıcı ve ön ek ve sonek olabilir değil (U + 0039 U + 0030) herhangi bir basamak içerir.
  • Çözüm bir günde hesaplanmalıdır .

Tüm liste (109 öğe)

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

Referanslar


Bunun bir dupe olduğuna eminim ... Soruyu bulamıyorum
Beta Çürüme

Yanıtlar:


8

gawk, 161 bayt

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
    }
}

(satır sonları ve netlik için sekmeler)

Her sayının sınırlı bir oluşumu olduğu gerçeğini kullanan basit bir sayaç. Örneğin, 0 herhangi bir sayıda en fazla bir kez, 1 en fazla 11 kez, 2 en fazla 3 kez ... vb.

Bu şekilde kontrol edilecek sadece 124415 sayı vardır.

Daha sonra tüm sayıları oluşturur ve geçerliliklerini kontrol eder.

Birkaç saniye içinde tamamlanır.


2

dc, 487 bayt

Çözeltiyi kodladı. 22 ile başlıyorum ve sonraki sayıları almak için farklılıkları ekliyorum. Bir satırda beş kez 1 ekleme gibi bazı iade işlemleri kayıtlarda saklanır.

Bu benim dc'de yazılmış ilk programım, bu yüzden muhtemelen çok daha fazla golf oynayabilir.

[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

Programı kullanarak çalıştırabilirsiniz dc -e "[solution]", burada [çözüm] yukarıdaki dizedir. Sayıları ters sırada çıkarır. dc -e "[solution]" | sort -nlisteyle aynı sırada çıktı için.


1

Ruby, 776 bayt

Kurallar, "çıktıyı kodlamanıza izin verilir" der, bu nedenle bu çözüm bunu yapar.

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 bayt

Çalışması çok uzun süren, ancak yeterince uzun süre verilen çok daha kısa bir program bunu yapabilmelidir. Zaman kısıtlamasına uyup uymadığını bilmiyorum.

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]}

Hadi, 29 (19 + 10) tamsayı bölümünü oluşturmak kadar uzun zaman alacak.
Leaky Nun

0

Python 2.7-684 bayt

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

Yarı sert kodlanmış ve yarı hesaplanmış tür. Sayıları üst ve alt limiti olan yönetilebilir boyuttaki gruplara bölme yaklaşımını kullanır. Liste i alt limiti ve üst limit arasındaki farkı iç içe bir liste olarak saklar. Tüm potansiyel adaylar daha sonra o çıktı listesine eklenen aralıkta kontrol edilir. Son 7 sayı o kadar uzaktır ki, bunları kendi listelerinde saklamak ve sonuna eklemek daha ucuzdur.

Şu anda birkaç saniye içinde çalışıyor ve grup boyutunu arttırmak bayt sayısını azaltacak, ancak çalışma süresini artıracak. Ne olacağından emin değilim ve yine de bir gün sınırı içinde.


0

/// , 542 bayt

/:/\/\///^/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

Çevrimiçi deneyin!

Kesinlikle daha az 1440 bayt! /// için alışılmadık derecede yüksek olan değişmez değerle birlikte 28 sabit kullanır.


Gerçek kod başlar 22*2^..., önceki her şey bulmak ve değiştirmek desen olduğunu unutmayın.
Outgolfer Erik
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.