tâche
Votre tâche consiste à construire une structure avec cubes. Le volume des cubes suit la séquence suivante (en bas -> en haut)
contribution
Le volume total de la structure ( ).
production
valeur de ( ), c'est-à-dire: le nombre total de cubes.
Remarques
- L'entrée sera toujours un entier.
- Parfois, il n'est pas possible de suivre la séquence, c'est-à-dire que: ne représente pas une valeur spécifique pour . Dans ce cas, retournez -1, ou une valeur fausse de votre choix (la cohérence est cependant requise).n
- C'est le code-golf donc la réponse la plus courte en octets pour chaque langue gagne.
- Aucune réponse ne sera marquée comme acceptée pour la raison susmentionnée.
demandes
- C'est mon premier défi sur le site, alors soyez indulgent avec moi et pardonnez (et parlez-moi) des erreurs que j'ai faites.
- Veuillez fournir un lien pour que votre code puisse être testé.
- Si vous le pouvez, veuillez écrire une explication sur le fonctionnement de votre code, afin que les autres puissent comprendre et apprécier votre travail.
exemples
input : 4183059834009
output : 2022
input : 2391239120391902
output : -1
input : 40539911473216
output : 3568
Merci à @Arnauld pour le lien vers ceci:
N'est-ce pas agréable.
Lien vers l'original: Lien
4183059834009
donne la sortie2022
?Réponses:
JavaScript (ES7), 31 octets
Une formule directe. Retourne
0
s'il n'y a pas de solution.Essayez-le en ligne!
Comment?
La somme de la première n cubes est donnée par:Sn n
(Ceci est A000537 . Cette formule peut facilement être prouvée par induction. Voici une belle représentation graphique de )S5
Réciproquement, si est la somme des x premiers cubes, l'équation suivante admet une solution entière positive:v X
Parce que est positif, cela conduit à:(x2+x)/2
Dont la solution positive est donnée par:
Si est un entier, il est garanti qu'il est impair, carΔlui-même est impair. Par conséquent, la solution peut être exprimée comme suit:r=Δ−−√ Δ
Commenté
Version récursive,
3635 octetsRetourne
NaN
s'il n'y a pas de solution.Essayez-le en ligne!
Commenté
la source
05AB1E , 6 octets
Essayez-le en ligne!
Réponse de Port of Jonathan's Jelly. Prendre la somme cumulée de [0 ... n] , carré chacune et l'indice de V .
05AB1E , 7 octets
Essayez-le en ligne!
Comment ça fonctionne
Variante 8-octets:
ÝÝÅΔ3mOQ
.la source
3mO
et lenO
travail ... Probablement mentionner également -1 est la valeur falsifiée.R ,
4240 octets-2 octets grâce à Giuseppe
Essayez-le en ligne!
Réponse JavaScript du port d' Arnauld . Renvoie également 0 s'il n'y a pas de solution.
la source
Gelée ,
54 octetsUn lien monadique, cède
0
sinon impossible.Essayez-le en ligne! trop inefficace pour les cas de test! (Espace O (V): p)
Voici une version à 8 octets qui effectue d'abord une racine cubique de V pour la rendre O (V ^ (1/3)) à la place. En utilisant cette version à 8 octets, voici une suite de tests
Comment?
la source
36
IJi
se comporte comme²⁼
(Ị
, en d'autres termes).Elixir , 53 octets
Essayez-le en ligne!
Réponse de Port of Jonathan's Jelly.
Elixir , 74 octets
Essayez-le en ligne!
Certainement sous-optimal. Mais je ne suis qu'un débutant en Elixir! :) Renvoie les
nil
valeurs "invalides" deV
.la source
Japt, 7 octets
Essayez-le
Explication
Alternative
Essayez-le
la source
Cubix , 27 octets (ou volume 27?)
Semble comme le bon endroit pour cette langue.
Essayez-le en ligne!
Cela encapsule sur un cube 3x3x3 comme suit
Regardez-le courir
Il force les forces brutes essentielles en éloignant les cubes de l'entrée. S'il aboutit à zéro, sortez
n
sinon s'il y a un résultat négatif, imprimez 0 et quittez.la source
Perl 6 ,
302926 octets-4 octets grâce à Jo King
Essayez-le en ligne!
Solution de force brute pour n <10000. Utilise l'équation de la réponse de Jonathan Allan.
37Solution de 36 octets pour un n plus grand ( -1 octet grâce à Jo King ):Essayez-le en ligne!
Retourne
False
s'il n'y a pas de solution.Explication
la source
0..$_
pour être valide pour tous les nombres, même si cela expire sur les plus grands. Pour le golf normal, vous pouvez retirer le.
de la première et de changer la seconde de0>=*
la1>*
JavaScript (Node.js) , 28 octets
Essayez-le en ligne!
Je sais que c'est ma propre question et tout, mais j'ai eu une meilleure réponse (pour cette langue) puis est présent, alors j'ai posté. J'espère que ça va
la source
APL (Dyalog) , 18 octets
Essayez-le en ligne!
la source
Matlab, 27 octets
Renvoie le
n
si existe ou une matrice vide sinon.Comment ça fonctionne
Essayez-le en ligne!
Remarque Il échoue pour les grands en
v
raison de limitations de mémoire.la source
Python 3 , 60 octets
Essayez-le en ligne!
-6 merci à M. Xcoder .
Essayez-le en ligne!
la source
Perl 6 , 33 octets
Essayez-le en ligne!
Cela utilise la méthode d'Arnauld . Renvoie un objet vide si le nombre n'est pas valide.
la source
dc , 19 octets
L'entrée et la sortie proviennent de la pile, renvoie 0 si aucune solution.
Essayez-le en ligne!
Explication
S'il y a une solution n, l'entrée est
((n^2+n)^2)/4
. Nous allons calculer une solution d'essai commen=sqrt(sqrt(4*input))
, en utilisant par défaut dc 0 la précision décimale pour les racines carrées, puis de comparer(n^2+n)^2
à4*input
voir si elle est en fait une solution.L'avant-dernière ligne s'appuie sur le fait non évident que dc,
0^x=0
pour tout non nulx
(même négatifx
!) Mais0^0=1
.la source
Python 3 ,
5348 octetsEssayez-le en ligne!
-3 octets de Jo King
Retourne
-1
sans réponse.Fonctionne uniquement
n=997
avec les limites de récursivité par défaut.Prend à plusieurs reprises des cubes de plus en plus gros du volume jusqu'à ce qu'il arrive à zéro (succès, retour du nombre de cubes supprimés), ou un nombre négatif (pas de réponse).
Explication:
la source
and/or
ou les listes sont généralement plus courtes queif/else
. 50 octetsnot V
=>V==0
ouV>-1
gvm (commit 2612106 ) bytecode,
7059 octets(-11 octets en multipliant dans une boucle au lieu d'écrire le code pour multiplier deux fois)
Hexdump:
Essais:
Pas vraiment un faible score, juste utiliser cette belle question pour tester
gvm
ici;) Le commit est plus ancien que la question bien sûr. Notez qu'il s'agit d'une machine virtuelle 8 bits, donc en utilisant du code ne gérant que la plage de nombres naturels non signés0-255
, les cas de test donnés dans la question ne fonctionneront pas.Assemblé manuellement à partir de ceci:
edit : je viens de corriger un bug dans
gvm
; sans ce correctif, agvm
essayé de lire les programmes binaires en mode texte , ce qui pourrait casser (le code ci-dessus ne contient aucun0xd
octet donc ne se cassera pas sur les fenêtres sans ce correctif).la source
K (oK) , 21 octets
Essayez-le en ligne!
Réponse de Port of Arnauld JS .
Comment:
la fonction retournera
(_r%2)
ssi1!r == 0
, sinon elle retournera null (0N
). Cela est dû au fait que l'élément unique de la liste a l'index 0, et essayer d'indexer cette liste avec un nombre différent de 0 retournera null.la source