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!


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!


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!


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.



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


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

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.



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

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 .


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
]

2

Japt -N, 3 Bytes

eUâ

Versuch es


Erläuterung

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





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

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

großartig! und danke
mazzy





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)


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

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.


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.


1

SmileBASIC, 25 24 Bytes

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

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



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

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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.