Avec une liste d'entiers finis non vide, affiche une valeur de vérité s'il existe exactement deux entrées égales et si toutes les autres entrées sont distinctes, et une valeur de Falsey sinon.
Exemples
truthy:
[1,1]
[1,2,1]
[1,6,3,4,4,7,9]
falsey:
[0]
[1,1,1]
[1,1,1,2]
[1,1,2,2]
[2,1,2,1,2]
[1,2,3,4,5]
Réponses:
Python 3,
3028 octetsEssayez-le en ligne!
{*m}
jette la liste sur unset
objet, une liste non ordonnée d'éléments sans doublons. Cela réduira toujours la longueur de la liste du nombre de doublons qu'elle contient. En calculant combien la longueur a changé, nous pouvons facilement savoir si la liste comportait une seule copie et renvoyer le résultat du test.-2 octets grâce aux ovs.
la source
{*m}
raccourci au lieu deset
, bien joué au golf!lambda m:~-len(m[len({*m}):])
Husk , 4 octets
Essayez-le en ligne!
Explication
la source
MATL ,
7, 6 octetsEssayez-le en ligne!
Un octet enregistré grâce à @Guiseppe!
Explication:
la source
s
issum
etsum
sums le long de la première dimension non singleton (colonnes) et que la matrice est symétrique, est-ce que cela ne pourrait pas simplement être à las
place deXs
?Haskell , 34 octets
Essayez-le en ligne! Basé sur la réponse de H.PWiz .
la source
Gelée ,
85 octetsEssayez-le en ligne!
Explication
Si les valeurs de sortie peuvent être des valeurs cohérentes, alors
QL_L
fonctionne, ce qui-1
génère pour vérité et tout autre nombre non positif pour falsey (merci @JonathanAllan)la source
QL_L
produirait-1
pour la vérité et un nombre inférieur à-1
ou0
pour falsey (par exemple[1,6,3,4,4,7,9,9,9]
, reviendrait-3
, tandis[1,6,3,4,7,9]
que reviendrait0
).-2
.JavaScript (ES6), 30 octets
Essayez-le en ligne
la source
Pushy , 8 octets
Mise en œuvre simple de vérifier si
len(set(list)) == len(list)-1
:Explication:
Cela fonctionne car la longueur ne diminuera de 1 que s'il y avait seulement 1 entier non distinct dans la liste initiale.
Essayez-le en ligne!
la source
Octave , 25 octets
Ceci n'utilise pas une approche
group
ouunique
comme beaucoup d'autres réponses, mais plutôt le "produit cartésien" de toutes les comparaisons possibles.Explication
Essayez-le en ligne!
Et parce qu'aucun programme ne serait complet sans convolution (merci @LuisMendo pour avoir réparé une erreur):
Octave , 40 octets
Essayez-le en ligne!
la source
J ,
7 à6 octets=
vérifier que chaque élément est identique à chaque élément unique, crée une matrice de m lignes pour m éléments uniques.0,
ajoutez une ligne vide en haut.=&#
le nombre de lignes est-il égal à la longueur de l'entrée?Essayez-le en ligne!
la source
.~
par=
Retina ,
151211 octetsMerci à Neil pour avoir sauvegardé 1 octet.
Essayez-le en ligne!
L'entrée est séparée par un saut de ligne. (La suite de tests utilise une séparation par virgule pour plus de commodité.)
Explication
Dédupliquez les lignes dans l'entrée, ce qui supprime tout entier apparu auparavant (mais laisse le ou les sauts de ligne environnants).
Comptez le nombre de lignes vides, qui est égal au nombre de doublons supprimés, mais ne considérez que les deux premières correspondances. Ainsi, la sortie ne sera que
0
(pas de doublons),1
(un duplicata),2
(deux doublons ou plus).Assurez-vous qu’un seul duplicata a été supprimé.
la source
A`.
pour compter les sauts de ligne, car elle laisse tomber le dernier.)A`.
, mais le problème est plutôt que vous ne pouvez pas distinguer une seule ligne vide de ne pas avoir de lignes du tout. Peut-être que je devrais envisager de terminerA
et deG
sortir avec un saut de ligne s'il y a des lignes. Bien que cela devrait probablement être une option puisque je peux imaginer que ce saut de ligne soit gênant dans d’autres scénarios.^$¶
.A
est identique, qu'il conserve une seule ligne vide ou qu'il supprime toutes les lignes.05AB1E , 4 octets
Essayez-le en ligne!
Les sorties
1
sous forme de vérité, tout autre entier non négatif sous forme de fausseté. Dans 05AB1E,1
est le seul numéro de vérité (merci @Emigna pour la perspicacité!).Explication
la source
Ruby, 32 octets
la source
Array#size
vous->s{s.uniq.size==s.size-1}
C # (.NET Core) , 35 + 18 octets
+18 pour utiliser
System.Linq
.Essayez-le en ligne!
Alternative de 67 octets sans Linq:
Essayez-le en ligne!
la source
Excel, 42 octets
Version danoise
Assume chaque entier de la liste dans une cellule séparée dans une colonne
A
.Si nous étions autorisés pour des valeurs falsey incohérentes , nous pourrions économiser 3 octets:
Version en langue anglaise (44 bytes)
la source
R ,
3231 octets-1 octet grâce à @JarkoDubbeldam
Essayez-le en ligne!
Lit à partir de stdin, écrit sur stdout.
duplicated
itère dans la liste, en remplaçant les valeurs parl
parTRUE
si cette valeur apparaît plus tôt dans la liste, etFALSE
sinon. S'il y a une paire d'âme sœur unique, il devrait y avoir exactement uneTRUE
valeur, donc la somme devrait l'être1
.la source
scan()
approche.PowerShell ,
4037 octetsEssayez-le en ligne!
La
Sort-Object
commande (aliassort
) avec l'-u
indicateur nique extrait uniquement les composants uniques de l'entrée. Par exemple, pour une entrée@(1,3,3,2)
, cela se traduira par@(1,2,3)
.Ainsi, nous devons simplement nous assurer que le contenu
.count
de cet objet (c'est-à-dire le nombre d'éléments dont il dispose) est-eq
identique à celui.count
de notre tableau d'entrée-1
(c'est-à-dire que nous avons exactement une entrée dupliquée).3 octets sauvés grâce à Sinusoid.
Correction d'un bug grâce à TessellatingHeckler.
la source
1,2,1
-get-unique
fonctionne uniquement sur une entrée triée au préalable. Qu'en($args|sort -u).count-eq$args.count-1
est-il de 37, mais qui fonctionne pour tous les cas de test, si vous l'appelez commef 1 2 1
au lieu def 1,2,1
?Perl 5 , 36 + 1 (
-a
) = 37 octetsEssayez-le en ligne!
la source
@k{@F}++;say@F==1+keys%k
Haskell , 37 octets
Essayez-le en ligne!
la source
Octave / MATLAB (avec package de statistiques / boîte à outils), 21 octets
Fonction anonyme. L'entrée est un vecteur de colonne. La sortie est
true
(affichée comme1
) oufalse
(affichée comme0
).Essayez-le en ligne!
Explication
pdist(x)
calcule un vecteur de distances euclidiennes entre toutes les paires de lignes dex
. Il considère chaque paire une seule fois (l'ordre des deux lignes n'a pas d'importance) et ne considère pas les paires formées deux fois par la même ligne.Dans notre cas, il
x
s’agit d’un vecteur colonne, la distance euclidienne entre deux lignes est donc la différence absolue entre les deux nombres.~
est la négation logique (booléenne), lennz
nombre de nonzeros et se==1
compare à1
. Le résultat est donctrue
si et seulement s'il n'y a qu'une seule paire qui donne une distance nulle.la source
Jq 1.5 ,
5325 octetsInspiré par la réponse de Riley et beaucoup plus courte que ma solution d'origine.
Essayez-le en ligne!
la source
Julia,
3926 octetsExplication
Le code génère un tableau bidimensionnel de booléens, qui est ensuite collecté à l'aide de la fonction sum, en comptant le nombre de paires d'éléments identiques dans le carré cartésien de A. Il est ensuite comparé à la longueur de la chaîne plus deux, et les quantités sont égales seulement quand il y a exactement un caractère de répétition.
Ce code redéfinit l'opérateur NOT.
la source
!a=sum(a.==a')==endof(a)+2
enregistre quelques octets. Essayez-le en ligne!Pyth , 6 octets
Vérifiez tous les cas de test.
l{
- Obtient le nombre d'éléments uniques.tlQ
- Obtient la longueur de la liste de saisie, décrémentée.q
- Vérifie l'égalité.7 octets
Vérifier tous les cas de test
la source
Octave ,
2326 octetsEssayez-le en ligne!
La
x==x'
partie a été inspirée par la réponse de flawr . C'est plus long que la réponse de Luis, mais il n'utilise aucune boîte à outils.Explication:
C'est une fonction anonyme qui prend un vecteur
x
en entrée et le compare à lui-même transposé. Cela donnera une matrice où se trouvent tous les éléments diagonaux1
et tous les éléments non diagonaux indiquent qu'il y a des éléments en double.La somme de chaque colonne indique le nombre de doublons de ce nombre. Nous voulons que deux des nombres aient un doublon, nous avons donc deux valeurs égales à deux et le reste inégal à deux.
Si nous prenons le produit de cette matrice, nous aurons
4
s'il n'y a que deux éléments égaux (2*2*1*1*1*1*...
), et autre chose que4
s'il n'y a pas de doublons, ou plus de deux.la source
PHP, 46 octets
Compte le nombre d'entrées
$argv
et le compare au nombre d'entrées uniques. Si le premier est plus élevé que le second de 1, alors la vérité, sinon falsey.Essayez-le sur eval.in!
la source
$argv
est la liste des paramètres de ligne de commande. Donc: non, il ne peut pas simplement utiliser$a
.05AB1E ,
65 octetsEssayez-le en ligne!
1
étant la seule valeur de vérité dans 05AB1E, nous pouvons nous arrêter ici. (Merci @ Emigna pour l'avoir signalé.)Pour n'obtenir que deux valeurs distinctes, on peut éventuellement ajouter:
la source
Θ
, car1
c'est la seule valeur de vérité de 05AB1E.¢
cela ne fonctionnera pas. Il compterait[19,4,4,9]
aussi faux et[19,9]
aussi vrai , car il trouve l'0
en10
.{¥_O
devrait être bien aussi.APL (Dyalog Unicode) , SBCS 7 octets
Essayez-le en ligne!
Explication:
la source
Gelée , 10 octets
Essayez-le en ligne!
une approche plus longue mais différente
la source
Japt, 7 octets
L'essayer
Explication
Supprimez les doublons (
â
), obtenez length (Ê
) et comparez equal (¶
) avec le length (Ê
) de input (U
) moins 1 (É
).la source
âÊɶ
caractères multi-octets ne sont-ils pas ?Haskell , 37 octets
Essayez-le en ligne!
la source
05AB1E , 5 octets
Essayez-le en ligne!
Dans 05AB1E, 1 est la seule valeur de vérité. Par conséquent, pour obtenir un résultat de vérité, il doit y avoir exactement 1 élément dupliqué supprimé par l'uniquify.
la source