Tutti e tre i numeri interi sono distinti?


14

Ti verranno dati 3 numeri interi come input. Gli ingressi possono essere o meno diversi l'uno dall'altro. È necessario emettere 1 se tutti e tre gli ingressi sono diversi l'uno dall'altro e 0 se qualsiasi ingresso viene ripetuto più di una volta.

Questo è , quindi rendi il tuo codice il più breve possibile!


1
Benvenuti in PPCG. Bella prima sfida. Siamo abbastanza severi sui criteri di vincita oggettivi su questo sito. code-golf sembra essere la scelta ovvia qui, quindi la aggiungerò al tuo post. Correggimi se sbaglio.
Adám,

1
Alcuni casi di test sarebbero carini.
Adám,

19
Chiunque sta sottovalutando tutte le risposte dovrebbe almeno spiegare perché ...
Arnauld,

1
@Adám Penso che un titolo più preciso sarebbe Tutti e tre i numeri interi sono distinti?
Arnauld,

5
Il mio voto doppio è un martello, ma il possibile duplicato di " Determina se tutte le cifre decimali sono univoche " Leggermente diverso, ma la maggior parte delle risposte può ancora essere trasferita.
Kevin Cruijssen,

Risposte:


10

Python 3 , 23 21 20 byte

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

Provalo online!


OP ha richiesto 1 vs. 0, quindi forse hai bisogno di un altro byte:lambda*a:len({*a})//3
tsh

@tsh in Python 1 == True, penso che ci sia un meta post al riguardo da qualche parte
Stephen,

1
@tsh - meta rilevante "se si blocca come un numero, è un numero" - in Python: False * Trueè 0; False + Trueè 1; ecc ...
Jonathan Allan,

Dal relativo meta: "Questo non si applica alle sfide in cui è richiesta un'uscita esatta della stringa", quindi non sono sicuro di cosa si applichi davvero qui.
GB


8

R , 13 byte

Una soluzione diversa da @Kirill usando mad()per uno scopo non intenzionale!

mad(scan())>0

Provalo online!


1
Bene, l'input non è affatto specificato, quindi IMO che accetta 3 valori come input significa che possiamo accettare un vettore
digEmAll

2
R quasi competere con le lingue del golf! : D
digEmAll

1
Credo che Gauss abbia inventato madesattamente per questo scopo.
ngm,

5

R , 24 22 20 byte

all(table(scan())<2)

Provalo online!

Restituisce un valore booleano, ma poiché la gente ha già discusso sulla risposta di Python , questo dovrebbe essere OK.

Grazie a digEmAll per il salvataggio di 2 byte.



11 byte - se ti è permesso avere un numero> 0 come truthey. In caso contrario, aggiungere >0per l' TRUE/FALSEoutput in 13 byte.
J.Doe,

1
Wow, non sapevo nemmeno di questa funzione. Ti suggerirei di pubblicarlo separatamente (modifica e ripristina la tua risposta eliminata), ma penso che devi restare con 13 byte - mentre T / F si comporta come 1/0, 1.48 no.
Kirill L.,

5

JavaScript, 22 byte

Se siamo in grado di generare valori booleani, è possibile rimuovere gli ultimi 2 byte.

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

Provalo online

Per lo stesso numero di byte, questo funziona su array di qualsiasi dimensione, ma presuppone che l'input non contenga mai a 0e che l'output sia un valore booleano.

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

Provalo online


Supponendo che possiamo prendere l'input come un array e restituire un valore booleano:a=>new Set(a).size>2
Arnauld

@Arnauld, sì, l'ho avuto anche io, ma per il momento le specifiche non lo permetteranno - si aggiorneranno se le specifiche cambiano, però.
Shaggy,

Oh aspetta. Posso solo attaccare &1per 22 byte.
Shaggy,


4

Cubix , 55 25 byte

-29 grazie a Jo King

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

Provalo online!

Dovrebbe essere possibile golf parecchi byte.



Molte grazie. Sono riuscito a radere via 1 byte in più per arrivare a 25 byte in totale
Luca

Penso che potresti perdere un @posto al posto del .9 ° posto. Fa fare alcune cose funky per 1 2 2.
MickyT

3

05AB1E , 2 byte

ÙQ

Provalo online o verifica alcuni altri casi .

Spiegazione:

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

L'uso delle regole standard di verità / falsità per il problema decisionale , tenendo presente che 1è l'unico valore di verità in 05AB1E, ¢Pfunziona anche come alternativa a 2 byte.
Mr. Xcoder,

