Mengingat daftar yang terbatas tak kosong dari bilangan bulat, output truthy nilai jika ada tepat dua entri yang sama dan semua entri lainnya adalah berbeda, dan falsey nilai sebaliknya.
Contohnya
truthy:
[1,1]
[1,2,1]
[1,6,3,4,4,7,9]
falsey:
[0]
[1,1,1]
[1,1,1,2]
[1,1,2,2]
[2,1,2,1,2]
[1,2,3,4,5]
Jawaban:
Python 3,
3028 byteCobalah online!
{*m}
melemparkan daftar keset
objek, daftar item yang tidak terurut tanpa duplikat. Melakukan hal ini akan selalu mengurangi panjang daftar dengan jumlah duplikat di dalamnya. Dengan menghitung berapa panjang telah berubah, kita dapat dengan mudah mengetahui apakah daftar memiliki duplikat tunggal dan mengembalikan hasil tes.-2 bytes terima kasih kepada ovs.
sumber
{*m}
pintas, bukanset
golf dengan baik!lambda m:~-len(m[len({*m}):])
Sekam , 4 byte
Cobalah online!
Penjelasan
sumber
MATL ,
7, 6 byteCobalah online!
Satu byte disimpan berkat @Guiseppe!
Penjelasan:
sumber
s
issum
dansum
menjumlahkan sepanjang dimensi non-singleton (kolom) pertama, dan matriksnya simetris, bukankah ini bisas
terjadiXs
?Haskell , 34 byte
Cobalah online! Berdasarkan jawaban H.PWiz .
sumber
Jelly ,
85 byteCobalah online!
Penjelasan
Jika nilai-nilai output dapat berupa nilai-nilai yang konsisten, maka
QL_L
berfungsi, yang menampilkan-1
kebenaran dan angka non-positif lainnya untuk falsey (terima kasih @JonathanAllan)sumber
QL_L
akan menghasilkan-1
untuk kebenaran dan beberapa angka kurang dari-1
atau0
untuk falsey (misalnya[1,6,3,4,4,7,9,9,9]
akan kembali-3
, sementara[1,6,3,4,7,9]
akan kembali0
).-2
.JavaScript (ES6), 30 byte
Cobalah online
sumber
Pushy , 8 byte
Implementasi sederhana untuk memeriksa apakah
len(set(list)) == len(list)-1
:Penjelasan:
Ini berfungsi karena panjangnya hanya akan berkurang 1 jika hanya ada 1 integer yang tidak berbeda dalam daftar awal.
Cobalah online!
sumber
Oktaf , 25 byte
Ini bukan menggunakan
group
atauunique
mendekati sebanyak mungkin jawaban lain, melainkan "produk cartesian" dari semua perbandingan yang mungkin.Penjelasan
Cobalah online!
Dan karena tidak ada program yang akan lengkap tanpa konvolusi (terima kasih @LuisMendo untuk memperbaiki kesalahan):
Oktaf , 40 byte
Cobalah online!
sumber
J ,
76 byte=
memeriksa setiap elemen untuk kesetaraan dengan setiap elemen yang unik, menciptakan sebuah matriks dengan m baris untuk m elemen yang unik.0,
tambahkan baris kosong di atas.=&#
apakah jumlah baris sama dengan panjang input?Cobalah online!
sumber
.~
dengan=
Retina ,
151211 byteTerima kasih kepada Neil untuk menghemat 1 byte.
Cobalah online!
Input dipisahkan oleh umpan baris. (Test suite menggunakan pemisahan koma untuk kenyamanan.)
Penjelasan
Potong garis-garis dalam input, yang menghilangkan bilangan bulat apa pun yang telah muncul sebelumnya (tetapi meninggalkan umpan baris sekitarnya).
Hitung jumlah baris kosong, yang sama dengan jumlah duplikat yang kami hapus, tetapi hanya pertimbangkan dua kecocokan pertama. Jadi hasilnya hanya akan
0
(tidak ada duplikat),1
(satu duplikat),2
(dua atau lebih duplikat).Pastikan satu duplikat telah dihapus.
sumber
A`.
untuk menghitung baris baru, karena itu menjatuhkan yang terakhir.)A`.
, tetapi masalahnya adalah Anda tidak dapat membedakan satu baris kosong dari tidak memiliki garis sama sekali. Mungkin saya harus mempertimbangkan terminatingA
danG
output dengan linefeed jika ada baris. Meskipun itu mungkin harus menjadi pilihan karena saya bisa membayangkan bahwa linefeed menjengkelkan dalam skenario lain.^$¶
.A
identik terlepas dari apakah itu mempertahankan satu baris kosong atau membuang semua baris.05AB1E , 4 byte
Cobalah online!
Keluaran
1
sebagai kebenaran, bilangan bulat non-negatif lainnya falsy. Di 05AB1E,1
adalah satu-satunya nomor yang benar (terima kasih @Emigna untuk wawasannya!).Penjelasan
sumber
Ruby, 32 byte
sumber
Array#size
?->s{s.uniq.size==s.size-1}
C # (.NET Core) , 35 + 18 byte
+18 untuk digunakan
System.Linq
.Cobalah online!
Alternatif 67 byte tanpa Linq:
Cobalah online!
sumber
Excel, 42 byte
Versi bahasa Denmark
Asumsikan setiap bilangan bulat dari daftar di sel terpisah di kolom
A
.Jika kami diizinkan untuk nilai falsey yang tidak konsisten , kami dapat menyimpan 3 byte:
Versi bahasa Inggris (44 byte)
sumber
R ,
3231 byte-1 byte terima kasih kepada @JarkoDubbeldam
Cobalah online!
Membaca dari stdin, menulis ke stdout.
duplicated
berulang melalui daftar, mengganti nilai-nilail
denganTRUE
jika nilai itu terjadi sebelumnya dalam daftar, danFALSE
sebaliknya. Jika ada pasangan soulmates yang unik, harus ada tepat satuTRUE
nilai, jadi jumlahnya harus1
.sumber
scan()
pendekatan itu.PowerShell ,
4037 byteCobalah online!
The
Sort-Object
perintah (aliassort
) dengan-u
bendera nique menarik keluar hanya komponen unik input. Misalnya, untuk input@(1,3,3,2)
, ini akan menghasilkan@(1,2,3)
.Jadi, kita hanya perlu memastikan bahwa
.count
objek ini (yaitu, berapa banyak elemen yang dimilikinya)-eq
sesuai dengan.count
array input kami-1
(yaitu, kami memiliki satu entri duplikat).Disimpan 3 byte berkat Sinusoid.
Memperbaiki bug berkat TessellatingHeckler.
sumber
1,2,1
-get-unique
hanya bekerja pada input yang diurutkan sebelumnya. Bagaimana dengan($args|sort -u).count-eq$args.count-1
yang juga 37 tetapi apakah berfungsi untuk semua kasus uji, jika Anda menyebutnya sukaf 1 2 1
bukanf 1,2,1
?Perl 5 , 36 +1 (
-a
) = 37 byteCobalah online!
sumber
@k{@F}++;say@F==1+keys%k
Haskell , 37 byte
Cobalah online!
sumber
Oktaf / MATLAB (dengan paket Statistik / kotak alat), 21 byte
Fungsi anonim. Input adalah vektor kolom. Output adalah
true
(ditampilkan sebagai1
) ataufalse
(ditampilkan sebagai0
).Cobalah online!
Penjelasan
pdist(x)
menghitung vektor jarak Euclidean antara semua pasangan baris darix
. Ini menganggap setiap pasangan hanya sekali (urutan dua baris tidak masalah), dan tidak mempertimbangkan pasangan yang dibentuk oleh baris yang sama dua kali.Dalam kasus kami
x
adalah vektor kolom, jadi jarak Euclidean antara dua baris hanyalah perbedaan mutlak antara dua angka.~
adalah negasi logis (Boolean),nnz
adalah jumlah nonzeros, dan==1
dibandingkan dengan1
. Jadi hasilnya adalahtrue
jika dan hanya jika hanya ada satu pasangan yang memberikan jarak nol.sumber
Jq 1.5 ,
5325 byteTerinspirasi oleh jawaban Riley dan jauh lebih pendek daripada solusi asli saya.
Cobalah online!
sumber
Julia,
3926 bytePenjelasan
Kode menghasilkan tabel 2-dimensi boolean, yang kemudian dikumpulkan menggunakan fungsi penjumlahan, menghitung jumlah pasangan elemen-sama dalam kuadrat kartesian A. Kemudian ini dibandingkan dengan panjang string ditambah dua, dan kuantitasnya sama hanya ketika hanya ada satu karakter berulang.
Kode ini mendefinisikan kembali operator NOT.
sumber
!a=sum(a.==a')==endof(a)+2
menghemat beberapa byte. Cobalah online!Pyth , 6 byte
Verifikasi semua kasus uji.
l{
- Mendapat jumlah elemen unik.tlQ
- Mendapat panjang dari daftar input, dikurangi.q
- Memeriksa kesetaraan.7 byte
Verifikasi semua kasus uji
sumber
Oktaf ,
2326 byteCobalah online!
Bagian
x==x'
itu terinspirasi oleh jawaban flawr . Ini lebih panjang dari jawaban Luis, tetapi tidak menggunakan kotak alat apa pun.Penjelasan:
Ini adalah fungsi anonim yang mengambil vektor
x
sebagai input, dan membandingkannya dengan dirinya sendiri. Ini akan memberikan matriks di mana semua elemen diagonal berada1
, dan setiap elemen diagonal off menandakan bahwa ada elemen duplikat.Jumlah di sepanjang kolom yang diberikan menunjukkan berapa banyak duplikat dari jumlah itu. Kami ingin dua angka memiliki duplikat, jadi kami dua nilai sama dengan dua, dan sisanya tidak sama dengan dua.
Jika kita mengambil produk dari matriks ini, kita akan mendapatkan
4
jika hanya ada dua elemen yang sama (2*2*1*1*1*1*...
), dan sesuatu selain4
jika tidak ada duplikat, atau lebih dari dua.sumber
PHP, 46 byte
Menghitung jumlah entri
$argv
dan membandingkannya dengan jumlah entri unik. Jika yang pertama lebih tinggi dari yang terakhir dengan 1 maka benar, selain itu falsey.Cobalah di eval.in!
sumber
$argv
adalah daftar parameter baris perintah. Jadi: tidak, dia tidak bisa menggunakan begitu saja$a
.05AB1E ,
65 byteCobalah online!
1
menjadi satu-satunya nilai kebenaran di 05AB1E, kita bisa berhenti di sini. (Terima kasih @ Emigna telah menunjukkan hal itu.)Untuk mendapatkan hanya dua nilai berbeda, kita dapat menambahkan:
sumber
Θ
, seperti1
satu-satunya nilai jujur di 05AB1E.¢
tidak akan berfungsi. Itu akan dihitung[19,4,4,9]
sebagai salah dan[19,9]
benar karena ia menemukan0
di10
.{¥_O
harus baik-baik saja juga.APL (Dyalog Unicode) , 7 byte SBCS
Cobalah online!
Penjelasan:
sumber
Jelly , 10 byte
Cobalah online!
pendekatan yang lebih panjang tetapi berbeda
sumber
Japt, 7 byte
Cobalah
Penjelasan
Hapus duplikat (
â
), dapatkan panjang (Ê
) dan bandingkan kesetaraan (¶
) dengan panjang (Ê
) dari input (U
) minus 1 (É
).sumber
âÊɶ
karakter multibyte?Haskell , 37 byte
Cobalah online!
sumber
05AB1E , 5 byte
Cobalah online!
Di 05AB1E 1 adalah satu-satunya nilai kebenaran, jadi untuk hasil yang benar harus ada persis 1 elemen rangkap yang dihapus oleh yang unik.
sumber