Introduction:
Je pense que nous en avons tous entendu parler, mais voici un très bref résumé: Noé a rassemblé deux de chaque espèce animale sur la planète, mâle et femelle, pour sauver dans son arche lors d'une grande inondation. La citation réelle de la Bible est:
Genèse 7: 2-3
Vous devez emporter avec vous sept animaux de chaque espèce, le mâle et son compagnon, deux de chaque animal impur, le mâle et son compagnon, ainsi que sept oiseaux de toutes sortes dans le ciel. , mâles et femelles, pour conserver leur progéniture à la surface de la terre.
la source
Mais pour ce défi, nous ignorerons la partie propre / impure et la partie où il a pris sept de chaque animal. Ce défi concerne uniquement cette partie:
deux de chaque espèce d' animal
impur, le mâle et son compagnon
Défi:
Contribution:
Vous obtenez une liste d'entiers positifs (dans un ordre aléatoire).
Sortie:
Deux valeurs distinctes indiquant s'il s'agit d'une «Liste de Noé» ou non. Cela ne doit pas nécessairement être une valeur truey / falsey , donc pourrait également être 0
/ 1
en Java / C #, ou'A'
/ 'B'
dans n'importe quel langage, pour donner quelques exemples.
Quand une liste est-elle une «liste de Noé»? Lorsqu'il y a exactement deux de chaque entier dans la liste.
Règles du défi:
- Les E / S sont flexibles. L'entrée peut être une liste / un tableau / un flux d'entiers / flottants / chaînes, ou être lus un par un depuis STDIN. La sortie peut être deux types distincts valeurs , renvoyées par une fonction ou sortie vers un fichier STDOUT /.
- Les nombres entiers dans la liste d'entrée sont dans un ordre aléatoire et sont garantis positifs dans la plage .
- La liste d'entrées est garantie d'être non vide.
- La présence d'un entier multiple de deux fois au-dessus de 2 (c.-à-d. 4, 6, 8, etc.) sera une erreur. -À- dire
[6,4,4,6,4,7,4,7]
est Falsey, bien que vous pouvez toujours créer des paires égales comme ceci:[[4,4],[4,4],[6,6],[7,7]]
.
Règles générales:
- C'est le code-golf , donc la réponse la plus courte en octets l'emporte.
Ne laissez pas les langues de golf de code vous décourager de publier des réponses avec des langues autres que le golf de code. Essayez de trouver une réponse aussi courte que possible pour «n'importe quel» langage de programmation. - Des règles standard s'appliquent à votre réponse avec des règles d'E / S par défaut , vous êtes donc autorisé à utiliser STDIN / STDOUT, des fonctions / méthodes avec les paramètres appropriés et des programmes complets de type retour. Ton appel.
- Failles par défaut sont interdites.
- Si possible, veuillez ajouter un lien avec un test pour votre code (par ex. TIO ).
- De plus, l'ajout d'une explication à votre réponse est fortement recommandé.
Cas de test:
Truthy:
[7,13,9,2,10,2,4,10,7,13,4,9]
[1,2,3,1,2,3]
[10,100,1000,1,100,10,1000,1]
[123,123]
[8,22,57189,492,22,57188,8,492,57188,57189,1,1]
Falsey:
[6,4,4,6,4,7,4,7]
[2,2,2,2,2,2]
[5,1,4,5,1,1,4]
[77,31,5,31,80,77,5,8,8]
[1,2,3,2,1]
[44,4,4]
[500,30,1]
[1,2,1,1]
[2,4,6,4,4,4]
[2,23,34,4]
[2,23,3,3,34,4]
la source
Réponses:
Python 3 , 31 octets
Essayez-le en ligne!
Python 2 , 33 octets
Essayez-le en ligne!
la source
05AB1E , 4 octets
Essayez-le en ligne! ou comme suite de tests
Explication
la source
¢2QP
, mais l'utilisationΘ
est aussi une bonne alternative. :){ιË
, mais bien sûr cela échoue lorsque les nombres entiers se produisent 4 fois.Brachylog , 4 octets
Essayez-le en ligne!
Explication
la source
R , 20 octets
-6 octets grâce à digEmAll en changeant la méthode d'entrée
Essayez-le en ligne!
Affiche
FALSE
s'il s'agit d'une liste de Noah, etTRUE
sinon. Fonctionne pour tout type d'entrée, pas seulement pour les entiers.Calcule le nombre de chaque valeur dans la liste et vérifie si l'un des nombres est différent de 2.
la source
APL (Dyalog Extended) , 5 octets SBCS
Essayez-le en ligne!
Est-il vrai que…
2¨
deux pour chaque élément≡
est identique à⍧⍨
le compte à rebours (compte de ses propres éléments en soi)?
la source
C # (Visual C # Interactive Compiler) ,
39, 32 octetsMerci à @Expired_Data
Essayez-le en ligne!
la source
Haskell , 33 octets
Essayez-le en ligne!
Pour chaque élément de l'entrée, nous nous assurons qu'il apparaît deux fois dans la liste des entrées.
sum[1|b<-x,b==a]
est juste une version golfeur delength(filter(==a)x)
.la source
Perl 6 , 18 octets
Essayez-le en ligne!
.Bag
convertit la liste d'entrée en unBag
ensemble --a de multiplicité.{*}
extrait toutes les multiplicités..all
crée une jonction des multiplicités.== 2
résulte en une autre jonction de booléens, chacun vrai si la multiplicité est 2.so
réduit la jonction en un seul booléen.la source
J , 10 octets
Essayez-le en ligne!
la source
[:*/2=1#.=
je veux vraiment supprimer ce plafond mais je ne sais pas comment.2*/@:=1#.=
, également 10 octets@:
pratique ici aussi.=
, donc étrangement utile dans des scénarios de golf de nicheMS SQL Server 2017 ,
152150146 octetsLa version lisible:
Essayez-le sur SQL Fiddle !
-2 octets grâce à Kevin Cruijssen
la source
c
être supprimé après leCOUNT(*)
?Haskell ,
6145 octetsEssayez-le en ligne!
Merci à @KevinCruijssen pour 12 octets et à @nimi pour 4 autres.
Première réponse Haskell, mais c'était étonnamment facile à faire. Peut
probablementêtre beaucoup joué au golf. Exemple concret ...la source
all(True==).map(2==)
possibleall(2==)
. :)length
àall
:all((2==).length).group.sort
. Pas besoin de donner un nom à la fonction, c'est-à-dire de supprimer lef=
.all(2==)
ignoré le moment où je testais dans GHCi. Merci Kevin et Nimi, je mettrai à jour la réponse.all(True==)
estand
.JavaScript (ES6), 37 octets
Renvoie false pour Noah ou true pour non-Noah.
Essayez-le en ligne!
Commenté
la source
APL (Dyalog Unicode) , 8 octets SBCS
Fonction de préfixe tacite anonyme. Renvoie
0
/1
.Essayez-le en ligne!
…
⌸
Pour chaque valeur comme argument de gauche et les indices des occurrences de cette valeur comme argument de droite, appelez:≢
comptabiliser l'argument de droite (les occurrences)∘
puis le⊢
renvoyer, en ignorant l'argument de gauche2=
Liste booléenne indiquant les décomptes de 2∧/
ET-réduction (c.-à-d. Sont-ils tous vrais?)la source
PowerShell ,
663726 octets-11 octets grâce à mazzy
Essayez-le en ligne!
Regroupe
$l
et récupère tous les décomptes de valeurs correspondantes. Il filtre ensuite tous les comptes de 2 de cette liste. Si la liste est vide, c'est un numéro Noah; sinon, il sera toujours rempli avec un nombre différent de 2. Ne pas noter la liste donneraTrue
si elle est vide etFalse
si elle est rempliela source
group
être une chose qui existeElixir , 52 octets
Essayez-le en ligne!
Complétez Elobir noob ici :-D.
la source
PHP , 60 octets
Essayez-le en ligne!
PHP a d'excellentes fonctionnalités intégrées pour cela, bien qu'à 20 caractères, ce
array_count_values()
n'est pas très golfique.la source
Mathematica,
2524 octetsEssayez-le en ligne!
La
Tally
fonction renvoie une liste du formulaire , qui est ensuite comparée à un modèle qui vérifie si tous les nombres sont 2.{{element, count}, ...}
la source
Attaché , 16 octets
Essayez-le en ligne!
Explication
Alternatives
17 octets:
{All&_!`=&2@`~&_}
18 octets:
{All[`=&2@`~&_,_]}
23 octets:
Same@2&`'@Sum@Table[`=]
25 octets:
Same«2'Sum@Table[`=,_]»
25 octets:
Same<~2'Sum@Table[`=,_]~>
25 octets:
{Same[2'Sum@Table[`=,_]]}
35 octets:
{Commonest@_==Unique@_and _[0]~_=2}
la source
TI-Basic, 47 octets
Je suis un grand fan de TI-Basic. Ce n'est pas un bon langage pour vraiment n'importe quel but, mais j'aime la programmation (et le golf) dedans.
Comment fonctionne ce code?
Tout d'abord, il trie la liste.
Deuxièmement, il utilise la fonction △ Liste pour générer une autre liste, qui est la différence entre les éléments de la liste triée. (Par exemple, △ List ({1,3,7,8}) donnerait {2,4,1}). Ne s'applique pas à cette liste, qui convertit chaque élément non nul de la liste en zéro et chaque zéro en un.
Ensuite, le programme vérifie que la liste résultante correspond au modèle
{1, 0, 1, 0, ...}
, ce qui ne sera vrai que si la liste d'origine est une liste Noah.Il existe également une vérification supplémentaire que la longueur de la liste est régulière, pour détecter certains cas marginaux.
Voici quelques captures d'écran des cas de test:
la source
Julia 1.0 , 32 octets
Essayez-le en ligne!
Divise chaque élément du tableau d'entrée
l
par la transpositionl'
donnant une matrice. La sommation sur cette matrice lors de l'applicationisone
à chaque élément donne deux fois la longueur del
si chaque élément apparaît exactement deux fois.la source
K (oK) , 9 octets
Solution:
Essayez-le en ligne!
Explication:
la source
Julia ,
30 caractères26 octetsMerci, H.PWiz pour cette astuce!
Essayez-le en ligne!
la source
!a=all(x->2==sum(a.==x),a)
pour 26 octets. NB. que je recommande de compter en octets sur ce site!
pour des fonctions anonymesGelée , 5 octets
Essayez-le en ligne!
Un lien monadique qui prend une liste d'entiers et renvoie 1 si une liste Noah et 0 sinon.
la source
VDM-SL , 64 octets
Explication
VDM fonctionne principalement comme des instructions logiques de second ordre.
Puisque vous ne pouvez pas TIO VDM, voici la sortie d'une session de débogage
la source
MATL , 6 octets
Essayez-le en ligne!
0 pour la vérité, 1 pour la fausse. Porte la réponse de Robin Ryder .
MATL , 6 octets
Essayez-le en ligne!
1 pour la vérité, 0 pour la fausse. Ports la réponse de Luis Mendo .
la source
Rubis , 29 octets
Essayez-le en ligne!
la source
Kotlin ,
96776951 octetsEssayez-le en ligne!
la source
Excel, 45 octets
Suppose que les données de la colonne A sont entrées dans une cellule autre que celle de la colonne A. Renvoie VRAI s'il y a des paires et FAUX si elles ne correspondent pas à des paires
J'ai essayé de supprimer le / 2 et d'ajouter 0,5 pour la sommation, mais cela n'a pas fonctionné.
J'ai essayé de compter les fréquences <> 2 et cela n'a pas retourné le bon montant.
la source
Octave / MATLAB,
2221 octetsFonction anonyme qui entre un vecteur numérique et le produit
0
si le vecteur satisfait à la condition ou1
non.Essayez-le en ligne! Ou vérifiez tous les cas de test .
Explication
la source
Bash , 26 octets
Le code de sortie est différent de zéro si la liste est de Noah.
Essayez-le en ligne!
la source