Sind alle drei ganzen Zahlen verschieden?

14

Sie erhalten 3 Ganzzahlen als Eingabe. Die Eingaben können sich voneinander unterscheiden oder nicht. Sie müssen 1 ausgeben, wenn alle drei Eingänge unterschiedlich sind, und 0, wenn ein Eingang mehr als einmal wiederholt wird.

Das ist , also mach deinen Code so kurz wie möglich!

subin saju
quelle
1
Willkommen bei PPCG. Schöne erste Herausforderung. Die objektiven Gewinnkriterien auf dieser Website sind sehr streng. Code-Golf scheint hier die naheliegende Wahl zu sein, also werde ich das zu deinem Beitrag hinzufügen. Korrigiere mich, wenn ich falsch liege.
Adám
1
Einige Testfälle wären nett.
Adám
19
Wer alle Antworten ablehnt, sollte zumindest erklären, warum ...
Arnauld
1
@ Adám Ich denke ein genauerer Titel wäre Sind alle drei Ganzzahlen verschieden?
Arnauld
5
Meine Dupe-Abstimmung ist ein Hammer, aber mögliches Duplikat von " Bestimmen, ob alle Dezimalstellen eindeutig sind " Leicht unterschiedlich, aber die meisten Antworten können trotzdem portiert werden.
Kevin Cruijssen

Antworten:

10

Python 3 , 23 21 20 Bytes

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

Probieren Sie es online!

TFeld
quelle
OP hat nach 1 vs. 0 gefragt, also brauchen Sie vielleicht noch ein Byte:lambda*a:len({*a})//3
tsh
@tsh in Python 1 == True, ich glaube, irgendwo gibt es einen Meta-Post dazu
Stephen
1
@tsh - relevantes Meta "Wenn es wie eine Zahl quakt , ist es eine Zahl" - in Python: False * Trueis 0; False + Trueist 1; etc ...
Jonathan Allan
Aus dem relevanten Meta: "Dies gilt nicht für Herausforderungen, bei denen eine genaue Zeichenfolgenausgabe erforderlich ist", daher bin ich mir nicht sicher, was hier wirklich gilt.
GB
8

R , 13 Bytes

Eine andere Lösung als bei @Kirill, wenn Sie es mad()für einen nicht beabsichtigten Zweck verwenden!

mad(scan())>0

Probieren Sie es online!

J.Doe
quelle
1
Nun, die Eingabe ist überhaupt nicht spezifiziert.
Wenn
2
R fast im Wettbewerb mit Golfsprachen! : D
digEmAll
1
Ich glaube, Gauß hat madgenau zu diesem Zweck erfunden .
ngm
5

R , 24 22 20 Bytes

all(table(scan())<2)

Probieren Sie es online!

Gibt einen Booleschen Wert zurück, aber wie bereits in der Python-Antwort beschrieben , sollte dies in Ordnung sein.

Dank digEmAll für das Speichern von 2 Bytes.

Kirill L.
quelle
11 Bytes - wenn Sie eine Zahl> 0 als Wahrheit haben dürfen. Andernfalls append >0für TRUE/FALSEin 13 Bytes ausgegeben.
J.Doe
1
Wow, wusste nicht einmal über diese Funktion. Ich würde vorschlagen, dass Sie es separat veröffentlichen (bearbeiten und Ihre gelöschte Antwort wiederbeleben), aber ich denke, Sie müssen sich an 13 Bytes halten - während T / F in der Tat wie 1/0 wirkt, tut 1,48 nicht.
Kirill L.
5

JavaScript, 22 Byte

Wenn wir boolesche Werte ausgeben können, können die letzten 2 Bytes entfernt werden.

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

Probieren Sie es online aus

Dies funktioniert bei gleicher Byteanzahl für Arrays beliebiger Größe, setzt jedoch voraus, dass die Eingabe niemals a enthält 0und die Ausgabe ein Boolescher Wert ist.

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

Probieren Sie es online aus

Zottelig
quelle
Angenommen, wir können die Eingabe als Array verwenden und einen Booleschen Wert zurückgeben:a=>new Set(a).size>2
Arnauld
@Arnauld, ja, das hatte ich auch, aber so wie es aussieht, lässt die Spezifikation es nicht zu - wird jedoch aktualisiert, wenn sich die Spezifikation ändert.
Shaggy
Oh, Moment mal. Ich kann nur &1für 22 Bytes anheften.
Shaggy
4

