Um número poligonal é o número de pontos em um k
-gon do tamanho n
.
Você receberá n
e k
, e sua tarefa é escrever um programa / função que produza / imprima o número correspondente.
Pontuação
Isso é código-golfe . A solução mais curta em bytes vence.
Exemplo
O 3
número do hexágono ( k=6, n=3
) é 28
porque existem 28
pontos acima.
Casos de teste
Pode ser gerado a partir desta suíte de testes Pyth .
Uso: duas linhas por caixa de teste, n
acima, k
abaixo.
n k output
10 3 55
10 5 145
100 3 5050
1000 24 10990000
Outras informações
- Na Wikipedia: https://en.wikipedia.org/wiki/Polygonal_number
- Em Wolfram Mathworld: http://mathworld.wolfram.com/PolygonalNumber.html
- No Wiki da OEIS: http://oeis.org/wiki/Polygonal_numbers
- Sequências OEIS para números n- ovais para vários n : 3 (A000217) , 4 (A000290) , 5 (A000326) , 6 (A000384) , 7 (A000566) , 8 (A000567) , 9 (A001106) , 10 (A001107) , 11 (A051682) , 12 (A051624) , 13 (A051865) , 14 (A051866) , 15 (A051867) , 16 (A051868) , 17 (A051869) , 18 (A051870) , 19 (A051871) , 20 (A051872) , 21 (A051873) , 22 (A051874) , 23 (A051875) , 24 (A051876)
code-golf
sequence
number-theory
code-golf
math
geometry
code-golf
combinatorics
code-golf
integer
code-golf
arithmetic
number-theory
code-golf
arithmetic
restricted-source
number-theory
restricted-complexity
Freira Furada
fonte
fonte
n=3
ek=6
entrar na sua suíte de testes, receberá15
. Se você colocarn=4
ek=6
, você recebe28
.Respostas:
Geléia , 7 bytes
Isso usa a fórmula
para calcular o n ° s número -gonal.
Experimente online!
Como funciona
fonte
Hexagonia , 25 bytes
Desdobrado:
Lê
k
primeiro en
segundo (usando qualquer separador).Experimente online!
Explicação
O programa é completamente linear, mas, como de costume no Hexagony, a ordem de execução está em todo o lugar:
Os caminhos são executados na ordem cinza , azul escuro , vermelho , azul claro , verde escuro , rosa . Como você pode ver, os três
/
agem apenas para redirecionar o fluxo. Além disso,.
não há operações. Retirando toda a fantasia hexagonal, o programa linear resultante é:Isso calcula a fórmula padrão
como a maioria das outras respostas. Faz isso usando as seguintes cinco bordas da memória, com o ponteiro da memória (MP) começando como mostrado em vermelho:
Veja como isso é feito:
fonte
05AB1E , 8 bytes
Código:
Explicação:
Usa a codificação CP-1252 . Experimente online! .
fonte
Labirinto , 13 bytes
Experimente online!
Explicação
Devido a seus comandos de caractere único (que são meramente uma necessidade do 2D da linguagem), o Labyrinth pode ser surpreendentemente desafiador para programas lineares.
Isso usa a mesma fórmula que várias outras respostas:
Nesse ponto, o ponteiro de instruções atinge um beco sem saída e se vira. Agora
+
é executado novamente, que é um no-op (uma vez que a parte inferior da pilha é implicitamente preenchida com uma quantidade infinita de zeros) e, em seguida,/
tenta uma divisão por zero que finaliza o programa com um erro.fonte
JavaScript (ES6),
2422 bytesExplicação: Cada n-gon pode ser considerado n pontos ao longo de um lado mais k-2 triângulos do tamanho n-1, ou seja, n + n (n-1) (k-2) / 2.
fonte
k--*n--+2-n
não testei embora(k,n)=>n*(--k*--n-n+2)/2
ainda tem 24 bytes.--n
for(n-1)
. D'oh!k=>n=>n+n*--n*(k-2)/2
CJam, 13 bytes
Experimente online
fonte
APL (Dyalog Extended) , 11 bytes SBCS
Agradecemos a Adám por sua ajuda por sugerir esta versão alternativa.
Experimente online!
Explicação
APL (Dyalog Unicode) ,
1211 bytes SBCSAgradeço a Adám por sua ajuda no golfe.
Edit: -1 byte de ngn.
Experimente online!
Ungolfing
fonte
Na verdade, 12 bytes
Experimente online!
Explicação:
fonte
dc , 14 bytes
Experimente online!
Explicação
Isso faz uso da seguinte fórmula (observe que T n =
n*(n-1)/2
):fonte
Aceto ,
1815 bytesPorto da resposta CC de Bruce Forte :
Economizou 3 bytes ao perceber que qualquer programa Aceto "puro" (sem comandos combinados) pode ser gravado linearmente.
fonte
MathGolf , 8 bytes
Experimente online!
Um 8-byter alternativo é
┼┐*½\⌡*+
, que recebe a entrada em ordem inversa.fonte
> <> , 13 bytes
Experimente online!
fonte
Mathematica, 17 bytes
Aplicação direta da fórmula.
Uso
fonte
J, 14 bytes
Com base na fórmula.
Uso
Explicação
fonte
TI-Basic, 20 bytes
fonte
Idioma do GameMaker, 44 bytes
fonte
Python 3,
313028 bytesA equação reta deste artigo wiki
Agradecemos ao @Mego por salvar um byte!
fonte
Fourier, 18 bytes
Experimente no FourIDE!
Toma k como primeira entrada en como segunda entrada. Usa a fórmula:
Explicação Pseudocódigo:
fonte
Excel, 22 bytes
Calcula o número
A1
th-B1
diagonal.fonte
Java 8, 21 bytes
Todas as respostas individuais com igual comprimento de bytes:
Explicação:
Experimente aqui.
fonte
Japonês ,
1412 bytesTente
fonte
Casca , 9 bytes
Experimente online!
Explicação
Usando a mesma fórmula da minha
dc
resposta:fonte
APL (NARS), 16 caracteres, 32 bytes
É baseado no fato de que parece n × (n-1) / 2 = soma (1..n-1) teste:
fonte