Apakah ketiga bilangan bulat berbeda?

14

Anda akan diberikan 3 bilangan bulat sebagai input. Input mungkin atau mungkin tidak berbeda satu sama lain. Anda harus mengeluarkan 1 jika ketiga input berbeda satu sama lain, dan 0 jika ada input yang diulang lebih dari satu kali.

Ini , jadi buat kode Anda sesingkat mungkin!

subin saju
sumber
1
Selamat datang di PPCG. Tantangan pertama yang bagus. Kami cukup ketat tentang kriteria kemenangan objektif di situs ini. kode-golf tampaknya menjadi pilihan yang jelas di sini, jadi saya akan menambahkannya ke posting Anda. Koreksi saya jika saya salah.
Adám
1
Beberapa test case akan menyenangkan.
Adám
19
Siapa pun yang menolak semua jawaban setidaknya harus menjelaskan mengapa ...
Arnauld
1
@ Adam Saya pikir judul yang lebih akurat adalah Apakah ketiga bilangan bulat berbeda?
Arnauld
5
Pilihan ganda saya adalah palu, tetapi Kemungkinan duplikat " Tentukan apakah semua angka desimal unik " Agak berbeda, tetapi sebagian besar jawaban masih bisa diangkut.
Kevin Cruijssen

Jawaban:

10

Python 3 , 23 21 20 byte

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

Cobalah online!

TFeld
sumber
OP meminta 1 vs 0, jadi mungkin Anda perlu satu byte lagi:lambda*a:len({*a})//3
tsh
@ tsh dengan Python 1 == True, saya pikir ada posting meta tentang hal itu di suatu tempat
Stephen
1
@ tsh - meta yang relevan "jika dukun seperti angka, itu angka" - dengan Python: False * Trueis 0; False + Trueadalah 1; dll ...
Jonathan Allan
Dari meta yang relevan: "ini tidak berlaku untuk tantangan di mana output string yang tepat diperlukan", jadi saya tidak yakin apa yang sebenarnya berlaku di sini.
GB
8

R , 13 byte

Solusi berbeda untuk @ Kirill dengan menggunakan mad()untuk tujuan yang tidak diinginkan!

mad(scan())>0

Cobalah online!

J.Apakah
sumber
1
Input yang baik tidak ditentukan sama sekali, jadi IMO menerima 3 nilai sebagai input berarti kita dapat menerima vektor
digEmAll
2
R hampir bersaing dengan bahasa golf! : D
digEmAll
1
Saya percaya Gauss menemukan madtepat untuk tujuan ini.
ngm
5

R , 24 22 20 byte

all(table(scan())<2)

Cobalah online!

Mengembalikan boolean, tetapi karena orang sudah membahas tentang jawaban Python , ini seharusnya OK.

Terima kasih kepada digEmAll untuk menghemat 2 byte.

Kirill L.
sumber
11 byte - jika Anda diizinkan memiliki angka> 0 sebagai benar. Jika tidak, tambahkan >0untuk TRUE/FALSEoutput dalam 13 bytes.
J.Doe
1
Wow, bahkan tidak tahu tentang fungsi ini. Saya sarankan Anda mempostingnya secara terpisah (edit dan hidupkan kembali jawaban Anda yang dihapus), tetapi saya pikir Anda harus tetap dengan 13 byte - sementara T / F memang bertindak seperti 1/0, 1,48 tidak.
Kirill L.
5

JavaScript, 22 byte

Jika kita dapat menampilkan nilai boolean maka 2 byte terakhir dapat dihapus.

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

Cobalah online

Untuk jumlah byte yang sama, ini bekerja pada array dengan ukuran berapa pun tetapi mengasumsikan input tidak akan pernah mengandung 0dan output adalah boolean.

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

Cobalah online

Shaggy
sumber
Dengan asumsi bahwa kita dapat mengambil input sebagai array dan mengembalikan Boolean:a=>new Set(a).size>2
Arnauld
@Arnauld, ya saya juga punya itu tetapi karena ternyata spec tidak akan mengizinkannya - akan memperbarui jika spec berubah.
Shaggy
Oh tunggu. Saya hanya bisa menempel &1selama 22 byte.
Shaggy
4