Ruby , 16 Bytes

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

Probieren Sie es online!

GB
quelle
-3 Bytes mituniq!
benj2240
Boolean und Integer sind in Ruby verschiedene Typen.
GB
Ah, du hast recht. Ich habe die Herausforderung nicht genau genug gelesen und angenommen, dass eine Wahrheits- / Falschausgabe ausreicht.
benj2240
4

Cubix , 55 25 Bytes

-29 danke an Jo King

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

Probieren Sie es online!

Es sollte möglich sein, einige Bytes abzuspielen.

Luke
quelle
26 Bytes
Jo King
Danke vielmals. Es ist mir gelungen, 1 weiteres Byte zu entfernen, um insgesamt 25 Byte zu erhalten
Luke,
Ich denke, Sie könnten eine @Stelle .an der neunten Stelle verpassen . Lässt es einige flippige Dinge für 1 2 2 tun.
MickyT
3

05AB1E , 2 Bytes

ÙQ

Probieren Sie es online aus oder überprüfen Sie weitere Fälle .

Erläuterung:

Ù     # Uniquify the (implicit) input
 Q    # Check if it's still equal to the (implicit) input
Kevin Cruijssen
quelle
Die Verwendung von Standard-Wahrheits / Falsch-Regeln für Entscheidungsprobleme , wobei zu berücksichtigen ist, dass dies 1der einzige Wahrheitswert in 05AB1E ist, ¢Pfunktioniert ebenso wie eine alternative 2-Byte-Methode.
Mr. Xcoder
1
@ Mr.Xcoder Ich bin mir nicht sicher, ob das aktuell gültig ist - die Frage fragt nach den Ausgängen 1 und 0 - 4, zum Beispiel ist weder 1noch 0, noch verhält es sich wie 1oder 0(wie Trueund Falsemach es in Python). Die Frage sollte wahrscheinlich nach Truthy / Falsey gestellt werden, aber derzeit nicht.
Jonathan Allan
3

Mathematica, 13 Bytes

