Les trois entiers sont-ils distincts?


14

Vous recevrez 3 entiers en entrée. Les entrées peuvent être différentes ou non les unes des autres. Vous devez sortir 1 si les trois entrées sont différentes les unes des autres et 0 si une entrée est répétée plusieurs fois.

C'est du , alors faites votre code le plus court possible!


1
Bienvenue chez PPCG. Beau premier défi. Nous sommes assez stricts sur les critères de gain objectifs sur ce site. le code-golf semble être le choix évident ici, je vais donc l'ajouter à votre message. Corrige moi si je me trompe.
Adám

1
Certains cas de test seraient bien.
Adám

19
Celui qui vote en aval toutes les réponses devrait au moins expliquer pourquoi ...
Arnauld

1
@ Adám Je pense qu'un titre plus précis serait Les trois entiers sont-ils distincts?
Arnauld

5
Mon dupe-vote est un marteau, mais un double possible de " Déterminer si tous les chiffres décimaux sont uniques " Légèrement différent, mais la plupart des réponses peuvent toujours être portées.
Kevin Cruijssen

Réponses:


10

Python 3 , 23 21 20 octets

lambda*a:len({*a})>2

Essayez-le en ligne!


OP a demandé 1 contre 0, alors peut-être avez-vous besoin d'un octet de plus:lambda*a:len({*a})//3
tsh

@tsh en Python 1 == True, je pense qu'il y a un meta post à ce sujet quelque part
Stephen

1
@tsh - méta pertinente "si ça craque comme un nombre, c'est un nombre" - en Python: False * Trueis 0; False + Trueest 1; etc ...
Jonathan Allan

De la méta pertinente: "cela ne s'applique pas aux défis où une sortie de chaîne exacte est requise", donc je ne suis pas sûr de ce qui s'applique vraiment ici.
GB


8

R , 13 octets

Une solution différente de @Kirill en l'utilisant mad()à des fins imprévues!

mad(scan())>0

Essayez-le en ligne!


1
Eh bien, l'entrée n'est pas spécifiée du tout, donc l'OMI accepte 3 valeurs comme entrée signifie que nous pouvons accepter un vecteur
digEmAll

2
R presque en concurrence avec les langues de golf! : D
digEmAll

1
Je crois que Gauss a inventé madexactement dans ce but.
ngm

5

R , 24 22 20 octets

all(table(scan())<2)

Essayez-le en ligne!

Renvoie un booléen, mais comme les gens ont déjà discuté de la réponse Python , cela devrait être OK.

Merci à digEmAll pour avoir économisé 2 octets.



11 octets - si vous êtes autorisé à avoir un nombre> 0 comme valeur réelle. Dans le cas contraire, ajoutez >0à la TRUE/FALSEproduction dans 13 octets.
J.Doe

1
Wow, je ne connaissais même pas cette fonction. Je vous suggère de le poster séparément (éditez et relancez votre réponse supprimée), mais je pense que vous devez vous en tenir à 13 octets - alors que T / F agit en effet comme 1/0, 1,48 non.
Kirill L.

5

JavaScript, 22 octets

Si nous pouvons générer des valeurs booléennes, les 2 derniers octets peuvent être supprimés.

a=>new Set(a).size>2&1

Essayez-le en ligne

Pour le même nombre d'octets, cela fonctionne sur des tableaux de toute taille mais suppose que l'entrée ne contiendra jamais de a 0et que la sortie est un booléen.

a=>!a[new Set(a).size]

Essayez-le en ligne


En supposant que nous pouvons prendre l'entrée comme un tableau et retourner un booléen:a=>new Set(a).size>2
Arnauld

@Arnauld, oui, je l'avais aussi, mais en l'état, la spécification ne le permettra pas - sera mise à jour si la spécification change, cependant.
Shaggy

Oh, attendez. Je peux juste virer de bord &1pour 22 octets.
Shaggy


4

Cubix , 55 25 octets

-29 merci à Jo King

O@O1u|@O@II-!/;I-!/;u^?-p

Essayez-le en ligne!

Il devrait être possible de jouer au golf sur quelques octets.



Merci beaucoup. J'ai réussi à raser 1 octet de plus pour arriver à 25 octets au total
Luke

Je pense que vous pourriez manquer un @à la place de .la 9ème place. Le fait faire des choses
géniales

3

05AB1E , 2 octets

ÙQ

Essayez-le en ligne ou vérifiez d'autres cas .

Explication:

Ù     # Uniquify the (implicit) input
 Q    # Check if it's still equal to the (implicit) input

L'utilisation de règles standard de vérité / fausse pour les problèmes de décision , en gardant à l'esprit que 1c'est la seule valeur de vérité dans 05AB1E, ¢Pfonctionne aussi bien qu'une alternative à 2 octets.
M. Xcoder

1
@ Mr.Xcoder Je ne suis pas sûr que ce soit actuellement valide - la question demande les sorties 1 et 0 - 4, par exemple, n'est ni 1ni 0, ni n'agit comme 1ou 0(comme Trueet Falsefait en Python). La question devrait probablement demander Truthy / Falsey, mais ce n'est pas le cas actuellement.
Jonathan Allan

3

Mathematica, 13 octets

