Tâche
Votre tâche est simple, générez une séquence qui, étant donné l'index i
, la valeur à cette position est la somme des carrés de 0
jusqu'à i
où i >= 0
.
Exemple:
Input: 0
Output: 0 (0^2)
Input: 4
Output: 30 (0^2 + 1^2 + 2^2 + 3^2 + 4^2)
Input: 5
Output: 55 (0^2 + 1^2 + 2^2 + 3^2 + 4^2 + 5^2)
Spécification:
- Vous ne pouvez prendre aucune entrée et sortir la séquence indéfiniment;
- Vous pouvez entrer
N
et sortir l'Nth
élément de la séquence; - Vous pouvez entrer
N
et sortir les premiersN
éléments de la séquence.
code-golf
number
sequence
arithmetic
Felipe Nardi Batista
la source
la source
f(1) == 1 * 1 (1)
etf(24) == 70 * 70 (4900)
.f(1) = 1
?f(0) = 0
. je l'ai souligné que pour les quelques réponses qui ont échoué à cette exigencef(0) = 0
exigence a ruiné quelques-unes de mes solutions :(Réponses:
Gelée , 3 octets
Essayez-le en ligne!
FGITW
Explication
la source
Ræ.R
Python 2 , 22 octets
Essayez-le en ligne!
Il utilise la formule fermée n * (n + 1) * (2 * n + 1) / 6 . Le code effectue les opérations suivantes:
Multiplie n par (
n*
):~n
), ce qui signifie essentiellement -1-n .*~(n*2)
), ce qui signifie -1-2n .Divise par 6 (
/6
).Python 2 , 27 octets
Essayez-le en ligne!
Enregistré 1 octet grâce à Rod et 1 grâce à GB .
la source
MATL , 3 octets
... ou eux?
Essayez-le en ligne!
Explication
la source
JavaScript (ES6), 16 octets
Démo
Afficher l'extrait de code
Comment?
L'expression
n+++n
est analysée commen++ + n
(1) . Ce n'est pas vraiment important carn + ++n
cela fonctionnerait également dans ce cas.Par conséquent:
qui évalue à additionner (k = 0 ... n) (k²) .
(1) Cela peut être vérifié en faisant
n='2';console.log(n+++n)
ce qui donne l'entier5
, alorsn + ++n
que donnerait la chaîne'23'
.la source
05AB1E , 3 octets
Essayez-le en ligne!
Explication
la source
Brain-Flak , 36 octets
Essayez-le en ligne!
la source
({<(({}))>{({})({}[()])}{}<({}[()])>})
38Brain-Flak , 34 octets
Essayez-le en ligne!
Comment ça marche?
Au départ, j'avais la même idée que Riley 1, mais je me sentais mal d'utiliser un zéro. J'ai alors réalisé que
Calcule n 2 - n.
Pourquoi? Eh bien, nous savons
Calcule n 2 et boucle n fois. Cela signifie que si nous inversons l'ordre des deux poussées, nous passons de l'augmentation de la somme de n + (n-1) à chaque fois à l'augmentation de la somme de (n-1) + (n-1) à chaque fois. Cela diminuera le résultat d'une par boucle, faisant ainsi notre résultat n 2 - n. Au niveau supérieur, ce -n s'annule avec le n généré par la poussée que nous étions en train de mettre à zéro, réduisant ainsi le besoin d'un zéro et nous économisant deux octets.
Brain-Flak , 36 octets
Essayez-le en ligne!
Voici une autre solution, ce n'est pas aussi golfique mais c'est assez étrange alors j'ai pensé que je laisserais comme un défi de comprendre comment cela fonctionne.
Si vous n'êtes pas dans Brain-Flak mais que vous voulez toujours le défi ici, c'est comme une sommation.
1: J'ai trouvé ma solution avant de regarder les réponses ici. Donc pas de plagiat ici.
la source
Husk , 3 octets
Essayez-le en ligne!
la source
Ohm v2 , 3 octets
Essayez-le en ligne!
Explication
la source
Japt , 3 octets
Essayez-le ici.
-1 merci à Shaggy .
Explication:
la source
p2
.Brain-Flak , 46 octets
Essayez-le en ligne!
la source
({{({})({}[()])}{}}{})
et vous fait économiser 10 octets. (Si cela n'a pas de sens, envoyez-moi un ping dans la troisième pile )CJam , 10 octets
Essayez-le en ligne!
la source
ri),_.*:+
ouri),2f#:+
?Wolfram Language (Mathematica) , 14 octets
Essayez-le en ligne!
la source
#.#&@Range@#&
enregistre un octet#.#&@*Range
.En fait , 3 octets
Essayez-le en ligne!
Prend
N
en entrée et sort leN
e élément de la séquence.Explication:
la source
APL (Dyalog) ,
75 octets2 octets économisés grâce à @Mego
Essayez-le en ligne!
Comment?
⍳
- intervalle+.×
- produit scalaire⍨
- avec lui-mêmela source
¨⍳
c'était nécessaireR, 17 octets
Assez simple, il profite du fait que
^
(exponentiation) est vectorisé dans R .la source
(x=0:scan())%*%x
est plus court d'un octet, mais je pense que vous avez besoin d'uncat
pour obtenir la sortie.cat
, il génère une matrice 1x1.cat
est nécessaire pour que cela soit considéré comme un programme complet. Si vous souhaitez changer cela, répondez à cette question et obtenez une certaine traction parmi les autres personnes R sur le site.CJam , 9 octets
Essayez-le en ligne!
Explication
Alternativement:
Cela place chaque élément en correspondance
2#
au lieu d'utiliser des produits par paire. Et juste pour le plaisir, une autre alternative qui devient inexacte pour les grandes entrées car elle utilise l'arithmétique à virgule flottante:la source
Julia ,
16 ans14 octets2 octets enregistrés grâce à @MartinEnder
Essayez-le en ligne!
Comment?
(x=1:n)
crée une gamme de1
àn
et attribue àx
,⋅
produit scalaire avecx
.la source
Labyrinthe , 11 octets
Essayez-le en ligne!
Imprime la séquence indéfiniment.
Explication
Le pointeur d'instruction continue de tourner autour du carré de code encore et encore:
la source
Cubix , 15 octets
Essayez-le en ligne!
Mon code est un peu triste
):
Calcule
n*(n+1)*(2n+1)/6
la source
Befunge , 16 octets
En utilisant la formule fermée n * (n + 1) * (2n + 1) / 6 .
Essayez-le en ligne!
Befunge , 38 octets
À l'aide d'une boucle.
Essayez-le en ligne!
la source
Haskell, 20 octets
Essayez-le en ligne!
la source
Excel, 19 octets
la source
Hexagonie , 23 octets
Essayez-le en ligne!
Explication
Déplié:
C'est vraiment juste un programme linéaire avec la
/
redirection utilisée. Le code linéaire est:Qui calcule n (n + 1) (2n + 1) / 6 . Il utilise les bords de mémoire suivants:
Où le point mémoire (MP) commence sur le bord étiqueté n , pointant vers le nord.
En théorie, il pourrait être possible d'adapter ce programme à la longueur de côté 3, car
/
ils ne sont pas nécessaires pour le calcul, ils:
peuvent être réutilisés pour terminer le programme, et certains'"=+*{
peuvent également être réutilisables, ce qui porte le nombre de commandes inférieures à 19 (le maximum pour la longueur latérale 3). Je doute qu'il soit possible de trouver une telle solution à la main, s'il en existe une.la source
> <> ,
151311 octetsEnregistré 2 octets grâce à Pas un arbre
Essayez-le en ligne!
Sort la séquence indéfiniment.
la source
-v
drapeau):::1+:}+**6,n
( Essayez-le en ligne! )N=1
): Essayez-le en ligne!l
. Vérifier avec OP s'il est correct de commencer à 1.l
idée de la réponse Labyrinthe de Martin Ender .)Pyth ,
75 octets grâce à Steven HExplication:
Ma première solution
Essayez-le en ligne!
Explication:
la source
Neim , 3 octets
Cela aurait pu être un défi pour montrer les blocs de nombres polygonaux de Neim, mais apparemment pas.
Essayez-le en ligne!
la source
Oasis , 4 octets
Essayez-le en ligne!
Explication
la source
Brachylog , 5 octets
Essayez-le en ligne!
Explication
la source
Gaia , 3 octets
Essayez-le en ligne!
la source