Tâche
Étant donné un tableau d'entiers positifs, remplacez chaque élément par la parité de la somme des autres éléments. Le tableau est garanti d'avoir au moins 2 éléments.
Définition
- Parité: si un nombre est pair ou impair.
Exemple
Pour le tableau [1,2,3,1]
:
- Remplacez
1
par la parité de2+3+1
, c.-à-deven
. - Remplacez
2
par la parité de1+3+1
, c.-à-dodd
. - Remplacez
3
par la parité de1+2+1
, c.-à-deven
. - Remplacez
1
par la parité de1+2+3
, c.-à-deven
.
Sortie: [even, odd, even, even]
Contribution
Un tableau d'entiers positifs.
Vous pouvez le prendre comme un tableau approprié ou comme une chaîne d'entiers positifs séparés par un saut de ligne.
Vous pouvez supposer que le tableau et les valeurs à l'intérieur sont dans la capacité de gestion de votre langue.
Sortie
Un tableau de deux valeurs cohérentes , une représentant odd
, une représentant even
.
Vous pouvez le produire sous la forme d'une chaîne séparée par des sauts de ligne des deux valeurs.
Cas de test
Contributions:
[1, 2, 3, 1]
[1, 2, 3, 2, 1]
[2, 2]
[100, 1001]
Les sorties:
[even, odd, even, even]
[even, odd, even, odd, even]
[even, even]
[odd, even]
Remarque: vous pouvez choisir d'autres valeurs cohérentes autres que odd
et even
.
Notation
C'est du code-golf . La réponse la plus courte en octets l'emporte.
L'échappatoire standard s'applique.
la source
_SḂ
JavaScript (ES6),
38 3632 octetsUtilise
0
pour pair et1
pour impair.Tester
la source
c-b&1
au lieu de(c-b)%2
eval(a.join`+`)
plusa.reduce((x,y)=>x+y)
. C'est intelligentHaskell, 20 octets
Utilise
True
pour les valeurs impaires etFalse
pour les valeurs paires.Essayez-le en ligne!
Soustrayez chaque élément de la somme de la liste et testez s'il est impair.
f
tourné vers Pointfree a aussi 20 octets:map=<<(odd.).(-).sum
.la source
MATL ,
5, 4 octetsEssayez-le en ligne!
Un octet sauvé grâce à Dennis!
Cela donne «1» pour impair et «0» pour pair. Explication:
la source
Alice ,
3128 octetsEssayez-le en ligne!
Le format d'entrée n'a pas d'importance tant que les entiers sont séparés. Le format de sortie est séparé par des sauts de ligne.
La mise en page n'est probablement pas encore optimale, mais je n'ai pas encore trouvé de moyen de raccourcir cela.
Explication
la source
Pyth,
76 octets-1 octet grâce à @KZhang
Sorties 1 pour impair, 2 pour pair.
Essayez!
Explication
la source
%_2
en GCDi2_
, vous pouvez même faired
implicitement changer le code enmi2-sQ
, en économisant un octet. Les sorties sont modifiées à 2 pour pair et 1 pour impair.05AB1E (hérité) ,
43 octetsEssayez-le en ligne!
la source
D
, car l'entrée est implicite.Python 2 ,
3331 octets-2 octets grâce à Leaky Nun
Essayez-le en ligne!
la source
sum(x)-z&1
au lieu de(sum(x)-z)%2
sum(x,z)%2
fonctionnerait égalementR, 21 octets
lit la liste depuis stdin et retourne 0 pour pair, 1 pour impair. lie l'entrée à la variable
n
à l'intérieur de l'appel ausum
lieu de l'appeler à l'extérieur, c'est-à-diren=scan();(sum(n)-n)%%2
Essayez-le en ligne!
la source
Mathematica, 13 octets
ou
la source
Clojure, 30 octets
Soustrait toutes les valeurs de chaque valeur tour à tour, par exemple avec une entrée
[a b c d]
la 2ème valeur calculée estb - a - b - c - d
=-(a + c + d)
. La sortie estfalse
pour pair ettrue
pour impair.Mais vous pourriez aussi bien utiliser
+
et calculer deux fois chaque terme suivant afin qu'il n'affecte pas la parité.la source
CJam , 10 octets
Il s'agit d'un bloc (fonction) anonyme qui prend l'entrée de la pile et la remplace par la sortie.
Essayez-le en ligne!
Explication
Tenez compte des commentaires
[1 2 3 1]
.la source
J , 6 octets
Essayez-le en ligne!
la source
APL (Dyalog Unicode) ,
197 octetsGolfé 12 octets grâce à @ Adám
Essayez-le en ligne!
la source
Japt , 7 octets
Essayez-le en ligne!
Explication
la source
Perl 5, 31 octets
Sorties
1
impaires et0
paires.la source
perldoc perlsub
dit : "La signature fait partie du corps d'un sous-programme. Normalement, le corps d'un sous-programme est simplement un bloc de code contreventé.".sub
sans le casser.sub
, par exemple aprèssort
ougrep
ou comme argument pour un autre sous-programme. Cela peut valoir la peine d'être interrogé sur Code Golf Meta .sub
seulement s'il est utilisé dans une fonction prototypée (sort
etgrep
est plus ou moins prototypé). Mais sinon, lesub
est requis. Quoi qu'il en soit, jouer au golf 3 octets en omettantsub
n'est pas vraiment intéressant.Clojure (Script), 36 octets
La sortie est
true
pour impair etfalse
pour pair. La sortie et l'entrée sont des séquences.la source
PHP, 50 octets
Versions en ligne
1 pour impair, 0 pour pair
Sortie sous forme de chaîne séparée par
_
PHP, 72 octets
Sortie en tant qu'utilisation de tableau
array_map
la source
?:0
cela ne fait rien.foreach($_GET as$v)echo array_sum($_GET)-$v&1,_;
C,
6862 octets1 pour impair, 0 pour pair
Essai détaillé en ligne
la source
Rétine ,
4038 octetsEssayez-le en ligne! Sorties 1 pour impair et 0 pour pair. Explication: Les deux premières lignes dupliquent l'entrée une fois pour chaque numéro de l'entrée, mais sans l'élément lui-même. Cela crée une ligne vierge supplémentaire qui est ensuite supprimée. L'entrée est ensuite convertie de décimale en unaire, les espaces sont supprimés et la parité calculée. La parité paire est ensuite convertie à zéro et les résultats sont réunis sur une seule ligne. Edit: enregistré 2 octets grâce à @FryAmTheEggman. J'ai essayé d'autres versions qui sont conceptuellement plus agréables mais qui prennent beaucoup trop d'octets à exprimer:
Modifie toutes les entrées à leur parité, puis retourne toutes leurs parités si le total a une parité impaire.
Additionne un doublon de l'entrée, puis prend la parité de tout, puis inverse les parités si la somme est impaire, puis supprime à nouveau la somme.
la source
;
s en espaces. Si vous placez le;
au début, vous pouvez enregistrer un octet en le supprimant immédiatement au lieu de le convertir en 0.Ohm , 4 octets
Essayez-le en ligne!
Fondamentalement, un port direct des réponses MATL et 05AB1E . Utilise
true
pour pair etfalse
pour impair.la source
k, 9 octets
La sortie est un
1
pourodd
et un0
pour même. Essayez-le en ligne.Converti en pseudocode, ce serait:
la source
Scala , 19 octets
Essayez-le en ligne!
la source
Brain-Flak ,
946866 octetsEssayez-le en ligne!
Cela semble un peu long pour la tâche. Il pourrait y avoir un moyen plus pratique de le faire.
Explication
On calcule d'abord la somme de la pile avec:
Nous parcourons toute la pile en ajoutant ce résultat à chaque élément et déterminons la paire
Cela utilise un algorithme mod 2 assez cool que j'ai trouvé pour ce défi.
Cela pousse 1 sous les décréments d'entrée jusqu'à ce que l'entrée atteigne zéro à chaque fois en effectuant
1-n
le 1 que nous avons placé plus tôt, puis il supprime l'entrée.la source
Sage ,
5452 octetsEssayez-le en ligne!
Explication
Ce code serait beaucoup plus court s'il ne fallait pas autant d'octets pour permuter les deux premiers éléments. Le record actuel est
Cela constitue malheureusement la majorité du code.
Nous prenons d'abord la somme XOR de la pile
Nous avons ensuite XOR ceci avec chaque élément et l'élément avec le dernier bit mis à zéro
la source
Java ,
8178 octets3 octets grâce à Kevin Cruissen
Essayez-le en ligne!
Modifie le tableau sur place.
la source
void f(int[]a){int s=0,i=a.length;for(int x:a)s+=x;for(;i-->0;a[i]=s-a[i]&1);}
AWK , 64 octets
Essayez-le en ligne!
Affiche a
0
pour les sommes paires et1
pour les sommes impaires séparées par des retours à la ligne. La seule pensée, même un peu originale, était de placer laprint
commande à l'intérieur de l'for
étape "incrément". J'ai essayé quelques méthodes «intelligentes» pour imprimer, mais elles n'ont pas enregistré d'octets.Juste pour rire, si vous ne voulez pas de nouvelles lignes:
qui a le même nombre d'octets que ci-dessus, mais est un peu plus obtus.
la source
Swift - 55 octets
Bat enfin C! Aussi, 0 pour pair, 1 pour impair
Une fonction, à l'usage:
g(a: [1,2,3,2,1] // => 0 1 0 1 0
Vérifiez-le!
la source
(x-y)%2
parx-y&1
Axiome, 45 octets
pas de vérification du type d'entrée, recalcul possible de la somme "a" de chaque élément ... tests
la source
Julia 1.0 , 17 octets
Essayez-le en ligne!
la source