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!


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!


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!


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.



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


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

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.



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

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).


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
]

2

Japonês -N, 3 bytes

eUâ

Tente


Explicação

deduplica a entrada e etesta se é igual ao original.





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

1
26 bytes -+(($args|group).count-eq3)
AdmBorkBork 10/09

ótimo! e obrigado
mazzy 10/09/18





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)


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

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.


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.


1

SmileBASIC, 25 24 bytes

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



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]}

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

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 #
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.