Boole[E!=##]&

Funktion pur. Nimmt drei Ganzzahlen als Eingabe und gibt 0oder 1als Ausgabe zurück. Ich weiß, dass dies der Antwort von David G. Stork ziemlich ähnlich ist , aber es macht Sinn SlotSequence, ein Byte (im Vergleich zu Boole@*Unequal) abzuschneiden .

LegionMammal978
quelle
3

Brainfuck , 91 Bytes

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

Probieren Sie es online!

Wie es funktioniert

,>,>,                   '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
quelle
2

Japt -N, 3 Bytes

eUâ

Versuch es


Erläuterung

dedupliziert die Eingabe und eprüft, ob sie dem Original entspricht.

Zottelig
quelle
2

J , 4 Bytes

-:~.

Probieren Sie es online!

Erläuterung:

Ist das Argument gleich -:sich selbst nach dem Entfernen der Duplikate~.

Galen Ivanov
quelle
2

Powershell, 27 25 Bytes

-2 Bytes danke @AdmBorkBork

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

Testskript:

$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

Erläuterung:

    $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
mazzy
quelle
1
26 bytes -+(($args|group).count-eq3)
AdmBorkBork
großartig! und danke
mazzy
2

Common Lisp, 25 2 Bytes

/=

Probieren Sie es online!

-23 Bytes dank @ceilingcat!

Renzo
quelle
Danke, @ceilingcat, ich habe die Antwort aktualisiert!
Renzo
1

APL (Dyalog Unicode) , 3 Byte SBCS

Anonyme implizite Präfixfunktion. Nimmt Liste als Argument.

∪≡⊢

Probieren Sie es online!

 erledigt die Menge der eindeutigen Elemente aus dem Argument

 Spiel

 das unveränderte argument?

Adam
quelle
1

Attache , 10 Bytes

`==#Unique

Probieren Sie es online!

Dies ist eine Gabelung des Bedieners `==und Uniqueentspricht:

{ _ == Unique[_] }

Alternativen

{#_=#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
quelle
1

Java 9, 43 27 Bytes

danke an @Olivier Grégoire

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

Vorheriger Versuch:

(a)->a[0]==a[1]||a[0]==a[2]||a[1]==a[2]?0:1
Quintec
quelle
1
Warum nicht als 43 Bytes zählen
ASCII
1
27 Bytes : (a,b,c)->a!=b&b!=c&a!=c?1:0.
Olivier Grégoire
Auch der erste Code (100 Bytes) wird nicht kompiliert und verwendet == Dies gilt nicht für StringProbleme, auf die Sie hier stoßen (nach der Korrektur der Kompilierung). Im zweiten Code wird die Set.ofMethode ausgelöst, IllegalArgumentExceptionwenn ein Duplikat bereitgestellt wird . Ich bin versucht, -1 für überhaupt nicht testen.
Olivier Grégoire
@olivier Entschuldigung - es war spät und ich habe ein paar verschiedene Ideen in meinem Kopf verwechselt. Was Set.of betrifft, habe ich gerade mit Java 9-Knicken experimentiert und habe selbst kein Java 9. Ich hätte die Dokumentation genauer lesen sollen, tut mir leid. Ich bearbeite, sobald ich auf meinem Computer bin.
Quintec
1

T-SQL, 39 Bytes

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

Die Eingabe wird als separate Spalten genommen a, b, c aus einer bereits bestehenden Tabelle s , je unsere IO - Standards .

Es wurde versucht, eine Variation COUNT DISTINCTaus Eingaben zu verwenden, die als separate Zeilen verwendet wurden, die jedoch einige Bytes länger waren.

BradC
quelle
1

Pyth, 3 Bytes

s{I

Übernimmt die Eingabe als Liste.
Probieren Sie es hier aus

Erläuterung

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

Wenn wir True und False als 1 und 0 behandeln dürfen (was in Pyth unter der Haube liegt), können wir das fallen lassen s, um auf 2 Bytes zu kommen.


quelle
1

SmileBASIC, 25 24 Bytes

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

Brachylog , 6 Bytes

d?∧1|0

Probieren Sie es online!

kurze Erklärung

d? d edupliziert die Eingabe eines Tests, wenn er noch gleich der Eingabe ist ( ? ) entspricht.

∧1 wenn wahr, gebe 1 zurück

|0 Andernfalls wird 0 zurückgegeben

Kroppeb
quelle
1

> <> , 19 17 Bytes

-2 Bytes von Jo King.

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

Probieren Sie es online!

PidgeyUsedGust
quelle
17 Bytes
Jo King
Ich hätte das definitiv fangen sollen, danke!
PidgeyUsedGust
@RushabhMehta Bitte golfen Sie nicht in den Posts anderer Benutzer mit den Golfvorschlägen anderer Benutzer.
Jonathan Frech
1

q 14 Bytes

{x~distinct x}

Technisch gesehen gibt diese Lösung '1b' oder '0b' zurück. Dies ist die Art und Weise, wie ein Boolescher Wert von einem numerischen Typ unterschieden wird, obwohl er alle arithmetischen Funktionen beibehält und im Wesentlichen eine 1 oder 0 ist:

q)1b +35
36

Um 1 oder 0 ohne Booleschen Wert zurückzugeben, haben Sie den folgenden Wert, der die Byteanzahl auf 21 setzt

{$[x~distinct x;1;0]}
Thaufeki
quelle
1
{1&/0N>':x?x}
28.
1

Gelee , 5 6 Bytes

ɠḲQL=3

Probieren Sie es online!

Von 5 auf 6 Bytes, da dies mein erstes Mal ist und ich es jetzt durcheinander gebracht habe (whoops)

ɠḲ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
Kätzchen Hugger
quelle
1
Hallo und willkommen bei PPCG. Funktioniert Ihr Code auch für 3 integersoder funktioniert er nur für drei Ziffern?
Jonathan Frech
@ Jonathan Frech Leider funktioniert es nur für drei 1-stellige Zahlen. Dazu wird die Eingabe nach eindeutigen Zeichen sortiert und anschließend geprüft, ob die Anzahl der eindeutigen Zeichen der Länge der Eingabe entspricht. Vielleicht gibt es eine Möglichkeit, es mit 3 ganzen Zahlen zum Laufen zu bringen, aber ich denke, das ist zumindest für mich ein guter Versuch!
Kitten Hugger
2
Die Herausforderung gibt an, dass Sie 3 Ganzzahlen als Eingabe erhalten. Das scheint Ihre Antwort ungültig zu machen.
Jonathan Frech
@JonathanFrech Jetzt behoben! Habe ich so etwas zum ersten Mal gemacht? Ich bin nicht der Beste darin.
Kitten Hugger