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

Uâ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.