Desafío:
Entrada: tres enteros: longitud del borde inferior; cantidad inicial de granos de arena; índice
Salida: muestra el estado de la parte inferior de un reloj de arena en el índice dado, en función de la longitud del borde inferior y la cantidad de granos de arena.
Reglas de desafío:
- Simulamos los granos de arena con los dígitos 1-9
- Ponemos la cantidad restante de granos de arena en la parte superior en el medio, seguido de un solo carácter de su elección (excluyendo dígitos, espacios en blanco y nuevas líneas; es decir
-
) en la línea debajo de él. - Cuando se llena el reloj de arena, lo llenamos por fila, un dígito a la vez
- Cuando la arena puede ir hacia la izquierda o hacia la derecha, SIEMPRE vamos hacia la derecha (lo mismo se aplica al equilibrio de la cantidad restante de granos de arena por encima del reloj de arena)
- Cuando llegamos a 9 está lleno, y no podemos colocar más arena en ese lugar específico del reloj de arena.
- La cantidad de granos de arena que quedan también siempre está alineada correctamente
- Una vez que la mitad inferior del reloj de arena está completamente llena, o las cantidades de granos de arena restantes llegan a 0, no podemos ir más allá, y esta sería la salida para todos los índices más allá de este punto
- Se permite tanto el índice 0 como el índice 1, y especifique lo que ha utilizado en su respuesta.
- Los espacios finales y principales y una nueva línea principal o final son opcionales
- Se le permite usar cualquier otro carácter en lugar de un cero para llenar los espacios vacíos de la parte inferior del reloj de arena (excluyendo dígitos, líneas nuevas o el carácter que ha utilizado como cuello), si elige mostrarlos.
- La longitud del borde inferior siempre será impar
- La longitud del borde inferior será
>= 3
; y las cantidades de granos de arena>= 0
- Si lo desea, también puede imprimir todos los estados hasta el índice dado, incluido
- Puede suponer que el índice (indexado a 0) nunca será mayor que la cantidad total de granos de arena (por lo tanto, cuando hay 100 granos de arena, el índice 100 es la entrada de índice válida máxima).
- El primer índice (0 para 0 indexado; 1 para 1 indexado) generará un reloj de arena vacío con la cantidad de granos de arena por encima.
Ejemplo: las imágenes (o ascii-art) dicen más de mil palabras, así que aquí hay un ejemplo:
Ingrese la longitud del borde inferior: 5
ingrese la cantidad de granos de arena: en 100
lugar de un índice actual, muestro todos los pasos aquí:
Salida para todos los índices posibles con longitud de borde inferior 5
y cantidad de granos de arena 100
:
100
-
0
000
00000
99
-
0
000
00100
98
-
0
000
00110
97
-
0
000
01110
96
-
0
000
01111
95
-
0
000
11111
94
-
0
000
11211
93
-
0
000
11221
92
-
0
000
12221
91
-
0
000
12222
90
-
0
000
22222
89
-
0
000
22322
88
-
0
000
22332
87
-
0
000
23332
86
-
0
000
23333
85
-
0
000
33333
84
-
0
000
33433
83
-
0
000
33443
82
-
0
000
34443
81
-
0
000
34444
80
-
0
000
44444
79
-
0
000
44544
78
-
0
000
44554
77
-
0
000
45554
76
-
0
000
45555
75
-
0
000
55555
74
-
0
000
55655
73
-
0
000
55665
72
-
0
000
56665
71
-
0
000
56666
70
-
0
000
66666
69
-
0
000
66766
68
-
0
000
66776
67
-
0
000
67776
66
-
0
000
67777
65
-
0
000
77777
64
-
0
000
77877
63
-
0
000
77887
62
-
0
000
78887
61
-
0
000
78888
60
-
0
000
88888
59
-
0
000
88988
58
-
0
000
88998
57
-
0
000
89998
56
-
0
000
89999
55
-
0
000
99999
54
-
0
010
99999
53
-
0
011
99999
52
-
0
111
99999
51
-
0
121
99999
50
-
0
122
99999
49
0
222
99999
48
-
0
232
99999
47
-
0
233
99999
46
-
0
333
99999
45
-
0
343
99999
44
-
0
344
99999
43
-
0
444
99999
42
-
0
454
99999
41
-
0
455
99999
40
-
0
555
99999
39
-
0
565
99999
38
-
0
566
99999
37
-
0
666
99999
36
-
0
676
99999
35
-
0
677
99999
34
-
0
777
99999
33
-
0
787
99999
32
-
0
788
99999
31
-
0
888
99999
30
-
0
898
99999
29
-
0
899
99999
28
-
0
999
99999
27
-
1
999
99999
26
-
2
999
99999
25
-
3
999
99999
24
-
4
999
99999
23
-
5
999
99999
22
-
6
999
99999
21
-
7
999
99999
20
-
8
999
99999
19
-
9
999
99999
Entonces como ejemplo:
inputs: 5,100,1
output:
99
-
0
000
00100
Same example with another valid output format:
99
~
.
...
..1..
Reglas generales:
- Este es el código de golf , por lo que la respuesta más corta en bytes gana.
No permita que los lenguajes de código de golf lo desalienten de publicar respuestas con idiomas que no sean de código. Trate de encontrar una respuesta lo más breve posible para 'cualquier' lenguaje de programación. - Se aplican reglas estándar para su respuesta, por lo que puede utilizar STDIN / STDOUT, funciones / método con los parámetros adecuados, programas completos. Tu llamada.
- Las lagunas predeterminadas están prohibidas.
- Si es posible, agregue un enlace con una prueba para su código.
- Además, agregue una explicación si es necesario.
Casos de prueba:
INPUTS: bottom-edge length, amount of grains of sand, index (0-indexed)
inputs: 5,100,1
output:
99
-
0
000
00100
inputs: 5,100,24
output:
76
-
0
000
45555
inputs: 5,100,100
output:
19
-
9
999
99999
inputs: 5,10,15
output:
0
-
0
000
22222
inputs: 3,30,20
output:
10
-
0
677
inputs: 3,3,0
3
-
0
000
inputs: 9,250,100
150
-
0
000
00000
2333332
999999999
inputs: 9,225,220
5
-
4
999
99999
9999999
999999999
inputs: 13,1234567890,250
1234567640
-
0
000
00000
0000000
344444443
99999999999
9999999999999
inputs: 25,25,25
0
-
0
000
00000
0000000
000000000
00000000000
0000000000000
000000000000000
00000000000000000
0000000000000000000
000000000000000000000
00000000000000000000000
1111111111111111111111111
5,100,10000
¿ Por qué lo hace20+9+9+9+9+9+9+9+9+9 = 101
?Respuestas:
05AB1E ,
6863595756 bytesPruébalo en línea!
Explicación
IÅÉÅ9
Inicializamos la pila con una lista de la lista de 9.
Cada lista representa una fila, por lo que la longitud de cada lista es impar y la longitud de la última lista es igual a la primera entrada.
Una entrada de 5 daría como resultado
[[9], [9, 9, 9], [9, 9, 9, 9, 9]]
[DOO²Q#ćD_Piˆëć<¸«¸ì]
Luego iteramos sobre estas listas decrementando elementos en una lista hasta que la lista consta solo de ceros, y luego pasamos a la siguiente. Nos detenemos cuando la suma total es igual a la segunda entrada.
Ahora tenemos que ordenar la lista final simulando la eliminación de elementos de lados alternos en lugar de izquierda a derecha como lo hemos estado haciendo.
Ahora formateamos la salida correctamente
fuente
Limpio ,
305289 bytesPruébalo en línea!
fuente
Perl 5 , 301 bytes
Pruébalo en línea!
fuente
Carbón ,
686362 bytesPruébalo en línea! El enlace es a la versión detallada del código. Editar: guardado 5 bytes eliminando la comprobación de rango de índice ahora innecesario. Explicación:
Ingrese la longitud
q
, el número de granos de arenah
y el índicez
.Pase sobre las
(q+1)/2
filas (de abajo hacia arriba), luego 9 granos en cada celda de la fila, luego pase sobre los dígitos de la fila.Salta al dígito.
Si es posible, distribuya un grano de arena a este dígito, disminuyendo la cantidad de arena e índice restante. Si hemos pasado el índice, esto todavía convierte los espacios en ceros, llenando el reloj de arena. El dígito se imprime hacia arriba porque esto significa que el cursor estará en el cuello después del último dígito.
Imprime el cuello.
Centre e imprima la cantidad de arena restante.
fuente