Os três números inteiros são distintos?

14

Você receberá 3 números inteiros como entrada. As entradas podem ou não ser diferentes uma da outra. Você deve enviar 1 se todas as três entradas forem diferentes uma da outra e 0 se qualquer entrada for repetida mais de uma vez.

Isso é , então faça seu código o mais curto possível!

subin saju
fonte
1
Bem-vindo ao PPCG. Bom primeiro desafio. Somos bastante rigorosos quanto aos critérios objetivos de vitória neste site. O code-golf parece ser a escolha óbvia aqui, então adicionarei isso ao seu post. Corrija-me se eu estiver errado.
Adám
1
Alguns casos de teste seriam bons.
Adám
19
Quem é downvoting todas as respostas devem, pelo menos, explicar por que ...
Arnauld
1
@ Adám Acho que um título mais preciso seria Todos os três números inteiros distintos?
Arnauld
5
Meu voto falso é um martelo, mas Possível duplicata de " Determinar se todos os dígitos decimais são únicos " Um pouco diferente, mas a maioria das respostas ainda pode ser portada.
Kevin Cruijssen

Respostas:

10

Python 3 , 23 21 20 bytes

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

Experimente online!

TFeld
fonte
O OP pediu 1 vs. 0, então talvez você precise de mais um byte:lambda*a:len({*a})//3
tsh
@tsh em Python 1 == True, eu acho que há um posto de meta sobre isso em algum lugar
Stephen
1
@tsh - meta relevante "se aparecer como um número, é um número" - em Python: False * Trueis 0; False + Trueé 1; etc ...
Jonathan Allan
Da meta relevante: "isso não se aplica a desafios em que é necessária uma saída exata de string", então não tenho certeza do que realmente se aplica aqui.
GB
8

R , 13 bytes

Uma solução diferente para @Kirill usando-a mad()para um propósito não intencional!

mad(scan())>0

Experimente online!

J.Doe
fonte
1
Input Bem, não é especificado em tudo, assim IMO aceitar 3 valores como meios de entrada podemos aceitar um vetor
digEmAll
2
R quase competindo com idiomas de golfe! : D
digEmAll
1
Acredito que Gauss inventou madexatamente para esse fim.
NGM
5

R , 24 22 20 bytes

all(table(scan())<2)

Experimente online!

Retorna um booleano, mas como as pessoas já discutiram sobre a resposta do Python , isso deve estar OK.

Agradecemos ao digEmAll por salvar 2 bytes.

Kirill L.
fonte
11 bytes - se você tiver qualquer número> 0 como verdade. Caso contrário, acrescente >0a TRUE/FALSEsaída em 13 bytes.
precisa saber é
1
Uau, nem sabia sobre essa função. Eu sugiro que você a publique separadamente (edite e revive sua resposta excluída), mas acho que você tem que ficar com 13 bytes - enquanto o T / F realmente age como 1/0, 1,48 não.
precisa
5

JavaScript, 22 bytes

Se conseguirmos gerar valores booleanos, os últimos 2 bytes poderão ser removidos.

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

Experimente online

Para a mesma contagem de bytes, isso funciona em matrizes de qualquer tamanho, mas assume que a entrada nunca conterá a 0e a saída é um booleano.

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

Experimente online

Shaggy
fonte
Partindo do princípio de que pode tomar a entrada como uma matriz e devolver um valor boleano:a=>new Set(a).size>2
Arnauld
@ Arnauld, sim, eu tinha isso também, mas, como está, a especificação não permitirá - estará atualizando se a especificação mudar.
Shaggy
Oh espere. Eu posso simplesmente aderir &1por 22 bytes.
Shaggy
4

Ruby , 16 bytes

->a{1-(a<=>a|a)}

Experimente online!

GB
fonte
-3 bytes comuniq!
benj2240
Booleano e Inteiro são tipos diferentes em Ruby.
GB
Ah, você está certo. Não li o desafio atentamente e presumi que uma saída de verdade / falsey seria suficiente.
precisa saber é
4

Cubix , 55 25 bytes

-29 agradecimentos a Jo King

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

Experimente online!

Deve ser possível obter alguns bytes de golfe.

Lucas
fonte
26 bytes
Jo King
Muito obrigado. Eu consegui raspar mais um byte para chegar a 25 bytes no total
Lucas
Eu acho que você pode estar perdendo um @no lugar do .9º lugar. Torna fazer algumas coisas funky para 1 2 2.
MickyT
3

05AB1E , 2 bytes

ÙQ

Experimente online ou verifique mais alguns casos .

Explicação:

Ù     # Uniquify the (implicit) input
 Q    # Check if it's still equal to the (implicit) input
Kevin Cruijssen
fonte
O uso de regras padrão de verdade / falsidade para o problema de decisão , tendo em mente que 1é o único valor de verdade em 05AB1E, ¢Pfunciona tão bem quanto um 2-byter alternativo.
Sr. Xcoder
1
@ Mr.Xcoder Não tenho certeza se atualmente é válido - a pergunta pede as saídas 1 e 0 - 4, por exemplo, não é nem 1nem 0nem age como 1ou 0(como Truee Falsefaz em Python). A pergunta provavelmente deve pedir Truthy / Falsey, mas no momento não.
Jonathan Allan
3

Mathematica, 13 bytes

Boole[E!=##]&

Função pura. Toma três números inteiros como entrada e retorna 0ou 1como saída. Eu sei que isso é bastante semelhante à resposta de David G. Stork , mas explora SlotSequencepara reduzir um byte (em comparação com Boole@*Unequal).

LegionMammal978
fonte
3

brainfuck , 91 bytes

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

Experimente online!

Como funciona

,>,>,                   '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
]
Prismo
fonte
2