1
@ Mr.Xcoder Non sono sicuro che sia attualmente valido - la domanda richiede le uscite 1 e 0 - 4, ad esempio, non è né 10, né agisce come 1o 0(piace Truee Falsefa in Python). Probabilmente la domanda dovrebbe chiedere Truthy / Falsey, ma al momento no.
Jonathan Allan,

3

Mathematica, 13 byte

Boole[E!=##]&

Funzione pura. Accetta tre numeri interi come input e restituisce 0o 1come output. So che questo è piuttosto simile alla risposta di David G. Stork , ma sfrutta SlotSequenceper radere via un byte (rispetto a Boole@*Unequal).


3

Brainfuck , 91 byte

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

Provalo online!

Come funziona

,>,>,                   '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 byte

eUâ

Provalo


Spiegazione

deduplica l'input e everifica se è uguale all'originale.





2

Powershell, 27 25 byte

-2 byte grazie @AdmBorkBork

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

Script di prova:

$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

Spiegazione:

    $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 byte -+(($args|group).count-eq3)
AdmBorkBork

grande! e grazie
mazzy,





1

Attache , 10 byte

`==#Unique

Provalo online!

Questa è una forcella dell'operatore `==e Unique, equivalente a:

{ _ == Unique[_] }

alternative

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

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

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

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

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

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


1

Java 9, 43 27 byte

grazie a @Olivier Grégoire

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

Tentativo precedente:

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

1
Perché non contarlo come 43 byte
ASCII il

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

Inoltre, il primo codice (100 byte) non viene compilato e utilizza ciò ==che non è applicabile Stringsenza problemi che si incontrano qui (dopo la correzione della compilazione) e nel secondo codice, il Set.ofmetodo genererà IllegalArgumentExceptionse viene fornito un duplicato . Sono tentato di -1 per non aver provato affatto.
Olivier Grégoire,

@olivier Apologies: era tardi e ho confuso alcune idee diverse nella mia testa. Per quanto riguarda Set.of, stavo solo sperimentando i nodi di Java 9 e non ho Java 9 da solo. Avrei dovuto leggere la documentazione più attentamente, mi dispiace per quello. Modificherò non appena avrò sul mio computer.
Quintec,


1

T-SQL, 39 byte

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

Ingresso è preso come colonne separate a, b, c da una tabella pre-esistente s , per i nostri standard IO .

Ho provato una variazione usando COUNT DISTINCTda input preso come righe separate, ma che era un paio di byte in più.


1

Pyth, 3 byte

s{I

Accetta input come elenco.
Provalo qui

Spiegazione

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

Se ci è permesso di trattare True e False come 1 e 0 (che sono sotto il cofano in Pyth), possiamo rilasciare il sper scendere a 2 byte.


1

SmileBASIC, 25 24 byte

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

1

Brachylog , 6 byte

d?∧1|0

Provalo online!

breve spiegazione

d? d eduplcates immette un test se è ancora uguale a input ( ? )

∧1 se vero restituisce 1

|0 altrimenti restituisce 0



1

q 14 byte

{x~distinct x}

Tecnicamente questa soluzione restituirà '1b' o '0b', che è il modo in cui un valore booleano si distingue da un tipo numerico, sebbene mantenga tutta la funzionalità aritmetica, e quindi è essenzialmente 1 o 0:

q)1b +35
36

Per restituire 1 o 0 non booleani è necessario quanto segue, che porta il conteggio dei byte a 21

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

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


1

Gelatina , 5 6 byte

ɠḲQL=3

Provalo online!

Da 5 a 6 byte perché questa è la mia prima volta e ho sbagliato (whoops) risolto ora

ɠḲ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
Ciao e benvenuto in PPCG. Il tuo codice funziona anche per 3 integers, o funziona solo con tre cifre?
Jonathan Frech,

@Jonathan Frech Sfortunatamente, funziona solo con tre numeri a 1 cifra, lo fa ordinando l'input per caratteri univoci, quindi verificando se la quantità di caratteri univoci ha la stessa lunghezza dell'input. Forse c'è un modo per farlo funzionare con qualsiasi 3 numeri interi, ma penso che questo sia almeno un buon tentativo per me!
Kitten Hugger,

2
La sfida specifica che ti verranno dati 3 numeri interi come input. che sembra rendere non valida la tua risposta.
Jonathan Frech,

@JonathanFrech Risolto il problema ora! Era la prima volta che facevo questo genere di cose, quindi non sono il massimo.
Kitten Hugger,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.