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

Uâ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.