Um número lexicograficamente crescente é um número inteiro cujos dígitos estão estritamente em ordem crescente. Imprima todos os números que aumentam lexicograficamente abaixo de 10000.
Aqui estão as linhas da saída esperada:
0
1
2
3
4
5
6
7
8
9
12
13
14
15
16
17
18
19
23
24
25
26
27
28
29
34
35
36
37
38
39
45
46
47
48
49
56
57
58
59
67
68
69
78
79
89
123
124
125
126
127
128
129
134
135
136
137
138
139
145
146
147
148
149
156
157
158
159
167
168
169
178
179
189
234
235
236
237
238
239
245
246
247
248
249
256
257
258
259
267
268
269
278
279
289
345
346
347
348
349
356
357
358
359
367
368
369
378
379
389
456
457
458
459
467
468
469
478
479
489
567
568
569
578
579
589
678
679
689
789
1234
1235
1236
1237
1238
1239
1245
1246
1247
1248
1249
1256
1257
1258
1259
1267
1268
1269
1278
1279
1289
1345
1346
1347
1348
1349
1356
1357
1358
1359
1367
1368
1369
1378
1379
1389
1456
1457
1458
1459
1467
1468
1469
1478
1479
1489
1567
1568
1569
1578
1579
1589
1678
1679
1689
1789
2345
2346
2347
2348
2349
2356
2357
2358
2359
2367
2368
2369
2378
2379
2389
2456
2457
2458
2459
2467
2468
2469
2478
2479
2489
2567
2568
2569
2578
2579
2589
2678
2679
2689
2789
3456
3457
3458
3459
3467
3468
3469
3478
3479
3489
3567
3568
3569
3578
3579
3589
3678
3679
3689
3789
4567
4568
4569
4578
4579
4589
4678
4679
4689
4789
5678
5679
5689
5789
6789
Este é um desafio de código de golfe! A resposta mais curta vence!
(PS procurando uma solução python)
code-golf
number
sequence
kolmogorov-complexity
Varun Patro
fonte
fonte
[0,1,...]
, etc. ou devemos produzir cada número em uma linha separada?Respostas:
Python 2 , 56 bytes
Experimente online!
Converte cada número como
124
uma expressão1<2<4
e o avalia para verificar se os dígitos estão classificados,Um soluço acontece para números de um dígito, dando uma expressão que é apenas o número em si. Isso faz
0
com que seja avaliado um valor de Falsey, mesmo que deva ser impresso. Este é fixado por um truque sugerido por Erik o Outgolfer de fazer**n
, o que dá valor truthy0**0
paran=0
e não afeta o valor de verdade de outra forma.fonte
`
faz`n`
?repr()
função, não astr()
função. Eles nem sempre são os mesmos. Aqui está um exemplo.str()
equivalente.Python 2 , 55 bytes
Experimente online!
fonte
Haskell , 50 bytes
Experimente online!
Produz uma cadeia de linhas múltiplas. Verificamos que o número está
s
aumentando usandos==scanl1(max.succ)s
, uma variante da verificação de classificação usuals==scanl1 max s
que garante classificação estrita, incrementando cada caractere de dígito antes de obter o máximo dele e o próximo dígito.Ourous salvou um byte usando
6^5
como limite superior no lugar de um número de 4 dígitos.fonte
Geléia , 7 bytes
Experimente online!
Como funciona
fonte
0
é incluído aqui, mas não conheço Jelly. Estou certo de que o conjunto de potências de Jelly inclui a matriz vazia que é convertida para0
quando "não dizimada"?Japonês
-R
,12118 bytesTeste-o
* Ou, para oferecer uma explicação melhor: o
ü
método classifica uma matriz e a divide em elementos iguais (por exemplo,[8,4,8,4].ü() -> [[4,4],[8,8]]
) e, em seguida, no que parece ser uma peculiaridade estranha e, esperançosamente, não um bug, oì
método, ao converter a matriz novamente em um número, pega o primeiro elemento de cada matriz aninhada, em vez de achatar a matriz, que era o que eu esperava quando tentei esse truque (por exemplo,[[4,4],[8,8]].ì() -> 48
).fonte
L²Ç¥ì ü ¬Ãð
ü
truque vocês usados é genial :-) @OliverR ,
6249 bytesExperimente online!
Como
combn
itera através de sua entrada na ordem fornecida, é fácil criar todos os números inteiros que aumentam lexicograficamente, imprimindo-os em ordem.write
imprime cadai
número de dois dígitos em linhas de largurai
, atendendo perfeitamente aos requisitos da nova linha.fonte
combn
!Perl 6 , 25 bytes
-1 byte graças a nwellnhof
Experimente online!
.comb
produz uma lista dos dígitos de cada número, e[<]
faz um menos do que a redução nessa lista, o equivalente a: digit1 < digit2 <... < digitN .fonte
[<](.comb)&&.say
salva um byte.Haskell,
5655 bytesEdit: -1 byte graças a @Ourous
Experimente online!
fonte
PowerShell ,
4240 bytesExperimente online!
Loop de
0
para1e4
(ou seja,10000
). Puxe os objetos em que|?{...}
o número como uma string$_
é igual-eq
ao número convertidot
oCharArray
e editesort
com o-u
sinalizador nique. Em outras palavras, apenas números iguais às suas seqüências classificadas e deduplicadas. Cada um deles é deixado no pipeline e a saída está implícita.fonte
Pitão , 10 bytes
Experimente online!
Como funciona
fonte
J, 26 bytes
Experimente online!
explicação
fonte
Lisp comum ,
7472 bytesExperimente online!
-2 bytes obrigado a @Shaggy!
fonte
05AB1E (herdado) , 8 bytes
Experimente online!
Funciona também na nova versão do 05AB1E, mas é dolorosamente lento por algum motivo.
Quão?
fonte
Perl 5 , 47 bytes
Experimente online!
Mais velho:
52 bytes
fonte
Python 2 , 61 bytes
Experimente online!
fonte
Python 2 ,
6461 bytesExperimente online!
Obtém os caracteres exclusivos da representação de seqüência de caracteres do número inteiro, os classifica e compara o resultado ao número original.
fonte
range(9999)
ou qualquer outro número entre 6790 e 9999. Nossas soluções são quase idênticos BTW :)V , 41 bytes
Experimente online!
Hexdump:
fonte
Carvão , 19 bytes
Experimente online! Link é a versão detalhada do código. Explicação:
fonte
Geléia ,
1398 bytesGuardado 5 bytes graças a @Dennis
Experimente online!
Explicação
Gera todos os números que aumentam lexicograficamente abaixo de 10000, pegando os dígitos [1 ... 9] e localizando todas as combinações de comprimento ≤ 4.
Geléia ,
11109 bytesGuardou um byte graças a @EriktheOutgolfer
Experimente online!
Explicação
Filtra o intervalo, mantendo os números que estão aumentando lexicograficamente.
fonte
C # (Compilador interativo do Visual C #) ,
102101... 73 bytes-12 e -4 obrigado @Dennis!
Experimente online!
Cada número inteiro de 0 a 7k é testado convertendo-o primeiro em uma string. Aproveitando o fato de o C # tratar seqüências de caracteres como enumeráveis de caracteres e LINQ, uma agregação é calculada para cada caractere enumerável da seguinte maneira:
:
maior que9
Se o resultado for menor que
:
, então o número terá dígitos lexicograficamente crescentes.fonte
6789
? Isso é menor que7000
, então você não precisa subir mais.Wolfram Language (Mathematica) , 36 bytes
Depois que eu escrevi isso, ficou claro que cada número deve estar em uma nova linha, então +7 bytes para o
Print/@
.Este método aproveita o fato de que a
Subsets
função 1) não replica nenhum dígito e 2) classifica a saída por tamanho e conteúdo definidos.FromDigits
monta cada lista de dígitos.-1 byte graças a @ Mr.Xcoder
Experimente online!
fonte
Print/@FromDigits/@Range@9~Subsets~4
por 36 bytes.K (ngn / k) / K (oK) ,
323026 bytesSolução:
Experimente online!
Explicação:
fonte
JavaScript REPL, 64 bytes
Um pouco de pub pub provavelmente tão longe de ser o ideal.
Experimente online
Sim, fazê-lo sem um IIFE seria alguns bytes mais curto, mas isso gera um erro de estouro quando chamado, o que normalmente seria bom, pois podemos assumir memória infinita para fins de código golf, mas, para mim, não parece ser no espírito dos desafios da KC.
fonte
console.log
ou redefinir o seu envio como JavaScript REPL .C (gcc) ,
978981 bytesGraças a ceilingcat por -8 bytes.
Mais -8 graças a Dennis
Experimente online!
fonte
Python 2 , 63 bytes
Experimente online!
fonte
Stax , 8 bytes
Execute e depure
fonte
Limpas , 90 bytes
Experimente online!
fonte
Vermelho , 59 bytes
Experimente online!
fonte
Geléia , 7 bytes
Experimente online!
Quão?
fonte
MATLAB, 52 bytes
fonte