Un número lexicográficamente creciente es un número entero cuyos dígitos están en un orden estrictamente creciente. Imprima todos los números lexicográficamente crecientes por debajo de 10000.
Aquí hay líneas de la salida 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 es un desafío de golf de código! ¡La respuesta más corta gana!
(PS buscando una solución de Python)
code-golf
number
sequence
kolmogorov-complexity
Varun Patro
fuente
fuente
[0,1,...]
, etc. o debemos generar cada número en una línea separada?Respuestas:
Python 2 , 56 bytes
Pruébalo en línea!
Convierte cada número como
124
en una expresión1<2<4
y lo evalúa para verificar si los dígitos están ordenados,Se produce un hipo para los números de un dígito que dan una expresión que simplemente es el número en sí. Esto hace
0
que se evalúe a un valor de Falsey aunque debería imprimirse. Esto se soluciona con un truco sugerido por Erik the Outgolfer de hacer**n
, que le da valor0**0
den=0
verdad y no afecta el valor de verdad de lo contrario.fuente
`
en`n`
?repr()
función, no lastr()
función. No siempre son lo mismo. Aquí hay un ejemplo.str()
equivalente.Python 2 , 55 bytes
Pruébalo en línea!
fuente
Haskell , 50 bytes
Pruébalo en línea!
Emite una cadena multilínea. Verificamos que el número
s
aumente usandos==scanl1(max.succ)s
, una variante de la verificación de clasificación habituals==scanl1 max s
que asegura una clasificación estricta al incrementar cada carácter de dígito antes de tomar el máximo de él y el siguiente dígito.Ourous guardó un byte al usarlo
6^5
como límite superior en lugar de un número de 4 dígitos.fuente
Jalea , 7 bytes
Pruébalo en línea!
Cómo funciona
fuente
0
se incluye aquí, pero no conozco a Jelly. ¿Estoy en lo cierto de que el conjunto de poder de Jelly incluye la matriz vacía a la que luego se convierte0
cuando se "descuida"?Japt
-R
,12118 bytesPruébalo
* O, para ofrecer una mejor explicación: el
ü
método ordena una matriz y la divide en elementos iguales (por ejemplo,[8,4,8,4].ü() -> [[4,4],[8,8]]
) y luego, en lo que parece ser una peculiaridad extraña y, con suerte, no es un error, elì
método, al convertir la matriz nuevamente un número, toma el primer elemento de cada matriz anidada, en lugar de aplanar primero la matriz, que es lo que esperaba cuando probé este truco (por ejemplo,[[4,4],[8,8]].ì() -> 48
).fuente
L²Ç¥ì ü ¬Ãð
ü
truco que usaron es genial :-) @OliverR ,
6249 bytesPruébalo en línea!
Debido a que
combn
itera a través de su entrada en el orden dado, es fácil crear todos los enteros que aumentan lexicográficamente, imprimiéndolos en orden.write
los imprime cadai
número de dígitos en líneas de anchoi
, cumpliendo perfectamente el requisito de nueva línea también.fuente
combn
!Perl 6 , 25 bytes
-1 byte gracias a nwellnhof
Pruébalo en línea!
.comb
produce una lista de los dígitos de cada número y[<]
hace una reducción menor que esa lista, equivalente a: digit1 < digit2 <... < digitN .fuente
[<](.comb)&&.say
guarda un byte.Haskell
5655 bytesEditar: -1 byte gracias a @Ourous
Pruébalo en línea!
fuente
PowerShell ,
4240 bytesPruébalo en línea!
Bucle de
0
a1e4
(es decir,10000
). Extraiga aquellos objetos donde|?{...}
el número como una cadena$_
es-eq
ual al número emitidot
oCharArray
y luego editesort
con la-u
bandera de nique. En otras palabras, solo números que son iguales a sus cadenas ordenadas y deduplicadas. Cada uno de ellos se deja en la tubería y la salida es implícita.fuente
Pyth , 10 bytes
Pruébalo en línea!
Cómo funciona
fuente
J 26 bytes
Pruébalo en línea!
explicación
fuente
Lisp común ,
7472 bytesPruébalo en línea!
-2 bytes gracias a @Shaggy!
fuente
05AB1E (heredado) , 8 bytes
Pruébalo en línea!
También funciona en la nueva versión de 05AB1E, pero es dolorosamente lento por alguna razón.
¿Cómo?
fuente
Perl 5 , 47 bytes
Pruébalo en línea!
Más viejo:
52 bytes
fuente
Python 2 , 61 bytes
Pruébalo en línea!
fuente
Python 2 ,
6461 bytesPruébalo en línea!
Obtiene los caracteres únicos de la representación de cadena del entero, los ordena y compara el resultado con el número original.
fuente
range(9999)
o cualquier otro número entre 6790 y 9999. Nuestras soluciones son casi idénticas, por cierto :)V , 41 bytes
Pruébalo en línea!
Hexdump:
fuente
Carbón de leña , 19 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
fuente
Jalea ,
1398 bytesGuardado 5 bytes gracias a @Dennis
Pruébalo en línea!
Explicación
Genera todos los números lexicográficamente crecientes por debajo de 10000 tomando los dígitos [1 ... 9] y encontrando todas las combinaciones de longitud ≤ 4.
Gelatina ,
11109 bytesGuardado un byte gracias a @EriktheOutgolfer
Pruébalo en línea!
Explicación
Filtra a través del rango, manteniendo los números que aumentan lexicográficamente.
fuente
C # (Interactive compilador de Visual C #) ,
102101... 73 bytes-12 y -4 gracias @Dennis!
Pruébalo en línea!
Cada entero de 0 a 7k se probó al convertirlo primero en una cadena. Aprovechando el hecho de que C # trata las cadenas como caracteres enumerables y LINQ, se calcula un agregado para cada carácter enumerable de la siguiente manera:
:
que es mayor que9
Si el resultado de esto es menor que
:
, entonces el número tiene dígitos que aumentan lexicográficamente.fuente
6789
? Esto es menor que7000
, por lo que no tiene que ir más alto.Wolfram Language (Mathematica) , 36 bytes
Después de escribir esto, se aclaró que cada número debe estar en una nueva línea, por lo que +7 bytes para el
Print/@
.This method takes advantage of the fact that the
Subsets
function 1) doesn't replicate any digits and 2) sorts the output by set size and set contents.FromDigits
assembles each list of digits.-1 byte thanks to @Mr.Xcoder
Try it online!
fuente
Print/@FromDigits/@Range@9~Subsets~4
for 36 bytes.K (ngn/k) / K (oK),
323026 bytesSolution:
Try it online!
Explanation:
fuente
JavaScript REPL, 64 bytes
A bit of pub golf so probably far from optimal.
Try it online
Yes, doing it without an IIFE would be a few bytes shorter but that throws an overflow error when called, which would normally be fine as we can assume infinite memory for the purposes of code golf but, to me, doesn't seem to be in the spirit of KC challenges.
fuente
console.log
or relabel your submission as JavaScript REPL.C (gcc),
978981 bytesThanks to ceilingcat for -8 bytes.
Another -8 thanks to Dennis
Try it online!
fuente
Python 2, 63 bytes
Try it online!
fuente
Stax, 8 bytes
Run and debug it
fuente
Clean, 90 bytes
Try it online!
fuente
Red, 59 bytes
Try it online!
fuente
Jelly, 7 bytes
Try it online!
How?
fuente
MATLAB, 52 bytes
fuente