Étant donné N, sortir le Nième terme de cette séquence infinie:
-1 2 -2 1 -3 4 -4 3 -5 6 -6 5 -7 8 -8 7 -9 10 -10 9 -11 12 -12 11 ... etc.
N peut être indexé 0 ou 1 comme vous le souhaitez.
Par exemple, si 0-indexés puis entrées 0
, 1
, 2
, 3
, 4
devrait produire des sorties respectives -1
, 2
, -2
, 1
, -3
.
Si l' index 1 entrées puis 1
, 2
, 3
, 4
, 5
devrait produire des sorties respectives -1
, 2
, -2
, 1
, -3
.
Pour être clair, cette séquence est générée en prenant la séquence d’entiers positifs répétés deux fois
1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 ...
et réarranger chaque paire de nombres impairs pour entourer les nombres pairs juste au-dessus
1 2 2 1 3 4 4 3 5 6 6 5 7 8 8 7 9 10 10 9 11 12 12 11 ...
et finalement nier tous les autres termes, en commençant par le premier
-1 2 -2 1 -3 4 -4 3 -5 6 -6 5 -7 8 -8 7 -9 10 -10 9 -11 12 -12 11 ...
Le code le plus court en octets gagne.
1,1,2,2,3,3,4,4,...
mais ici c'est1,2,2,1,3,4,4,3,...
.Réponses:
Python 2 , 23 octets
Les entrées impaires donnent à peu près les
n/2
mêmes-n/2
. Donc, j'ai commencé-n/2+n%2*n
et modifié à partir de là.Essayez-le en ligne!
la source
Mathematica, 29 octets
Fonction pure prenant une entrée à 1 index. Hormis les signes alternants
(-1)^#
, la séquence double est proche de l’entrée, les différences étant de 1, 2, 1, -2 de manière cyclique. C'est bien que#~GCD~4
, le plus grand commun diviseur de l'entrée et4
, soit 1, 2, 1, 4 cycliquement; donc nous venons de remplacer manuellement4->-2
et appelons un jour. J'aime cette approche car elle évite la plupart des commandes Mathematica comportant de nombreux caractères.la source
Pip ,
2422 octetsPrend l'entrée, indexé 1, comme argument de ligne de commande. Essayez-le en ligne ou vérifiez-le 1-20 .
Explication
Observez que la séquence peut être obtenue en combinant trois autres séquences, l’une indexée à zéro et l’autre indexée:
0 0 0 0 2 2 2 2 4 4 4 4
=a//4*2
(indexé sur 0);1 2 2 1 1 2 2 1 1 2 2 1
=aBA2|1
, oùBA
est bitwise AND et|
est logique OU (indexé 1);-1 1 -1 1 -1 1 -1 1 -1 1 -1 1
=(-1)**a
(indexé 1).Si nous commençons avec
a
1-indexé, nous pouvons d'abord calculer les parties 1-indexées (en lisant l'expression de gauche à droite), puis les décrémentera
pour la partie 0-indexée. En utilisant la variable intégréev=-1
, nous obtenonsPour supprimer deux octets supplémentaires, nous devons utiliser des astuces de manipulation de priorité. Nous pouvons éliminer les parenthèses internes en les remplaçant
+
par+:
(équivalent à+=
dans beaucoup de langues). Tout opérateur de calcul et d’affectation a une très faible priorité,aBA2|1+:--a//4*2
est donc équivalent à(aBA2|1)+:(--a//4*2)
. Pip émettra un avertissement sur l'affectation de quelque chose qui n'est pas une variable, mais uniquement si les avertissements sont activés.La seule chose qui est prioritaire sur la
:
est -Y
, l'opérateur de Yank * Il attribue sa valeur d'opérande à la.y
Variable et passe sans modification; afin que nous puissions éliminer les parenthèses extérieures ainsi que par la valeur plutôt l' accroche alors que ce parenthèse:YaBA2|1+:--a//4*2
.* rint
P
etO
utput ont la même priorité queY
ank, mais ne sont pas utiles ici.la source
Gelée ,
87 octetsCela utilise l'algorithme de ma réponse Python , qui a été amélioré de manière significative par @GB .
Essayez-le en ligne!
Comment ça marche
la source
¡
)Java 8, 19 octets
Java 7,
4737 octetsLa première fois, Java (8) est en concurrence et est plus court que d’autres réponses. Vous ne pouvez toujours pas battre les langues de golf réelles comme Jelly et autres, cependant (duhuh .. quelle surprise.>.>; P)
Port 0 indexé de la réponse Python 2 de @Xnor .
-10 octets grâce à @GB
Essayez ici.
la source
Jelly ,
151211 octetsEssayez-le en ligne!
Comment ça marche
la source
RProgN 2 ,
312522 octetsA expliqué
Essayez-le en ligne!
la source
Ruby,
26 2318 octetsBasé sur 0
-3 octets volant l'idée -1 ^ n de Greg Martin , Dennis et peut-être quelqu'un d'autre, puis -5 octets dérivant l' idée n | 2 de xnor .
la source
Empilés ,
3028 octetsEssayez-le en ligne! Retourne une fonction, comme autorisé par méta consensus. . Prend les entrées du haut de la pile.
En utilisant la même approche que la réponse RProgN 2 .
Sinon, 46 octets. Essayez-le en ligne! :
Celui-ci génère la plage, puis sélectionne et annule le membre selon le cas.
la source
Python 2 ,
443327 octetsMerci à @GB d'avoir joué 6 octets au golf!
Essayez-le en ligne!
la source
05AB1E, 8 octets
Essayez-le en ligne
Explication
la source
¹F(
semble cher pour "si étrange, nie".n
, à la puissance de1/n
.Gelée ,
9 à8 octetsEssayez-le en ligne!
-1 merci à Dennis . Duh float conversions.
Utilise l'approche Python 2 de @ xnor.
EDIT : > _>
la source
|2×Ḃ+H~$
enregistre un octet. tio.run/nexus/jelly#AR0A4v//fDLDl@G4gitIfiT/…CJam , 16 octets
Entrée basée sur 1.
Essayez-le en ligne!
Explication
Voici une ventilation du code avec les valeurs sur la pile pour chaque entrée de
1
à4
. Les premières commandes n'affectent que les deux bits les moins significatifs den-1
so after4
, ce truc ne se répète que de manière cyclique, les résultats étant incrémentés de 2, en raison de la réduction de moitié.la source
Perl 6 ,
55 27 2422 octets(Inspiré par la
zipWith
réponse de Haskell )Essayez-le
(Inspiré par plusieurs réponses)
Essayez-le
L'essayer
L'essayer
Étendu:
(Tous sont basés sur 0)
la source
Haskell ,
3736 octetsEssayez-le en ligne! Il s'agit d'une fonction anonyme qui prend un nombre
n
en argument et renvoie 0 le indexn
th de la séquence.la source
Haskell, 56 octets
0 indexé
la source
Perl 5 47 + 1 (pour drapeau) = 48 octets
Ancienne soumission 82 octets
Courez comme si:
la source
print +((
et en supprimant le dernier)
. Et deux autres en utilisantsay
et-E
. Et aussi un de plus en faisant à la($_%4&1||-1)
place du ternaire.JavaScript (ES7), 28 octets
1 indexé. Je n'ai pas encore étudié d'autres réponses, donc je ne sais pas s'il s'agit du meilleur algorithme, mais je suppose que non.
la source
JavaScript,
2822 octetsMerci @ETHproductions pour le golf 6 octets
Essayez-le en ligne!
la source
f=x=>x%2?~x>>1:x/2+x%4-1
marcherait?dc , 98 octets
Mon Dieu, c'est la réponse la plus longue ici, principalement parce que j'ai choisi de générer la valeur absolue de chaque élément de la séquence un par un en utilisant la formule récursive suivante:
puis la sortie
(-1)^n * a_n
, plutôt que de calculer directement lan
ième élément. Quoi qu'il en soit, c'est1
-indexed.Essayez-le en ligne!
la source
R, 38 octets
Explication
la source
TI-Basic (TI-84 Plus CE), 31 octets
TI-Basic est un langage à jetons et chaque jeton utilisé ici est un octet, sauf
remainder(
deux.Ceci utilise la version 1-indexée.
Explication:
Il existe un modèle qui se répète tous les quatre chiffres. Dans la version 1-indexée, il s'agit de: - (x + 1) / 2, (x + 1) / 2, - (x + 1) / 2, (x-1) / 2 pour la valeur d'entrée x. Ceci peut être représenté comme une fonction définie par morceaux.
f (x) = - (x + 1) / 2 si x ≡ 1 mod 4; (x + 1) / 2 si x 2 mod 4; - (x + 1) / 2 si x 3 mod 4; (x-1) / 2 si x 0 mod 4
Les parties "x ≡ 1 mod 4" et "x 3 mod 4" étant identiques, nous pouvons les combiner en "x 1 mod 2".
Maintenant, la fonction par morceaux est:
f (x) = - (x + 1) / 2 si x ≡ 1 mod 2; (x + 2) / 2 si x 2 mod 4; (x-2) / 2 si x 0 mod 4
C'est là que je commence à le diviser en commandes réelles. Puisque la valeur est positive pour les indices pairs et négative pour les impairs, nous pouvons utiliser (-1) ^ x. Cependant, dans TI-Basic
i^(2X
(5 octets), sa longueur est inférieure à(-1)^Ans
(6 octets). Notez que les parenthèses sont obligatoires en raison de l'ordre des opérations.Maintenant que nous avons le moyen de supprimer les entrées impaires, nous passons aux mods (ajout de la négation plus tard). J'ai fait le cas d'une entrée impaire la valeur par défaut, nous allons donc commencer par
.5(Ans+1)
.Pour résoudre le cas d'une entrée paire, ajoutez simplement un au nombre entre parenthèses, mais uniquement lorsque x 0 mod 2. Cela peut être représenté par
.5(Ans+1+remainder(Ans+1,2))
ou.5(Ans+1+not(remainder(Ans,2)))
, mais ils ont le même nombre d'octets, donc peu importe lequel.Pour résoudre le cas d'une entrée multiple de 4, nous devons soustraire 3 du nombre entre parenthèses, mais également un autre 1 car tous les multiples de 4 sont pairs, ce qui en ajouterait un de notre étape précédente, nous avons donc maintenant
.5(Ans+1+remainder(Ans+1,2)-4not(remainder(Ans,4)))
.Maintenant, il suffit de clouer sur la partie déterminant la signalisation pour obtenir le programme complet.
la source
Befunge 93, 25 octets
Indexé à zéro
Essayez-le en ligne!
Le numéro est donné par
((2(n / 4) + 1) + !!((n % 4) % 3)) * (2(n % 2) - 1)
la source
QBIC , 53 octets
Explication:
la source
Sage , 19 octets
Essayez-le en ligne!
Ceci est juste un portage de @Dennis 'Jelly answer to Wise.
la source
Q, 52 octets
0 solution indexée.
la source