Considera el siguiente triángulo.
1 23 456 7891 01112 131415 1617181 92021222 324252627 2829303132 33343536373 839404142434 4454647484950 51525354555657 585960616263646 5666768697071727 37475767778798081
Como probablemente haya notado, la primera fila es de longitud 1, y cada fila posterior es 1 dígito más larga que la anterior y contiene los dígitos de los enteros positivos concatenados.
Se le dará un número entero N . Su tarea es encontrar la suma de los dígitos que se encuentran en la fila N del triángulo anterior.
Reglas
Puede elegir 0 o 1 indexación. Por favor, especifique eso en su respuesta.
Se aplican las lagunas predeterminadas .
Puede tomar entrada y proporcionar salida por cualquier medio estándar y en cualquier formato razonable.
Este es OEIS A066548 , y esta secuencia es el triángulo mismo (excepto que no eliminamos los ceros a la izquierda).
Este es el código de golf , por lo que gana el código más corto en bytes (en todos los idiomas). Diviértete jugando al golf!
Casos de prueba
Input | Output
0 | 1
1 | 5
2 | 15
3 | 25
4 | 5
5 | 15
6 | 25
7 | 20
8 | 33
9 | 33
10 | 43
11 | 46
12 | 64
Tenga en cuenta que los anteriores están indexados a 0. Si está buscando casos de prueba indexados en 1, incremente la entrada en 1.
En una nota bastante no relacionada, recientemente cambié mi foto de perfil y eso me inspiró a escribir este desafío.
n**2
esn*n
.sum(range(n)) = ~-n*n/2 = (n - 1) * n / 2
Haskell , 57 bytes
Pruébalo en línea!
fuente
05AB1E , 8 bytes
Pruébalo en línea!
-1 gracias a Emigna .
1-indexación.
fuente
S
si lo reemplazaJ
conS
.Perl 6 ,
474542 bytesPruébalo en línea!
1 indexado
fuente
Mathematica, 96 bytes
Pruébalo en línea! (para trabajar en matemáticas, "Tr" debe ser reemplazado por "Total")
fuente
Jalea , 11 bytes
Pruébalo en línea!
Utiliza indexación basada en 1.
Explicación
fuente
Haskell,
6964 bytesPruébalo en línea.
¡Guardado 5 bytes gracias a Laikoni !
Aquí está la versión menos golfizada:
fuente
n%x=sum[read[d]|d<-take n x]:(n+1)%drop n x
es algunos bytes más cortos.splitOn
que ahorraría bytes.R,
1191091089388 bytesempezando a jugar al golf .... 1 indexado
gracias @ Zachary. su presunción es correcta :) afeitó 1 byte tnx a @Andrius y 15 tnx más a @ user2390246
@Giuseppe - tnx para el strtoi. nuevo para mi 5 bytes hacia abajo :)
fuente
y=
ni a los padresn*(n-1)/2+1
, y el nombre del idioma probablemente no lo es[R]
.as.integer
conas.double
x
usarlo,F
ya que esto ya está inicializado a 0.1:n+a-1
da lo mismo quea:(a+n-1)
. En ese caso, no necesita definira
de antemano, simplemente puede ponerlo directamente en lafor
expresión. Eso también te permitirá cancelar un + 1 / -1.substring
lugar desubstr
desde entonces, esto es solo una suma sobre los índices de la subcadena. Además, siempre es bueno incluir un enlace TIO para sus soluciones :) +1, gran trabajo.Emojicode , 182 bytes
Define un método llamado © que toma un 🚂 y devuelve un 🚂. 1 indexado.
Pruébalo en línea!
Explicación:
Nota: muchas opciones de emoji no tienen mucho sentido en Emojicode 0.5. Es 0.x, después de todo. 0.6 solucionará esto, así que si quieres aprender esto (porque quién no querría), te recomiendo que esperes un momento.
Emojicode es un lenguaje de programación orientado a objetos que presenta genéricos, protocolos, opcionales y cierres, pero este programa no utiliza cierres, y todos los genéricos y protocolos pueden considerarse implícitos.
El programa funciona solo con unos pocos tipos: 🚂 es el tipo entero y 🔡 es el tipo de cadena. Además, 👌s aparecen en condiciones, que pueden tomar un valor de 👍 (verdadero) o 👎 (falso).
Actualmente no hay operadores en Emojicode, por lo que además, las comparaciones y otras operaciones que normalmente son operadores se implementan como funciones, lo que hace que las expresiones utilicen la notación de prefijo . Los operadores también están previstos en 0.6.
© toma una llamada 🚂
a
y devuelve una 🚂.Declare un congelado ("constante")
l
igual al número triangular a-ésimo (fórmula en notación de prefijo). Esto representa la longitud de la cadena de números que necesitamos generar.Asigne una cadena vacía a la variable
t
.Asignar
i = 0
.Mientras que el
l
es mayor que la longitud det
i += 1
Agregue la representación textual de
i
en base 10 at
.Bucle final
Asignar
s = 0
Tome una subcadena que
t
comience enl - a
(a - 1
th número triangular) de longitud a, itere sobre todos los caracteresConvierta el carácter en cadena, analice el entero en base-10, desenvuelva lo opcional (no se devuelve nada si la cadena no es un número) y agréguelo a la
s
variable.Bucle final
Devoluciones
Método final
fuente
PHP, 66 + 1 bytes
Ejecutar como tubería con
-nR
o probarlo en línea .requiere PHP 5.4 o posterior para indexar la expresión.
fuente
Pyth, 24 bytes
Pruébelo aquí: http://pyth.herokuapp.com/
fuente
APL,
282625 bytesUtiliza indexación basada en 1
Pruébalo en línea!
¿Cómo?
⍳⍵×⍵
, 1 a través de la entrada al cuadrado⍕¨
, convierte cada elemento en una cadena∊,/
, concatenarlos juntos(+/⍳⍵)↑
, tome las filas hasta la entrada⍵↑⌽
, toma la fila deseada⍎¨
, convierte cada elemento en un número+/
sumafuente
Clojure v1.8, 154 bytes
1 indexado
Pruébalo en línea!
Explicación
fuente
Java 8,
11698 bytes1 indexado
-18 bytes gracias a @Nevay
Explicación:
Pruébalo aquí
fuente
n->{String r="";int i=0,x=0;for(;x++<n*n;r+=x);for(x=0;x<n;)i+=r.charAt(x+++~-n*n/2)-48;return i;}
.R,
99,105, 97 bytes1 indexado
versión sin golf
Pruébalo aquí!
gracias a @Giuseppe por guardar 8 bytes
fuente
strtoi
Perl 6 , 44 bytes
Pruébalo
Expandido:
fuente
Jalea , 16 bytes
Pruébalo en línea!
1 indexado.
fuente
SOGL V0.12 ,
1513 bytesPruébalo aquí!
1 indexado.
Mientras trabajaba en esto, solucioné un error que hacía que
∑
no funcionara en matrices de números y quem
incorrectamente tomaba entrada implícita.Explicación:
fuente
C ++, 180 bytes
-17 bytes gracias a Zacharý
El índice comienza en 1
fuente
int s(int n){++n;std::string t;int i=0,p=0;for(;i<=n;)p+=i++;for(i=0;t.size()<p;t+=std::to_string(++i));t=t.substr(0,p);t=t.substr(t.size()-n);i=0;for(auto&a:t)i+=a-48;return i;}
++n;
"0" identifier is unknown
en Visual Studio. Lo mismo parato_string
ysize
. Puede verlo si copia y pega el código en notepad ++, y convierte la codificación a ANSI, verá algunos??
en el editorPyth ,
15 1413 bytesPruébalo aquí!o echa un vistazo a la suite de prueba.
13 bytesAlternativas de :
¿Cómo?
fuente
> <>, 141 + 2 bytes
1-indexado
+ 2b para la bandera -v
A Tio.run realmente no parece gustarle mis programas> <> recientemente ... Sin embargo, todavía se puede verificar en https://fishlanguage.com . La entrada va en 'pila inicial'.
Editar: Resulta que a tio.run no le gusta porque maneja '[' y ']' de forma diferente a fishlanguage.com. fishlanguage.com invierte la pila al crear o eliminar una nueva pila, pero tio.run no.
fuente
Perl 5 , 62 + 1 (-p) = 63 bytes
Pruébalo en línea!
El resultado es 1 indexado.
¿Cómo?
Concatenar más que suficientes dígitos juntos, luego omita los irrelevantes al principio (la longitud del salto es la suma de enteros de 1 a
n-1
). Tome los siguientesn
dígitos, coloque un+
frente a cada uno y luego evalúe esa ecuación.fuente
JavaScript (ES6),
7865 bytes1 indexado. Editar: Guardado 13 bytes gracias a @tsh.
fuente
n=>eval([...(g=n=>n?g(n-1)+n:'')(n*n)].join<+>.substr(~-n*n-1,2*n))
join`+`
final ...