Escriba una función f (n, k) que muestre la cuenta regresiva k-dimensional de n.
Parece una cuenta regresiva unidimensional de 5
54321
Parece una cuenta regresiva bidimensional de 5
54321
4321
321
21
1
Finalmente, una cuenta regresiva tridimensional de 5 parece
54321
4321
321
21
1
4321
321
21
1
321
21
1
21
1
1
Definicion formal
La cuenta regresiva unidimensional de cualquier n es una sola línea con los dígitos n, n-1, ..., 1 concatenados (seguidos de una nueva línea).
Para cualquier k, la cuenta regresiva k-dimensional de 1 es la línea única
1
Para n> 1 yk> 1, una cuenta regresiva k-dimensional de n es una cuenta regresiva dimensional (k-1) de n seguida de una cuenta regresiva k-dimensional de n-1.
Entrada
Dos enteros positivos k y n <= 9, en cualquier formato que elija.
Salida
La cuenta regresiva k-dimensional de n, con una nueva línea después de cada cuenta regresiva unidimensional. Se permiten nuevas líneas adicionales en la salida.
Puntuación
Puntaje de golf estándar.
Ejemplo de bonificación
Aquí hay un ejemplo con k> n, una cuenta regresiva de 4 dimensiones desde 3 (con comentarios adicionales que no se incluirán en las soluciones reales):
-- 3-dimensional countdown from 3
321
21
1
21
1
1
-- 4-dimensional countdown from 2:
---- 3-dimensional countdown from 2:
21
1
1
---- 4-dimensional countdown from 1:
1
Aclaraciones:
Los dígitos en una línea no necesitan ser adyacentes, pero deben estar espaciados uniformemente.
Si lo prefiere, puede escribir un programa completo en lugar de solo una función.
Respuestas:
Python, 60 bytes
Pruébalo en Ideone .
Cómo funciona
La cuenta regresiva dimensional k desde n se puede definir con un solo caso base:
Usando la definición recursiva de la pregunta,
f(n,k)
devuelvef(n,k-1)+f(n-1,k)
si n> 1 y k> 1 ; de lo contrario, devuelve los últimos n + 1 caracteres de'987654321\n'
.fuente
Jalea , 8 bytes
Este es un programa completo que espera n y k como argumentos de línea de comandos.
Pruébalo en línea!
Cómo funciona
fuente
Y
funciona en lugar dep⁷
?5, 1
, se muestra[54321]
.Javascript,
403837 bytesGuardado 1 bytes gracias a @ edc65:
Respuestas anteriores
38 bytes gracias a @Neil:
40 bytes:
fuente
||
lugar de?n:
. Guarde otro byte utilizando una nueva línea literal dentro de`
s en lugar de'\n'
.f=(n,k)=>n?(k?f(n,k-1):n)+f(n-1,k):k?``:`\n`
*
en su lugar&&
.Python,
7675 bytes-1 byte gracias a @ Sp3000
Realiza el procedimiento como se describe en el OP: une los
n
resultados decrecientes para lask-1
nuevas líneas con una base de la recursión de la'n...1'
cadena cuandok
es1
(k
no mayor que1
ya que estamos garantizados como positivosk
entrada ).Casos de prueba sobre ideona
fuente
Python,
868180 bytesd
es el número de dimensiones,n
es el número de cuenta regresiva.Publicaremos una explicación pronto.
EDITAR # 1: lo cambió a lambda.
EDITAR # 2: guardado 1 byte gracias a @DestructibleWatermelon.
fuente
Haskell, 57 bytes
Ejemplo de uso:
5 # 3
->"\n54321\n4321\n321\n21\n1\n4321\n321\n21\n1\n321\n21\n1\n21\n1\n1"
.Una implementación directa de la definición.
fuente
Raqueta 215 bytes
Pruebas:
fuente
54321
aparece dos veces?λ
) siempre es menos bytes que usardefine
. Además, la entrada paran
se especificó como un número para el que compila(range 1 n)
. Consulte también sobre cómo reemplazar sucond
con anif
, ya que guarda bytes en elelse
.J,
383732 bytesEsta es una función que toma k en el LHS y yn en el RHS.
Guardado 5 bytes con ideas de @ Adám.
Uso
Explicación
fuente
Dyalog APL , 18 bytes
Solicita n , luego k .
~∘'0'⍤1
elimine (~
) los (∘
) ceros ('0'
) de las filas (⍤1
) (relleno con espacios según sea necesario) de⍕
la representación del personaje de(⌽⍳)⍤0⍣⎕
el⌽
recuento invertido ( ) hasta (⍳
) cada escalar (⍤0
),⍣
entrada repetida (⎕
) veces⊢
en⎕
entrada numéricaTryAPL en línea!
fuente
C 93 Bytes
Implementación iterativa.
C
6765615652 BytesImplementación recursiva
fuente
m
dentro de laputs()
llamada con"987654321"
.Lote, 117 bytes
La respuesta Python de Port of Dennis ♦.
fuente
Ruby, 56 bytes
Uso
Cuando muestres cualquier solución, debes usar "Kernel # Puts".
Ejemplo:
fuente