Backstory
Avis de non-responsabilité: peut contenir des informations sur les kangourous.
Les kangourous traversent plusieurs stades de développement. À mesure qu'ils vieillissent et deviennent plus forts, ils peuvent sauter plus haut et plus longtemps, et ils peuvent sauter plus de fois avant d'avoir faim.
Dans l'étape 1 , le kangourou est très petit et ne peut pas sauter du tout. Malgré cela, il a constamment besoin de nourriture. Nous pouvons représenter un modèle d'activité de kangourou de stade 1 comme celui-ci.
o
Au stade 2 , le kangourou peut faire de petits sauts, mais pas plus de 2 avant d'avoir faim. Nous pouvons représenter un modèle d'activité de kangourou de stade 2 comme celui-ci.
o o
o o o
Après l'étape 2, le kangourou s'améliore rapidement. À chaque étape suivante, le kangourou peut sauter un peu plus haut (1 unité dans la représentation graphique) et deux fois plus de fois. Par exemple, le schéma d'activité d' un kangourou de stade 3 ressemble à ceci.
o o o o
o o o o o o o o
o o o o o
Tout ce saut nécessite de l'énergie, donc le kangourou a besoin de nourriture après avoir terminé chaque modèle d'activité. Le montant exact requis peut être calculé comme suit.
Attribuez à chaque o dans le modèle d'activité d'un stade n kangourou sa hauteur, c'est-à-dire un nombre de 1 à n , où 1 correspond au sol et n à la position la plus élevée.
Calculez la somme de toutes les hauteurs dans le modèle d'activité.
Par exemple, le modèle d'activité d' un kangourou de stade 3 comprend les hauteurs suivantes.
3 3 3 3
2 2 2 2 2 2 2 2
1 1 1 1 1
Nous avons cinq 1 , huit 2 et quatre 3 ; la somme est 5 · 1 + 8 · 2 + 4 · 3 = 33 .
Tâche
Écrivez un programme complet ou une fonction qui prend un entier positif n comme entrée et imprime ou renvoie les besoins nutritionnels par activité d'un kangourou de stade n .
C'est du golf de code ; que la réponse la plus courte en octets gagne!
Exemples
1 -> 1
2 -> 7
3 -> 33
4 -> 121
5 -> 385
6 -> 1121
7 -> 3073
8 -> 8065
9 -> 20481
10 -> 50689
http://www.wolframalpha.com/input/?i=2%5E(n-1)*(n%5E2-1)%2B1
(balisage bizarre car une URL régulière est foirée)Réponses:
Gelée , 6 octets
Utilise la formule ( n 2 - 1) 2 n - 1 + 1 pour calculer chaque valeur. @ Qwerp-Derp a eu la gentillesse de fournir une preuve .
Essayez-le en ligne! ou Vérifiez tous les cas de test.
Explication
la source
Coffeescript, 19 octets
Edit: Merci à Dennis d'avoir coupé 6 octets!
La formule pour générer des nombres Kangourou est la suivante:
Explication de la formule:
Le nombre de
1
s dansK(n)
la somme finale est de2^(n - 1) + 1
.Le nombre de
n
s dansK(n)
la somme finale est2^(n - 1)
, donc la somme de tous lesn
s estn * 2^(n - 1)
.Le nombre de tout autre nombre (
d
) dansK(n)
la somme finale de est2^n
, donc la somme de tous lesd
seraitd * 2^n
.Ainsi, la somme de tous les autres nombres
= (T(n) - (n + 1)) * 2^n
, oùT(n)
est la fonction numérique triangulaire (qui a la formuleT(n) = (n^2 + 1) / 2
).En remplaçant cela en, nous obtenons la somme finale
Lorsque nous additionnons toutes les sommes, nous obtenons
K(n)
, ce qui équivaut à... qui est égal à la formule ci-dessus.
la source
n=>(n*n-1<<n-1)+1
Java 7, 35 octets
la source
Gelée , 4 octets
Essayez-le en ligne! ou vérifiez tous les cas de test .
Comment ça marche
la source
Python 2,
2523 octetsFormule de miles utilisée.
Merci à Jonathan Allan pour -2 octets.
la source
~-x
. Vous pouvez également l'utiliserx-1
(pas plus court), car la soustraction a une priorité plus élevée que le décalage.~-x
, j'ai donc décidé de le laisser inchangé. Eh bien, il semble que tout le monde préfèrex-1
(Dennis a également dit exactement cette chose).-~(x*x-1<<~-x)
pour le disque, mais-1
existe toujours, donc je n'aime pas mélanger le code ...- 1
.Lua, 105 octets
De-golfé:
Problème divertissant!
la source
En fait , 8 octets
Essayez-le en ligne!
Explication:
Cela calcule simplement la formule
(n**2 - 1)*(2**(n-1)) + 1
.la source
GolfScript , 11 octets
Essayez-le en ligne!
Merci à Martin Ender (8478) d'avoir supprimé 4 octets.
Explication:
la source
CJam, 11 octets
Essayez-le en ligne.
Explication:
la source
ri
...Mathematica, 15 octets
Il n'y a pas d'opérateur de décalage de bits, nous devons donc faire l'exponentiation réelle, mais il est ensuite plus court de diviser par 2 au lieu de décrémenter l'exposant.
la source
C, 26 octets
En macro:
En fonction (27):
la source
f(1+2)
.05AB1E , 7 octets
Essayez-le en ligne!
Explication
la source
C #, 18 octets
Fonction anonyme basée sur l' excellente analyse mathématique de Qwerp-Derp .
Programme complet avec cas de test:
la source
Lot, 30 octets
Eh bien, il bat de toute façon Java.
la source
MATL , 7 octets
Utilise la formule des autres réponses.
Essayez-le en ligne!
la source
Oasis , 9 octets
Je suis surpris qu'il n'y ait pas de fonction intégrée pour
2^n
.Essayez-le en ligne!
Explication:
la source
m
achtsverheffing, cela et le manque de créativité. De plus, de nombreux opérateurs n'ont pas encore été implémentés, en raison de la paresse et de la procrastination.Raquette 33 octets
Utilisation de la formule expliquée par @ Qwerp-Derp
Non golfé:
Essai:
Sortie:
la source
Rubis, 21 octets
@ Qwerp-Derp a essentiellement fait le gros du travail.
En raison de la priorité en rubis, il semble que nous ayons besoin de quelques parens:
la source
Scala, 23 octets
Utilise le décalage de bits comme exponentiation
la source
Pyth, 8 octets
pyth.herokuapp.com
Explication:
la source
R, 26 octets
Appliquer sans vergogne la formule
la source
J , 11 octets
Basé sur la même formule que celle trouvée précédemment .
Essayez-le en ligne!
Explication
la source
Groovy (22 octets)
Ne conserve pas
n
, mais utilise la même formule que toutes les autres dans cette compétition. 1 octet enregistré avec des décréments, en raison de parenthèses nécessaires.Tester
la source
JS-Forth, 32 octets
Pas super court, mais c'est plus court que Java. Cette fonction pousse le résultat sur la pile. Cela nécessite JS-Forth car j'utilise
<<
.Essayez-le en ligne
la source