Ruby , 16 byte

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

Cobalah online!

GB
sumber
-3 byte denganuniq!
benj2240
Boolean dan Integer adalah tipe berbeda di Ruby.
GB
Ah kamu benar Saya tidak membaca tantangan dengan cukup cermat, dan mengasumsikan output yang benar / falsey sudah cukup.
benj2240
4

Cubix , 55 25 byte

-29 Terima kasih kepada Jo King

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

Cobalah online!

Seharusnya dimungkinkan untuk bermain golf beberapa byte.

Luke
sumber
26 byte
Jo King
Terima kasih banyak. Saya berhasil mencukur 1 byte lagi untuk sampai pada total 25 byte
Luke
Saya pikir Anda mungkin kehilangan tempat @di tempat ke .-9. Jadikan itu melakukan beberapa hal yang funky untuk 1 2 2.
MickyT
3

05AB1E , 2 byte

ÙQ

Cobalah online atau verifikasi beberapa kasus lagi .

Penjelasan:

Ù     # Uniquify the (implicit) input
 Q    # Check if it's still equal to the (implicit) input
Kevin Cruijssen
sumber
Menggunakan aturan kebenaran / kepalsuan standar untuk masalah keputusan , mengingat bahwa itu 1adalah satu-satunya nilai kebenaran di 05AB1E, ¢Pberfungsi juga sebagai alternatif 2-byter.
Tn. Xcoder
1
@ Mr.Xcoder Saya tidak yakin itu benar-benar saat ini valid - pertanyaannya meminta output 1 dan 0 - 4, misalnya, bukan 1atau tidak 0, juga tidak bertindak seperti 1atau 0(suka Truedan Falselakukan dengan Python). Pertanyaannya mungkin harus menanyakan Truthy / Falsey tetapi saat ini tidak.
Jonathan Allan
3

Mathematica, 13 byte

