A047841:自伝的な数字


12

定義

番号を記述するプロセスは次のとおりです。

  • から0までの各番号9は、番号に含まれています。
  • その数字の頻度を書き留め、次に数字を書き留めます。

たとえば、番号の場合10213223

  • 1発生が0あります
  • 2の発生1
  • 3の発生2
  • 2の発生3

したがって、記述する数値102132231021322310最初のプロパティ21から、2番目のプロパティからなど)です。

数字の出現回数は9を超える場合があることに注意してください。

仕事

自分自身を説明するすべての数字を印刷/出力する必要があります。

スペック

  • 標準の抜け穴が適用されますが、出力をハードコーディングしたり、プログラムに出力に関連する情報を保存したりすることはできません。
  • 出力の番号は任意の順序で指定できます。
  • 出力内の数字は重複すること許可されています。
  • 出力の代わりに印刷することを選択した場合、任意の区切り文字を使用できます。
  • 出力の代わりに印刷することを選択した場合、出力の前置または後置、あるいはその両方が許可されます。
  • 区切り文字、接頭辞、および接尾辞に数字を含めることできません(U + 0030〜U + 0039)。
  • ソリューションは1日で計算する必要があります。

全リスト(109アイテム)

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

参照資料


これはだまされていると確信しています...質問が見つかりません
ベータ崩壊

回答:


8

gawk、161バイト

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

(明確にするために改行とタブ)

これは、各番号の発生が制限されているという事実を使用する単純なカウンターです。たとえば、0は任意の数で1回以下、1は11回以下、2は3回以下などです。

この方法では、チェックする番号は124415のみです。

次に、すべての番号を作成し、それらの有効性をチェックします。

数秒で完了します。


2

dc、487バイト

ソリューションをハードコーディングしました。22から始めて、違いを追加して次の数字を取得します。1を5回連続して追加するなどの一部の戻り操作は、レジスタに格納されます。

これはdcで書かれた私の最初のプログラムなので、おそらくもっと多くのゴルフをすることができます。

[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

を使用してプログラムを実行できdc -e "[solution]"ます。ここで、[solution]は上記の文字列です。番号を逆順に出力します。dc -e "[solution]" | sort -nリストと同じ順序で出力します。


1

ルビー、776バイト

ルールでは、「出力をハードコーディングすることは許可されている」と書かれているため、このソリューションはまさにそれを行います。

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}

ルビー、116バイト

実行するのに時間がかかりすぎるが、十分に長く与えられればそれを行うことができるはずのはるかに短いプログラム。時間の制約に適合するかどうかはわかりません。

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

さあ、整数パーティション29(19 + 10)を構築するのと同じくらい長い時間がかかるはずです。
リーキー修道女

0

Python 2.7-684バイト

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

ハードコーディングされた半分と計算された半分の種類。数値を上限と下限のある管理可能なサイズのグループに分割するアプローチを取ります。リストiは、ネストされたリストとして下限と上限との差を保存します。すべての潜在的な候補は、出力リストoに追加された範囲内でチェックされます。最後の7つの数字は非常に離れているため、独自のリストに保存して最後に追加する方が安価です。

現在は数秒で実行され、明らかにグループサイズを増やすとバイト数は減りますが、実行時間は増えます。それが何に帰着し、それでも1日の制限内にあるかはわかりません。


0

///、542バイト

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

オンラインでお試しください!

間違いなく1440バイト未満です!!! リテラルと一緒に28個の定数を使用します。これは、///に非常に多く使用されます。


実際のコードは22*2^...で始まり、前のすべてがパターンの検索と置換であることに注意してください。
エリックアウトゴルファー16年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.