A047841:自传编号


12

定义

这是描述数字的过程:

  • 对于数字中从0到的每个9数字:
  • 写下该数字的频率,然后写下该数字。

例如,对于数字10213223

  • 1发生0
  • 2出现了1
  • 3出现了2
  • 2发生3

因此,描述的数字102132231021322310从第一个属性,21从第二个属性,等等)。

注意,数字的出现次数可以大于9

任务

您将打印/输出所有描述自己的数字。

眼镜

  • 除了允许您对输出进行硬编码或将与输出有关的信息存储在程序中之外,存在标准漏洞
  • 输出中的数字可以任意顺序
  • 输出中的数字允许重复。
  • 如果选择打印而不是输出,则可以使用任何分隔符
  • 你是允许的,如果你选择要打印的,而不是输出到前缀和/或后缀输出。
  • 分隔符,前缀和后缀不得包含任何数字(U + 0030至U + 0039)。
  • 解决方案必须在一天内计算。

全部列表(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

参考文献


我相当肯定,这是一种欺骗......我只是找不到问题
β衰变

Answers:


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不超过11​​次,2不超过3次...依此类推。

这样,只有124415个号码需要检查。

然后,它将创建所有数字并检查其有效性。

在几秒钟内完成。


2

直流电,487字节

对解决方案进行硬编码。我从22开始并添加差异以得到下一个数字。某些返回操作(例如,连续五次加1)存储在寄存器中。

这是我有史以来第一个用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

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

Ruby,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)的整数分区所需的时间。
Leaky Nun

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个数字相距甚远,因此将它们存储在自己的列表中并在末尾添加它会比较便宜。

它目前仅在几秒钟内运行,显然增加组大小会减少字节数,但会增加运行时间。不知道它将下降到什么并且仍在一天的限制之内。


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^... 开始,之前的所有操作都是查找和替换模式。
暴民埃里克
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.