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!


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!


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!


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.



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


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

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.



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

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


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
]

2

Japt -N, 3 byte

eUâ

Cobalah


Penjelasan

deduplikasi input dan etes jika sama dengan aslinya.





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

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!


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



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)


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

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.


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.



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



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

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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.