A047841: Автобиографические номера

12

Определение

Вот процесс для описания числа:

  • Для каждого номера от 0к , 9который присутствует в количестве:
  • Запишите частоту этой цифры, а затем цифры.

Например, для номера 10213223:

  • Существует 1возникновение 0,
  • 2появления 1,
  • 3появления 2,
  • 2появления 3.

Следовательно, число, которое описывает 10213223это 10213223( 10из первого свойства, 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

Ссылки

Дрянная Монахиня
источник
Я вполне уверен, что это дурак ... Я просто не могу найти вопрос
Beta Decay

Ответы:

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 номеров для проверки.

Затем он создает все числа и проверяет их действительность.

Завершается через несколько секунд.

Cabbie407
источник
2

постоянный ток, 487 байт

Твердо закодированное решение. Я начинаю с 22 и добавляю различия, чтобы получить следующие числа. Некоторые операции возврата, такие как добавление 1 пять раз подряд, хранятся в регистрах.

Это моя первая программа, написанная на постоянном токе, так что она, вероятно, может сыграть намного больше.

[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]", где [решение] строка выше. Он выводит числа в обратном порядке. dc -e "[solution]" | sort -nдля вывода в том же порядке, что и список.

camelthemammel
источник
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]}
MegaTom
источник
Да ладно, это займет столько же времени, сколько будет построено целочисленное разбиение 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 чисел настолько далеки друг от друга, что дешевле хранить их в своем собственном списке и добавлять в конце.

В настоящее время он выполняется за пару секунд, и очевидно, что увеличение размера группы уменьшит количество байтов, но увеличит время выполнения. Не уверен, к чему это приведет и все еще будет в пределах одного дня.

ElPedro
источник
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 констант вместе с литералом, необычно большое количество ///.

Эрик Outgolfer
источник
Обратите внимание, что реальный код начинается с 22*2^..., все до того, как найти и заменить шаблоны.
Эрик Outgolfer