Problema
Dado un valor n, imagine un paisaje de montaña inscrito en una referencia (0, 0) a (2n, 0). No debe haber espacios blancos entre las pendientes y tampoco la montaña debe descender por debajo del eje x. El problema a resolver es: dado n (que define el tamaño del paisaje) y el número k de picos (k siempre menor o igual que n), ¿cuántas combinaciones de montañas son posibles con k picos?
Entrada
n quién representa el ancho del paisaje yk cuál es el número de picos.
Salida
Solo la cantidad de combinaciones posibles.
Ejemplo
Dado n = 3 yk = 2, la respuesta es 3 combinaciones.
Solo para dar un ejemplo visual, son los siguientes:
/\ /\ /\/\
/\/ \ / \/\ / \
son las 3 combinaciones posibles usando 6 (3 * 2) posiciones y 2 picos.
Editar: - más ejemplos -
n k result
2 1 1
4 1 1
4 3 6
5 2 10
Condición ganadora
Aplican reglas estándar de código de golf . La presentación más corta en bytes gana.
fuente
n
pares de paréntesis coincidentes que contienenk
instancias exactas de()
"?k
debe manejar una entrada con cero? Si es así, ¿se debe manejar una entrada conn
igual a cero (conk
también cero por definición)?Respuestas:
Python, 40 bytes
Pruébalo en línea!
Utiliza la recurrenciaan,1=1 , an,k=n(n−1)k(k−1)an−1,k−1 .
fuente
Jalea , 7 bytes
Pruébalo en línea!
Toma entrada como
n
entoncesk
. Usa la fórmulaque encontré en Wikipedia .
7 bytes
Cada línea funciona por sí sola.
Toma entrada como
k
entoncesn
.7 bytes
fuente
Ṫ
) que solo toma el último elemento de un argumento único y el que usé (ṫ
) que toma dos argumentos. El primer argumento es una lista y el segundo es un número (en mi caso-1
representado por un-
en el código) que le indica cuántos elementos guardar. Tener-1
dar dos elementos era la forma golfiest para definirṫ
cⱮ×ƝṪ÷⁸
JavaScript (ES6),
3330 bytesGuardado 3 bytes gracias a @Shaggy
Toma entrada como
(n)(k)
.Pruébalo en línea!
Implementa la definición recursiva utilizada por Anders Kaseorg .
JavaScript (ES7),
59584945 bytesToma entrada como
(n)(k)
.Pruébalo en línea!
Calcula:
Derivado de A001263 (primera fórmula).
fuente
Wolfram Language (Mathematica) , 27 bytes
Tres versiones, todas de la misma longitud:
Pruébalo en línea! (Solo la primera versión, pero puede copiar y pegar para probar las otras).
fuente
J ,
1711 bytesPruébalo en línea!
Toma
n
como argumento correcto,k
como el izquierdo. Utiliza la misma fórmula que la respuesta Jelly de dylnan y la solución APL de Quintec.Explicación:
fuente
APL (Dyalog),
19181612 bytesGracias a @Galen Ivanov por -4 bytes
Utiliza la identidad en la secuencia OEIS. Toma k a la izquierda yn a la derecha.
TIO
fuente
⊢÷⍨!×⊢!⍨¯1+⊣
para 12 bytes , argumento invertidoRuby , 50 bytes.
Pruébalo en línea!
fuente
Lisp común , 76 bytes
Pruébalo en línea!
fuente
(*(1- x)x)
lugar de(* x(1- x))
Perl 6 , 33 bytes
Pruébalo en línea!
Usa la fórmula
Explicación
Versión alternativa, 39 bytes.
Pruébalo en línea!
Utiliza la fórmula de la respuesta de Arnauld:
fuente
Jalea , 8 bytes
Un enlace diádico que acepta
n
a la izquierda yk
a la derecha que produce el recuento.Pruébalo en línea!
fuente
Stax , 9 bytes
Ejecutar y depurarlo
Estoy usando la fórmula de dylnan en stax.
Desempaquetado, sin golf y comentado, el programa se ve así.
Ejecute este
fuente
APL (NARS), 17 caracteres, 34 bytes
prueba:
fuente