Votre défi aujourd'hui est de produire un terme donné d'une séquence énumérant tous les entiers. La séquence est la suivante: si nous avons une fonction indexée sur 0 qui génère la séquence f(n)
et ceil(x)
est la fonction plafond, alors f(0) = 0
; abs(f(n)) = ceil(n/2)
; sign(f(n))
est positif lorsque n
et ceil(n/2)
sont à la fois pairs ou impairs.
Pour aider à comprendre cette séquence, les premiers termes sont les suivants: 0 1 -1 -2 2 3 -3 -4 4 5 -5 -6 6 7 -7...
Votre tâche consiste à écrire un programme qui prend un entier n
et génère le n
e terme de la séquence. L'entrée peut être indexée 0 ou 1 uniquement.
Cas de test (indexés 0):
0 => 0
1 => 1
2 => -1
3 => -2
4 => 2
5 => 3
C'est du code-golf , le moins d'octets gagne!
Réponses:
SOGL V0.12 ,
86 octetsEssayez-le ici! ou essayez les premiers numéros de couple (un peu modifiés pour que cela fonctionne)
indexés 0.
Explication:
Ou plus simple:
la source
».»
suis au téléphoneI».»⌡±
.Python 2 ,
2624 octetsEssayez-le en ligne!
la source
-~-(x&2)
le dénominateur final.JavaScript (ES6), 18 octets
1 indexé.
Démo
Afficher l'extrait de code
la source
C, 25 octets
la source
f(n){n=~n/2*~-(n&2);}
gcc -O0
pour x86-64 arrive à compiler la version de @ cleblanc avec des instructions qui laissent le résultat multiplier danseax
( godbolt.org/g/dztKPV ), mais alors ce serait unex86-64 gcc -O0
réponse, pas une réponse C. Je ne vote pas les réponses C qui rompent avec l'optimisation activée, en particulier pas cette dernière expression stupide comme merde de valeur de retour. Même si c'est comme ça que gcc fonctionne, ce n'est pas comme ça que C fonctionne.Haskell , 26 octets
Essayez-le en ligne!
Les autres réponses de Haskell semblent être trop compliquées… ^^
la source
Pyke , 6 octets
Essayez-le ici!
Utilise l'approche de dzaima ...
BeatsTies Jelly!Explication
Les octets hexagonaux codés équivalents seraient:
68 65 51 65 56 5F
.la source
Gelée , 6 octets
Essayez-le en ligne!
Utilise l'algorithme de dzaima.
-1 merci à Jonathan Allan .
la source
Python 2 , 21 octets
Essayez-le en ligne!
la source
Mathematica, 24 octets
-14 octets de @Misha Lavrov
la source
Boole
etOddQ
a pour effet de convertir les nombres impairs en 1 et les nombres pairs en 0, mais vous n'en avez pas besoin ici: les puissances de -1 vous donnent quand même la bonne réponse pour tous les nombres impairs. Vous pouvez donc réduire cette étape à(-1)^Tr@{#,s}
ou simplement(-1)^(#+s)
.Haskell ,
254342 octetsEssayez-le en ligne! 1 indexé.
Modifier: La version précédente avait les signes dans un mauvais ordre, merci à @ Potato44 pour l'avoir signalé. Fixé pour 18 octets ...
Edit 2: Merci à BMO pour -1 octet!
la source
Python 3 , 29 octets
Essayez-le en ligne!
la source
(-1)**(n%4>1)
est une façon d'écrire plutôt compliquée(1-(n&2))
;)Pyth , 9 octets
Essayez-le ici!
Utilise l'approche de dzaima .
la source
Haskell, 36 octets
Essayez-le en ligne!
la source
05AB1E , 6 octets
Essayez-le en ligne!
Utilise l'algorithme de dzaima.
la source
Lot, 29 octets
la source
JavaScript (ES6), 18 octets
0 indexé.
la source
Javascript, 17 octets
Afficher l'extrait de code
Celui-ci est indexé 0. C'est une supercherie entièrement au niveau du bit.
la source
Cubiquement , 23 octets
(1 index)
Essayez-le en ligne!
La principale difficulté lors de l'écriture de code en cubique est:
Donc, cette solution calcule
où
/
désigne une division entière. Cela n'a besoin que d'une variable temporaire et des constantes 1 et 2.Explication:
la source
TI-Basic (TI-84 Plus CE), 20 octets
Un programme complet qui s'appelle comme
5:prgmNAME
.TI-Basic est une langue à jetons , tous les jetons utilisés ici sont d'un octet, sauf
remainder(
deux.‾
représente le jeton régatif, qui est tapé avec la (-)clé.Exemples:
Explication:
Même formule qu'une fonction Y-var:
la source
dc , 16 octets
Je suis sûr qu'il existe un moyen de raccourcir de 0..1 à -1..1 en courant continu, mais aucune idée pour l'instant.
Essayez-le en ligne!
la source
Java 8, 15 octets
EDIT: Java est-il vraiment le plus court des langages non-golfeurs?! o.Ô
Explication:
Essayez-le ici.
Je vais utiliser le tableau ci-dessous comme référence de ce qui se passe.
~n
est égal à-n-1
.~n/2
entraînera la séquence0,-1,-1,-2,-2,-3,-3,-4,-4,-5,-5,...
n&2
entraînera soit0
ou2
, dans la séquence0,0,2,2,0,0,2,2,0,0,2,...
~-x
est égal à(x-1)
, donc~-(n&2)
(((n&2)-1)
) entraîne la séquence-1,-1,1,1,-1,-1,1,1,-1,-1,1,...
~n/2
et~-(n&2)
donne est la séquence correcte demandée dans le défi:0,1,-1,-2,2,3,-3,-4,4,5,-5,...
Tableau de synthèse:
la source
Brain-Flak ,
86747270 octetsEssayez-le en ligne!
Explication
Ce code comporte deux parties. La première partie
fait le muscle du calcul. Il détermine
ceil(n/2)
et annule ou non la sortie.Pour expliquer comment cela fonctionne, je vais d'abord expliquer comment on calculerait
ceil(n/2)
. Cela pourrait être fait avec le code suivantCela décompte à partir de n chaque fois qu'il effectue un not (
([{}]())
) sur un compteur et ajoute le compteur à un résultat. Étant donné que le compteur est égal à zéro la moitié du temps, nous n'incrémentons que tous les autres cycles en commençant par le premier.Maintenant, je veux aussi calculer le signe de nos résultats. Pour ce faire, nous démarrons un autre compteur. Ce compteur ne change d'état que si le premier compteur est éteint. De cette façon, nous obtenons le motif souhaité. Nous mettons ces deux compteurs sur la pile off pour faciliter leur déplacement le moment venu.
Maintenant, une fois que nous avons terminé ce calcul, notre pile ressemble à ceci
Nous devons donc faire un certain travail pour obtenir le résultat escompté dans cette deuxième partie.
la source
Perl 5 , 32 + 1 (
-p
) = 33 octetsEssayez-le en ligne!
la source
Proton , 23 octets
Essayez-le en ligne!
Solution du port de Halvard .
Proton , 23 octets
Essayez-le en ligne!
Solution du port de Leaky .
Un peu plus protonique, 24 octets:
la source
QBIC ,
2726 octetsExplication
la source
Clojure 122 octets
Verbeux, même au golf. Je vais pour le vote de sympathie ici ... :-)
Golfé:
Non golfé:
la source
Excel VBA 32 bits,
3937 octetsFonction de fenêtre immédiate VBE anonyme qui prend les entrées de la cellule
A1
et les sorties vers la fenêtre immédiate VBELimité à 32 bits car
A^B
non valide en 64 bits (A ^B
est aussi proche que possible)la source
(-1)
et est-il^[Int
nécessaire?Julia 0,6 , 16 octets
C'est juste la solution java sauf que j'ai besoin
÷
d'une division entière.Essayez-le en ligne!
la source