Boole[E!=##]&

Fonction pure. Prend trois entiers en entrée et retourne 0ou 1en sortie. Je sais que cela est assez similaire à la réponse de David G. Stork , mais il exploite SlotSequencepour raser un octet (par rapport à Boole@*Unequal).


3

brainfuck , 91 octets

,>,>,[-<-<->>]>>+++++++[>+++++++<-]+<<<<[>]>>[<<<[-<->]<[>]>>->[>.<<<->>-]<+]<+[>>>[>]<-.>]

Essayez-le en ligne!

Comment ça fonctionne

,>,>,                   'read input as A, B, and C
[-<-<->>]>>+            'compute A-C, B-C
++++++[>+++++++<-]+     'prepare output
<<<<[>]>>               'if A-C != 0 && B-C != 0
[
    <<<[-<->]           'compute A-B
    <[>]>>->            'if A-B != 0
    [>.<<<->>-]         'print 1
    <+
]
<+
[                       'else (this else is for both of the if statements, even though they are nested... wierd, I know)
    >>>[>]              
    <-.>                'print 0
]

2

Japt -N, 3 octets

eUâ

Essayez-le


Explication

déduplique l'entrée et eteste si elle est égale à l'original.





2

Powershell, 27 25 octets

-2 octets merci @AdmBorkBork

+!(($args|group).Count-3)

Script de test:

$f = {
+!(($args|group).Count-3)
}

&$f 1 2 3
&$f 3 2 1
&$f 2 1 3
&$f 2 2 3
&$f 2 1 1
&$f 2 1 2

Explication:

    $args|group           # Group arguments
   (           ).Count    # Count of groups 
  (                   -3) # is 0 if inputed integers are unique
 !                        # operator not converts int to boolean: true if integers are unique
+                         # converts boolean to int: 1 if integers are unique, otherwise 0

1
26 octets -+(($args|group).count-eq3)
AdmBorkBork

génial! et merci
mazzy





1

Attaché , 10 octets

`==#Unique

Essayez-le en ligne!

Il s'agit d'un fork de l'opérateur `==et Unique, équivalent à:

{ _ == Unique[_] }

Alternatives

{#_=#Unique[_]} (15 octets)

Any##Same=>Pairs@Sort (21 octets)

Any@{`=&>_[[0'1,1'2,2'0]]} (26 octets)

&${not(x=y or y=z or x=z)} (26 octets)

&${x/=y and y/=z and x/=z} (26 octets)

{Any!Same=>Chop&2!_[0'1'1'2'2'0]} (33 octets)


1

Java 9, 43 27 octets

merci à @Olivier Grégoire

(a,b,c)->a!=b&b!=c&a!=c?1:0 

Tentative précédente:

(a)->a[0]==a[1]||a[0]==a[2]||a[1]==a[2]?0:1

1
Pourquoi ne pas le compter comme 43 octets
ASCII uniquement

1
27 octets : (a,b,c)->a!=b&b!=c&a!=c?1:0.
Olivier Grégoire

De plus, le premier code (100 octets) ne compile pas et utilise ==ce qui n'est pas applicable Stringsans les problèmes que vous rencontrez ici (après le correctif de compilation), et dans le second code, la Set.ofméthode lancera IllegalArgumentExceptionsi un double est fourni . Je suis tenté de -1 pour ne pas tester du tout.
Olivier Grégoire

@ olivier Excuses-il était tard et j'ai mélangé quelques idées différentes dans ma tête. Quant à Set.of, je faisais juste des essais avec des failles Java 9 et je n'ai pas Java 9 moi-même. J'aurais dû lire la documentation plus attentivement, désolé. J'éditerai une fois sur mon ordinateur.
Quintec


1

T-SQL, 39 bytes

SELECT IIF(a=b OR b=c OR c=a,0,1)FROM s

Input is taken as separate columns a, b, c from a pre-existing table s, per our IO standards.

Tried a variation using COUNT DISTINCT from input taken as separate rows, but that was a couple bytes longer.


1

Pyth, 3 bytes

s{I

Takes input as a list.
Try it here

Explanation

s{I
 {IQ     Check if the (implicit) input is invariant under deduplication.
s        Cast to int.

If we're allowed to treat True and False as 1 and 0 (which they are under the hood in Pyth), we can drop the s to get down to 2 bytes.


1

SmileBASIC, 25 24 bytes

READ A,B,C?A-B&&B-C&&C-A



1

q 14 bytes

{x~distinct x}

Technically this solution will return '1b' or '0b', which is the way a boolean value is distinguished from a numeric type, though it retains all arithmetic functionality, and so is in essence a 1 or 0:

q)1b +35
36

To return 1 or 0 non-boolean you have the below, which takes the byte count to 21

{$[x~distinct x;1;0]}

1
{1&/0N>':x?x}
ngn


1

Jelly, 5 6 bytes

ɠḲQL=3

Try it online!

From 5 to 6 bytes because this is my first time and I messed up (whoops) fixed it now

ɠḲQL=3
^^^^^
||||Is it equal to three?
|||How many unique numbers do we have? (length of unique numbers array)
||Sort By Unique
|Split by Spaces
Read Input

1
Hello and welcome to PPCG. Does your code also work for 3 integers, or is it only functional for three digits?
Jonathan Frech

@Jonathan Frech Sadly, it only works for three 1 Digit numbers, it does this by sorting the input by unique characters, then testing if the amount of unique characters is the same length as the input. Maybe there is a way to get it to work with any 3 integers, but I think this is a good attempt for me at least!
Kitten Hugger

2
The challenge specifies You will be given 3 integers as input. which seems to render your answer invalid.
Jonathan Frech

@JonathanFrech Fixed it now! Was my first time doing this sort of thing so, I'm not the greatest at it.
Kitten Hugger
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.