Japonês -N, 3 bytes

eUâ

Tente


Explicação

deduplica a entrada e etesta se é igual ao original.

Shaggy
fonte
2

J , 4 bytes

-:~.

Experimente online!

Explicação:

O argumento é igual -:a si mesmo após remover as duplicatas~.

Galen Ivanov
fonte
2

K (oK) , 4 bytes

3=#?

Experimente online!

A contagem dos elementos distintos é igual a 3?

rua
fonte
2

Powershell, 27 25 bytes

-2 bytes obrigado @AdmBorkBork

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

Script de teste:

$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

Explicação:

    $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
confuso
fonte
1
26 bytes -+(($args|group).count-eq3)
AdmBorkBork 10/09
ótimo! e obrigado
mazzy 10/09/18
2

Lisp comum, 25 2 bytes

/=

Experimente online!

-23 bytes graças a @ceilingcat!

Renzo
fonte
Obrigado, @ceilingcat, atualizei a resposta!
Renzo
1

APL (Dyalog Unicode) , SBCS de 3 bytes

Função de prefixo tácito anônimo. Leva a lista como argumento.

∪≡⊢

Experimente online!

 faz o conjunto de elementos exclusivos do argumento

 Combine

 o argumento não modificado?

Adão
fonte
1

Anexo , 10 bytes

`==#Unique

Experimente online!

Este é um fork do operador `==e Unique, equivalente a:

{ _ == Unique[_] }

Alternativas

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

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

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

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

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

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

Conor O'Brien
fonte
1

Java 9, 43 27 bytes

graças a @Olivier Grégoire

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

Tentativa anterior:

(a)->a[0]==a[1]||a[0]==a[2]||a[1]==a[2]?0:1
Quintec
fonte
1
Por que não contar como 43 bytes
somente ASCII
1
27 bytes : (a,b,c)->a!=b&b!=c&a!=c?1:0.
Olivier Grégoire
Além disso, o primeiro código (100 bytes) não é compilado e usa os ==que não são aplicáveis Stringsem problemas encontrados aqui (após a correção da compilação) e, no segundo código, o Set.ofmétodo será lançado IllegalArgumentExceptionse qualquer duplicata for fornecida . Estou tentado a -1 por não testar.
Olivier Grégoire
Desculpas olivier, já era tarde e eu misturei algumas idéias diferentes na minha cabeça. Quanto ao Set.of, eu estava apenas experimentando o Java 9 kinks e não tenho o Java 9. Eu deveria ter lido a documentação com mais cuidado, desculpe por isso. Vou editar assim que entrar no meu computador.
Quintec 04/04/19
1

T-SQL, 39 bytes

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

A entrada é tomada como colunas separadas a, b, c de uma tabela pré-existente s , de acordo com nossos padrões de IO .

Tentei uma variação usando COUNT DISTINCTda entrada tomada como linhas separadas, mas isso foi um par de bytes mais longo.

BradC
fonte
1

Pitão, 3 bytes

s{I

Leva a entrada como uma lista.
Experimente aqui

Explicação

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

Se tivermos permissão para tratar True e False como 1 e 0 (que estão sob o capô em Pyth), podemos soltar o spara descer para 2 bytes.


fonte
1

SmileBASIC, 25 24 bytes

READ A,B,C?A-B&&B-C&&C-A
12Me21
fonte
1

Braquilog , 6 bytes

d?∧1|0

Experimente online!

breve explicação

d? d eduplica a entrada de um teste se ainda for igual à entrada ( ? )

∧1 se verdadeiro retorno 1

|0 else return 0

Kroppeb
fonte
1

> <> , 19 17 bytes

-2 bytes por Jo King.

:{:{:{=}=}=++0=n;

Experimente online!

PidgeyUsedGust
fonte
17 bytes
Jo rei
Eu definitivamente deveria ter percebido isso, obrigado!
usar o seguinte código
@RushabhMehta Não jogue golfe nas postagens de outros usuários usando as sugestões de golfe de outros usuários.
Jonathan Frech
1

q 14 bytes

{x~distinct x}

Tecnicamente, esta solução retornará '1b' ou '0b', que é a maneira como um valor booleano é diferenciado de um tipo numérico, embora retenha toda a funcionalidade aritmética, e, portanto, é essencialmente 1 ou 0:

q)1b +35
36

Para retornar 1 ou 0 não-booleano, você tem o seguinte, que leva a contagem de bytes para 21

{$[x~distinct x;1;0]}
Thaufeki
fonte
1
{1&/0N>':x?x}
NGN
1

Geléia , 5 6 bytes

ɠḲQL=3

Experimente online!

De 5 a 6 bytes, porque esta é a minha primeira vez e eu errei (oops) agora

ɠḲ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
Kitten Hugger
fonte
1
Olá e bem-vindo ao PPCG. Seu código também funciona 3 integersou funciona apenas com três dígitos?
Jonathan Frech
@ Jonathan Frech Infelizmente, ele funciona apenas para três números de 1 dígito, e faz isso classificando a entrada por caracteres únicos e testando se a quantidade de caracteres únicos tem o mesmo tamanho da entrada. Talvez haja uma maneira de fazê-lo funcionar com quaisquer 3 números inteiros, mas acho que essa é uma boa tentativa para mim, pelo menos!
Kitten Hugger
2
O desafio especifica que você receberá 3 números inteiros como entrada. o que parece invalidar sua resposta.
Jonathan Frech
@JonathanFrech Corrigido agora! Foi a primeira vez que fiz esse tipo de coisa, então não sou o melhor nisso.
Kitten Hugger #