Considere o seguinte triângulo.
1 23 456 7891 01112 131415 1617181 92021222 324252627 2829303132 33343536373 839404142434 4454647484950 51525354555657 585960616263646 5666768697071727 37475767778798081
Como você provavelmente notou, a primeira linha tem o comprimento 1, e cada linha a seguir é 1 dígito a mais que a anterior e contém os dígitos dos números inteiros positivos concatenados.
Vai ser dado um número inteiro N . Sua tarefa é encontrar a soma dos dígitos que se encontram em N ª linha do triângulo acima.
Regras
Você pode escolher 0 ou 1 indexação. Especifique isso na sua resposta.
Aplicam-se lacunas padrão .
Você pode receber e fornecer saída por qualquer média padrão e em qualquer formato razoável.
Este é o OEIS A066548 e essa sequência é o próprio triângulo (exceto que não removemos zeros à esquerda).
Isso é código-golfe , então o código mais curto em bytes (em todos os idiomas) vence. Divirta-se jogando golfe!
Casos de teste
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
Observe que os itens acima são indexados em 0. Se você estiver procurando por casos de teste indexados em 1, aumente a entrada em 1.
Em uma nota não relacionada, mudei recentemente minha foto de perfil e isso me inspirou a escrever esse desafio.
n**2
én*n
.sum(range(n)) = ~-n*n/2 = (n - 1) * n / 2
Haskell , 57 bytes
Experimente online!
fonte
05AB1E , 8 bytes
Experimente online!
-1 graças a Emigna .
Indexação 1.
fonte
S
se substituirJ
porS
.Perl 6 ,
474542 bytesExperimente online!
Indexado 1
fonte
Mathematica, 96 bytes
Experimente online! (para trabalhar em matemática, "Tr" deve ser substituído por "Total")
fonte
Gelatina , 11 bytes
Experimente online!
Usa indexação baseada em 1.
Explicação
fonte
Haskell,
6964 bytesExperimente online.
Guardado 5 bytes graças a Laikoni !
Aqui está a versão menos golfe:
fonte
n%x=sum[read[d]|d<-take n x]:(n+1)%drop n x
é alguns bytes mais curto.splitOn
isso salvaria bytes.R,
1191091089388 bytescomeçando a jogar golfe .... 1-indexado
obrigado @Zachary. sua presunção está correta :) raspou 1 byte tnx para @Andrius e 15 mais tnx para @ user2390246
@Giuseppe - tnx para o strtoi. novo para mim. 5 bytes abaixo :)
fonte
y=
nem parensn*(n-1)/2+1
, e o nome da língua provavelmente não é[R]
.as.integer
comas.double
x
, usoF
, pois isso já é inicializado para 0.1:n+a-1
dá o mesmo quea:(a+n-1)
. Nesse caso, você não precisa definira
com antecedência, basta colocá-lo diretamente nafor
expressão. Isso também permitirá que você cancele um + 1 / -1.substring
vez de,substr
na verdade, isso é apenas uma soma sobre os índices da substring. Além disso, é sempre bom incluir um link TIO para suas soluções :) +1, ótimo trabalho.Emojicode , 182 bytes
Define um método chamado © que leva a returns e retorna a 🚂. 1 indexado.
Experimente online!
Explicação:
Nota: muitas opções de emoji não fazem muito sentido no Emojicode 0.5. É 0.x, afinal. O 0.6 corrigirá isso. Portanto, se você quiser aprender isso (porque quem não gostaria), recomendo aguardar um momento.
O Emojicode é uma linguagem de programação orientada a objetos com genéricos, protocolos, opcionais e fechamentos, mas este programa não usa fechamentos, e todos os genéricos e protocolos podem ser considerados implícitos.
O programa opera em apenas alguns tipos: 🚂 é o tipo inteiro e 🔡 é o tipo de sequência. Além disso, appears aparecem em condições, que podem assumir um valor de 👍 (verdadeiro) ou 👎 (falso).
Atualmente, não há operadores no Emojicode, portanto, adição, comparsões e outras operações que normalmente são operadores são implementadas como funções, fazendo com que as expressões usem a notação de prefixo . Os operadores também estão planejados em 0,6.
© pega um 🚂 chamado
a
e retorna um 🚂.Declare um congelado ("constante")
l
igual ao a-ésimo número triangular (fórmula na notação de prefixo). Isso representa o comprimento da sequência de números que precisamos gerar.Atribua uma sequência vazia à variável
t
.Atribuir
i = 0
.Enquanto o
l
for maior que o comprimento det
i += 1
Anexar a representação textual de
i
base 10 emt
.Laço final
Atribuir
s = 0
Pegue uma substring
t
começando eml - a
(a - 1
th número triangular) de comprimento a, itere sobre todos os caracteresConverta o caractere em sequência, analise o número inteiro na base 10, desembrulhe o opcional (nada será retornado se a sequência não for um número) e adicione à
s
variável.Laço final
Return s
Método final.
fonte
PHP, 66 + 1 bytes
Execute como pipe
-nR
ou experimente on-line .requer PHP 5.4 ou posterior para indexar a expressão.
fonte
Pitão, 24 bytes
Experimente aqui: http://pyth.herokuapp.com/
fonte
APL,
282625 bytesUsa indexação baseada em 1
Experimente online!
Quão?
⍳⍵×⍵
, 1 através da entrada ao quadrado⍕¨
, transforme cada elemento em uma sequência∊,/
, concatená-los juntos(+/⍳⍵)↑
, pegue as linhas até a entrada⍵↑⌽
, pegue a linha desejada⍎¨
, transforme cada elemento em um número+/
somafonte
Clojure v1.8, 154 bytes
Indexado 1
Experimente online!
Explicação
fonte
Java 8,
11698 bytesIndexado 1
-18 bytes graças a @Nevay
Explicação:
Experimente aqui.
fonte
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 bytesIndexado 1
versão ungolfed
Experimente aqui!
graças a @ Giuseppe por salvar 8 bytes
fonte
strtoi
Perl 6 , 44 bytes
Teste-o
Expandido:
fonte
Gelatina , 16 bytes
Experimente online!
1 indexado.
fonte
SOGL V0.12 ,
1513 bytesExperimente aqui!
1 indexado.
Enquanto trabalhava nisso, corrigi um bug que
∑
não funcionava em matrizes numéricas e quem
incorretamente recebia entradas implícitas.Explicação:
fonte
C ++, 180 bytes
-17 bytes graças a Zacharý
Índice começa em 1
fonte
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
no visual studio. A mesma coisa parato_string
esize
. Você pode vê-lo se você copiar e colar o código no bloco de notas ++, e codificação convertido para ANSI, você vai ver alguns??
no editorPitão ,
15 1413 bytesExperimente aqui! ou Confira a suíte de testes.
Alternativas de 13 bytes :
Quão?
fonte
> <>, 141 + 2 bytes
1-Indexado
+ 2b para sinalizador -v
O Tio.run realmente não parece gostar dos meus programas <> recentemente ... Ainda pode ser verificado em https://fishlanguage.com . A entrada entra na 'pilha inicial'.
Edit: Acontece que tio.run não gosta, porque lida com '[' e ']' de maneira diferente para fishlanguage.com. O fishlanguage.com inverte a pilha ao criar ou remover uma nova pilha, mas o tio.run não.
fonte
Perl 5 , 62 + 1 (-p) = 63 bytes
Experimente online!
O resultado é 1 indexado.
Quão?
Concatene mais que o suficiente dígitos juntos e pule os irrelevantes no início (a duração do salto é a soma dos números inteiros de 1 a
n-1
). Pegue os próximosn
dígitos, coloque um+
na frente de cada um e avalie essa equação.fonte
JavaScript (ES6),
7865 bytes1 indexado. Editar: salvou 13 bytes graças a @tsh.
fonte
n=>eval([...(g=n=>n?g(n-1)+n:'')(n*n)].join<+>.substr(~-n*n-1,2*n))
join`+`
no final ...