El triángulo de Pascal se genera al comenzar 1
y formar cada fila a partir de adiciones sucesivas. Aquí, en cambio, formaremos un triángulo alternando la multiplicación y la suma.
Comenzamos la fila 1
con solo un solitario 1
. Posteriormente, la suma se realiza en las filas impares, y la multiplicación se realiza en las filas pares (1 indexado). Al realizar el paso de suma, suponga que los espacios fuera del triángulo están llenos de 0
s. Al realizar el paso de multiplicación, suponga que el exterior está lleno de 1
s.
Aquí está el triángulo completo hasta 7 filas. El *
o +
a la izquierda muestra qué paso se realizó para generar esa fila.
1 1
2 * 1 1
3 + 1 2 1
4 * 1 2 2 1
5 + 1 3 4 3 1
6 * 1 3 12 12 3 1
7 + 1 4 15 24 15 4 1
Reto
Dada entrada n
, salida de la n
fila th de este triángulo.
Reglas
- En su lugar, puede optar por un índice 0, pero luego tenga en cuenta que las filas de suma y multiplicación deben flip-flop, de modo que se genere exactamente el mismo triángulo que el anterior. Indique en su envío si elige hacer esto.
- Se puede suponer que la entrada y la salida encajan en el tipo entero nativo de su idioma.
- La entrada y la salida se pueden dar en cualquier formato conveniente .
- Un programa completo o una función son aceptables. Si es una función, puede devolver el resultado en lugar de imprimirlo.
- Si es posible, incluya un enlace a un entorno de prueba en línea para que otras personas puedan probar su código.
- Las lagunas estándar están prohibidas.
- Este es el código de golf, por lo que se aplican todas las reglas habituales de golf, y gana el código más corto (en bytes).
Ejemplos
Mostrando dos ejemplos posibles de salida de muchos: una lista o una cadena separada por espacios.
4
[1, 2, 2, 1]
8
"1 4 60 360 360 60 4 1"
fuente
n
fila th.Respuestas:
Pascal ,
249247233 bytesBueno, este es el triángulo alterno de Pascal .
1 byte guardado gracias a @ Mr.Xcoder
Pruébalo en línea!
fuente
Python 2 ,
9793868178 bytes-4 bytes gracias a Rod. -10 bytes gracias a Halvard Hummel.
0 indexado.
Pruébalo en línea!
fuente
map([int.__add__ ,int.__mul__][i%2],[i%2]+a,a+[i%2])
debería funcionar (no probado)Jalea ,
1712 bytesEste es un programa completo (o enlace niladic) que recibe información de STDIN.
Pruébalo en línea!
Cómo funciona
fuente
Python 2 ,
96 8987 bytes2 bytes Gracias al Sr. Xcoder:
s=[1]
Un poco diferente a la respuesta totalmente humana
Pruébalo en línea!
fuente
[1]
.CJam , 25 bytes
0 indexado.
Pruébalo en línea!
Explicación
Este es un bloque anónimo que toma el número de la pila y deja el resultado en la pila.
fuente
2%!
debe presionar 1 si es par y 0 si es impar, ¿no?Mathematica, 92 bytes
Pruébalo en línea! (para trabajar en matemáticas, "Tr" se reemplaza por "Total")
fuente
Haskell ,
7672 bytesSolución indexada 0:
Pruébalo en línea!
Explicación
p
define recursivamente el triángulo alterno, el caso base / primer elemento del mismo es[1]
Luego construye el triángulo tomando la línea anterior (
l
). Para saber qué hacer con él, necesitamos hacer un seguimiento del operador correcto (o
) y el elemento neutral correspondiente (e
):A partir de esto, construya la nueva línea duplicando la línea y para una copia anteponemos el elemento neutral, los comprimimos con el operador y agregamos un 1:
fuente
R ,
10898 bytes-10 bytes reemplazando el signo de multiplicación real con un signo más. Por favor perdoname.
Pruébalo en línea!
Bastante satisfecho con el método general (la primera vez que he usado un alias primitivo), pero estoy seguro de que todavía se puede jugar al golf, especialmente con el manejo incómodo de casos donde n <3, lo que lleva a una gran cantidad de repeticiones.
fuente
`*`=`+`
! muy inteligente. El resto de mis mejoras son solo técnicas de golf estándar, que me complacería explicarle a su solicitud :)n<3
Casco ,
1716 bytesPruébalo en línea!
Una solución indexada 1.
Explicación
La primera línea es la función principal, que llama a la función auxiliar en la segunda línea. La función auxiliar generalmente se llama con
₁
, pero en este caso estoy usando la función de etiquetas desbordantes de Husk: si hace referencia a una línea N en un programa con M <N líneas, obtiene la línea N mod M con la función modificadora M / N aplicado a ella. La segunda función modificadora esflip
, así que estoy usando₅
para voltear los argumentos de la función auxiliar sin costo adicional de bytes.Aquí está la función auxiliar.
Aquí está la función principal.
fuente
C # (.NET Core) ,
143134128 bytes-4 bytes gracias a Phaeze
-5 bytes gracias a Zac Faragher
-6 bytes gracias a Kevin Cruijssen
Pruébalo en línea!
Explicación:
fuente
var b=new[]{1};
y el compilador determinará el tipo de matriz por usted.int[]b={1};
- 11 bytes vs 20 como es o 16 como en la sugerencia de @Phaezen=>{int[]b={1},c;for(int i=0,j;++i<n;b=c)for(c=new int[i+1],c[0]=c[i]=1,j=0;++j<i;)c[j]=i%2<1?b[j-1]+b[j]:b[j-1]*b[j];return b;}
. Me he combinadoc
asíint[]b={1},c;
; acortadoi%2==0
ai%2<1
; Y quitó los corchetes del bucle poniendo todo dentro.Python 2 , 83 bytes
Dale un poco de amor a
exec
0 indexado
Pruébalo en línea!
fuente
Pyth , 22 bytes
¡ Ahorró toneladas de bytes gracias a @FryAmTheEggman ! La solución inicial está abajo.
Conjunto de pruebas completo (0 indexado).
Pyth ,
40 38 3635 bytesEsto se siente
muuuuucho demasiadorazonablemente largo. Las sugerencias son bienvenidas.Test Suite o Pruébelo en línea!
fuente
u
(pero no pude resolverlo). ¡Gracias!J , 32 bytes
Pruébalo en línea!
fuente
Perl 5 , 111 + 2 (-na) = 113 bytes
Pruébalo en línea!
fuente
Mathematica, 70 bytes
¡Pruébalo en el sandbox de Wolfram ! No funciona en matemáticas, desafortunadamente. Está indexado a 0.
Explicación:
Partition[#,2,1,{-1,1},{}]
toma una lista y devuelve todas las sublistas de dos elementos, más las listas de 1 elemento para el inicio y el final, por ejemplo, se{1,2,3,4}
convierte en{{1}, {1,2}, {2,3}, {3,4}, {4}}
.PadRight[{},#,{1##&,Plus}]
hace una lista alterna de1##&
(efectivamenteTimes
) yPlus
, cuya longitud es el número de entrada. LuegoFold
aplica repetidamente la función de partición con losPlus
es yTimes
es aplicados a ella, para hacer las filas del triángulo.fuente
Ruby ,
8382 bytesPruébalo en línea!
Esto está indexado a 0.
fuente
Raqueta , 116 bytes
Pruébalo en línea!
fuente
TI-Basic (TI-84 Plus CE), 100 bytes
1 indexado, solicita al usuario que ingrese e imprime una lista que contiene la
n
fila th del triángulo alterno de Pascal.Durante el bucle: L M es la fila actual y L L es la fila anterior.
TI-Basic es un lenguaje tokenizado . Todas las fichas utilizadas aquí son fichas de un byte.
Creo que puedo seguir jugando al golf modificando M en el lugar desde el final.
Explicación:
fuente
JavaScript (ES6),
716966 bytesPruébalo en línea!
0 indexado.
-3 bytes por @Arnauld
fuente
i--?n%2?v*p[i]:v+p[i]