Votre tâche consiste aujourd'hui à appliquer une onde à un tableau de nombres. Une onde ressemble à ceci: l' [1, 0, -1, 0, 1, 0, -1, 0, 1...]
appliquer à un tableau donné signifie additionner les premiers éléments, les seconds éléments, etc.
Plus précisément:
Votre programme ou fonction recevra un tableau d'entiers. Il doit imprimer ou renvoyer un tableau de taille égale avec 1
ajouté au 1er, 5e, 9e, etc. élément du tableau d'origine, -1
ajouté au 3e, 7e, 11e, etc. élément du tableau d'origine, et le reste des éléments devrait être laissé intact.
Le tableau d'entrée est garanti d'avoir au moins un élément.
Cas de test:
Input | Output
[0] | [1]
[-1] | [0]
[-4, 3, 0, 1, 7, 9, 8, -2, 11, -88] | [-3, 3, -1, 1, 8, 9, 7, -2, 12, -88]
[0, 0, 0, 0, 0] | [1 ,0 ,-1 ,0 ,1]
[1, 1] | [2, 1]
C'est le code-golf , le code le plus court gagne!
Réponses:
Gelée , 5 octets
Essayez-le en ligne!
Comment ça marche
la source
1, 2, 3 ...
ou1, 0, -1, 0 ...
?LOGO , 18 octets
Il n'y a pas de "Essayez-le en ligne!" lien car tous les interpréteurs de LOGO en ligne ne prennent pas en charge la liste de modèles.
Il s'agit d'une liste de modèles (équivalent de la fonction lambda dans d'autres langues).
Usage:
(
invoke
appelle la fonction,pr
imprime le résultat)impressions
[-3 3 -1 1 8 9 7 -2 12 -88]
.Explication (déjà assez compréhensible):
la source
Haskell , 26 octets
Essayez-le en ligne! (exécute tous les cas de test)
Explication:
la source
JavaScript (ES6), 28 octets
Le calcul se déroule comme suit:
Le dernier bit profitant du fait qu'en JS, un nombre négatif lorsqu'il est modulé conservera son signe négatif (c'est
-5 % 3 -> -2
-à- dire au lieu de1
ce qu'il serait en Python).la source
Mathematica,
262322 octetsEssayez-le en ligne! (Mathématiques)
Remarque: Le lien TIO est pour la version 23 octets, la version 22 octets n'est pas compatible avec les mathématiques.
la source
Python 2 , 40 octets
Essayez-le en ligne!
la source
MATL ,
118 octetsEssayez-le sur MATL Online!
Explication
la source
+
dans l'explicationGelée , 16 octets
Essayez-le en ligne!
heh je suis sûr que c'est trop long
modifier
Je sais qu'une solution à 5 octets est possible mais mon wifi semble commencer à me couper, donc je jouerai au golf demain. Si quelqu'un poste la courte solution Jelly avant que je puisse jouer au golf, ça me va; Je vais juste garder ceci ici pour référence à
quel point je suis mauvais à Jelly lolune autre façon de le faire. Je veux dire, je pourrais simplement regarder le lien que Phoenix a posté dans les commentaires, mais comme j'apprends encore, je ne veux pas regarder la solution avant de l'avoir trouvée moi-même. Cela pourrait me coûter de la réputation mais l'apprentissage est ce pour quoi je suis ici :)))la source
R ,
2924 octetsEssayez-le en ligne!
la source
Python 2 ,
5042 octets8 octets enregistrés grâce à @Sisyphus!
Essayez-le en ligne!
53 octets
Essayez-le en ligne!
la source
lambda l:map(sum,zip(l,[1,0,-1,0]*len(l)))
pour Python 2Haskell , 26 octets
@Mego m'a battu pour cette solution
Essayez-le en ligne!
C'est ce à quoi Haskell est excellent. Cela déclare une fonction sans point qui zippe l'entrée avec une liste infinie.
Haskell , 56 octets
Voici une solution qui utilise des nombres complexes. Pas très compétitif à cause de l'import mais jamais moins sympa.
Essayez-le en ligne!
la source
Mathematica, 19 octets
Explication
Remarque:
i=1
apparaît en dehors de la fonction, ce qui est correct selon ce méta consensus .la source
i
a une valeur différente de 1)J, 12 octets
Essayez-le en ligne!
Parce que l'opérateur de forme de J se
$
remplit cycliquement, lorsque nous le façonnons à la longueur#
de l'entrée, il fait exactement ce que nous voulons, et nous pouvons simplement l'ajouter à l'entrée]
la source
C ++,
93858363 octets-8 octets, grâce à cette réponse , j'ai découvert que les paramètres lambda peuvent être
auto
et vous pouvez passer avec le paramètre correct, cela fonctionnera-2 octets grâce à Nevay
-2 octets grâce à Zacharý
J'ai supprimé l'
vector
include. Vous devrez passer comme argument à un conteneur qui respecte les conditions suivantes:size
sans argumentsLes conteneurs STL qui respectent les conditions suivantes sont
array
,vector
,string
,map
,unordered_map
, et peut - être d' autresSi la sortie en modifiant des arguments n'est pas autorisée, alors:
C ++,
112110 octetsla source
j%4
pour enregistrer 2 octets.j%4
.Pari / GP , 30 octets
Essayez-le en ligne!
la source
Dyalog APL, 13 octets
Essayez-le en ligne!
Comment?
1 0 ¯1 0
- le tableau [1, 0, -1, 0]⍴⍨≢
- remodeler à la longueur de l'entrée, cyclique⊢+
- somme vectorisée avec l'entréela source
Perl 6 , 28 octets
Essayez-le en ligne!
1+0i, * × i ... *
produit une liste infinie des nombres1, i, -1, -i
répétés dans un cycle. Ces nombres sont zippés avec addition (Z+
) avec la liste d'entrée ($_
), puis les composants réels des nombres complexes résultants sont extraits (».re
).la source
D, 56 octets
Essayez-le en ligne!
Ceci est un portage de la réponse C ++ de HatsuPointerKun , alors ne les oubliez pas!
la source
Japt ,
1110 octetsProfite de l'habillage d'index de Japt.
Essaye-le
Explication
Entrée implicite du tableau
U
.Carte sur le tableau.
À l'élément actuel, ajoutez ...
L'élément à l'index en cours (
E
) ...Dans le tableau
[1,0,-1,0]
.la source
En fait , 11 octets
Essayez-le en ligne! (exécute tous les cas de test)
Explication:
la source
Pyth , 11 octets
Essayez-le en ligne!
la source
.e+b@[1Z_1Z
ss
pare
-1..e+be^.j)k
ne semblait pas fonctionner quand je l'ai essayé.CJam , 15 octets
Essayez-le en ligne!
la source
Math.JS , 34 octets
Expliqué
Essayez-le en ligne!
la source
8ème ,
9663 octetsCode
Ce code laisse le tableau résultant sur TOS
Utilisation et exemples
Explication
Nous utilisons cos (x) pour obtenir la bonne séquence [1,0, -1,0]. L'index de chaque élément du tableau est multiplié par 90 degrés, puis il est passé à la fonction cos () pour obtenir le "facteur d'onde" souhaité à ajouter à l'élément correspondant.
la source
C # (.NET Core) , 50 octets
Essayez-le en ligne!
Utilise un lambda simple. Modifie le tableau d'origine et renvoie la sortie par référence.
la source
05AB1E , 16 octets
Essayez-le en ligne!
3L2.SR0¸«
est la chose la plus courte à laquelle je puisse pensersin(x % 4)
dans 05AB1E.la source
Rubis , 38 octets
Essayez-le en ligne!
la source