Boole[E!=##]&

Fungsi murni. Mengambil tiga bilangan bulat sebagai input dan mengembalikan 0atau 1sebagai output. Saya tahu bahwa ini agak mirip dengan jawaban David G. Stork , tetapi ia mengeksploitasi SlotSequenceuntuk mengurangi byte (dibandingkan dengan Boole@*Unequal).

LegionMammal978
sumber
3

brainfuck , 91 byte

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

Cobalah online!

Bagaimana itu bekerja

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

Japt -N, 3 byte

eUâ

Cobalah


Penjelasan

deduplikasi input dan etes jika sama dengan aslinya.

Shaggy
sumber
2

J , 4 byte

-:~.

Cobalah online!

Penjelasan:

Apakah argumen sama -:dengan dirinya sendiri setelah menghapus duplikat~.

Galen Ivanov
sumber
2

K (oK) , 4 byte

3=#?

Cobalah online!

Apakah jumlah elemen yang berbeda sama dengan 3?

streetster
sumber
2

Powershell, 27 25 byte

-2 byte terima kasih @AdmBorkBork

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

Skrip uji:

$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

Penjelasan:

    $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
sumber
1
26 byte -+(($args|group).count-eq3)
AdmBorkBork
Bagus! dan terima kasih
mazzy
2

Gangguan Umum, 25 2 byte

/=

Cobalah online!

-23 byte, terima kasih kepada @ceilingcat!

Renzo
sumber
Terima kasih, @ceilingcat, saya telah memperbarui jawabannya!
Renzo
1

APL (Dyalog Unicode) , 3 byte SBCS

Fungsi awalan diam-diam anonim. Mengambil daftar sebagai argumen.

∪≡⊢

Cobalah online!

 apakah set elemen unik dari argumen

 pertandingan

 argumen yang tidak dimodifikasi?

Adm
sumber
1

Attache , 10 byte

`==#Unique

Cobalah online!

Ini adalah garpu dari operator `==dan Unique, setara dengan:

{ _ == Unique[_] }

Alternatif

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

Conor O'Brien
sumber
1

Java 9, 43 27 byte

terima kasih kepada @Olivier Grégoire

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

Upaya sebelumnya:

(a)->a[0]==a[1]||a[0]==a[2]||a[1]==a[2]?0:1
Quintec
sumber
1
Mengapa tidak menghitungnya sebagai 43 byte
hanya ASCII
1
27 byte : (a,b,c)->a!=b&b!=c&a!=c?1:0.
Olivier Grégoire
Juga, kode pertama (100 byte) tidak mengkompilasi dan menggunakan ==yang tidak berlaku Stringtanpa masalah yang Anda temui di sini (setelah perbaikan kompilasi), dan dalam kode kedua, Set.ofmetode akan membuang IllegalArgumentExceptionjika ada duplikat disediakan . Saya tergoda ke -1 untuk tidak menguji sama sekali.
Olivier Grégoire
@olivier Permintaan Maaf-sudah terlambat dan saya mencampur beberapa ide yang berbeda di kepala saya. Sedangkan untuk Set.of, saya hanya bereksperimen dengan Java 9 kinks dan tidak memiliki Java 9 sendiri. Seharusnya saya membaca dokumentasi lebih hati-hati, maaf soal itu. Saya akan mengedit begitu saya mendapatkan di komputer saya.
Quintec
1

T-SQL, 39 byte

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

Input diambil sebagai kolom terpisah a, b, c dari yang sudah ada meja s , per standar IO kami .

Mencoba variasi menggunakan COUNT DISTINCTdari input yang diambil sebagai baris terpisah, tapi itu beberapa byte lebih lama.

BradC
sumber
1

Pyth, 3 byte

s{I

Mengambil input sebagai daftar.
Coba di sini

Penjelasan

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

Jika kita diizinkan untuk memperlakukan True dan False sebagai 1 dan 0 (yang mereka berada di bawah tenda Pyth), kita dapat menjatuhkannya suntuk turun ke 2 byte.


sumber
1

SmileBASIC, 25 24 byte

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

Brachylog , 6 byte

d?∧1|0

Cobalah online!

penjelasan singkat

d? d eduplcates input tes jika masih sama dengan input ( ? )

∧1 jika benar mengembalikan 1

|0 lain kembali 0

Kroppeb
sumber
1

> <> , 19 17 byte

-2 byte oleh Jo King.

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

Cobalah online!

PidgeyDigunakanGust
sumber
17 bytes
Jo King
Aku seharusnya menangkapnya, terima kasih!
PidgeyDigunakanGust
@RushabhMehta Tolong jangan golf posting pengguna lain menggunakan saran golf pengguna lain.
Jonathan Frech
1

q 14 byte

{x~distinct x}

Secara teknis solusi ini akan mengembalikan '1b' atau '0b', yang merupakan cara nilai boolean dibedakan dari tipe numerik, meskipun ia mempertahankan semua fungsi aritmatika, dan pada dasarnya adalah 1 atau 0:

q)1b +35
36

Untuk mengembalikan 1 atau 0 non-boolean Anda memiliki yang di bawah ini, yang mengambil hitungan byte ke 21

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

Jeli , 5 6 byte

ɠḲQL=3

Cobalah online!

Dari 5 hingga 6 byte karena ini adalah pertama kalinya saya dan saya mengacaukannya (whoops) memperbaikinya sekarang

ɠḲ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
sumber
1
Halo dan selamat datang di PPCG. Apakah kode Anda juga berfungsi untuk 3 integers, atau hanya berfungsi untuk tiga digit?
Jonathan Frech
@Jonathan Frech Sedihnya, ini hanya berfungsi untuk tiga angka 1 Digit, ia melakukan ini dengan mengurutkan input berdasarkan karakter unik, kemudian menguji apakah jumlah karakter unik sama panjangnya dengan input. Mungkin ada cara untuk membuatnya bekerja dengan 3 bilangan bulat, tapi saya pikir ini adalah upaya yang baik untuk saya setidaknya!
Kitten Hugger
2
Tantangan menentukan Anda akan diberikan 3 bilangan bulat sebagai input. yang tampaknya membuat jawaban Anda tidak valid.
Jonathan Frech
@JonathanFrech Perbaiki sekarang! Apakah pertama kali saya melakukan hal semacam ini, saya bukan yang terbaik dalam hal ini.
Kitten Hugger