Tulis program yang menemukan elemen non-unik dari array bilangan bulat yang ditandatangani. Array yang dihasilkan bisa dalam urutan apa pun.
Jawaban Anda mungkin berupa potongan yang mengasumsikan input disimpan dalam variabel ( d
, katakanlah) dan mengevaluasi hasil yang benar.
Uji Kasus
Setiap test case adalah satu baris dalam format input => output
. Perhatikan bahwa permutasi lain dari output juga valid.
[] => []
[-1, 0, 1] => []
[1, 1] => [1]
[3, 0, 0, 1, 1, 0, 5, 3] => [3, 0, 1]
[-34, 0, 1, -34, 4, 8, 4] => [-34, 4]
Urutan elemen tidak masalah.
Ini kode golf, jadi jawaban tersingkat (dalam byte) menang.
code-golf
array-manipulation
counting
garg10mungkin
sumber
sumber
[-1, 0, 1]
, bisa kita masukan (ganti \ n dengan baris baru):"-1\n0\n1"
?Jawaban:
K5 , 5 byte
Dengan asumsi input sudah dalam variabel yang disebut
d
,Ambil elemen berbeda (
?
) dari d kecuali (d^
) elemen berbeda dari d (?d
). Simetris dengan baik, bukan? Ini berfungsi karena operator "kecuali" hanya menghapus kemunculan pertama argumen kanan dari argumen kiri.Lebih umum,
Beraksi:
Edit:
Jika kami ingin mempertahankan urutan kemunculan elemen non-unik pertama, kami dapat membalikkan daftar sumber sebelum dan setelah kami menghapus elemen unik melalui kecuali dengan biaya 4 byte tambahan:
sumber
CJam, 10
Dengan asumsi array sudah dalam variabel D (berdasarkan komentar ini ):
Cobalah online
Penjelasan:
Catatan: tambahkan a
p
jika Anda ingin mencetak cantik, jika tidak, array yang dihasilkan hanya dicetak tanpa pembatas secara default. Itu dapat diterima karena pertanyaan menentukan snippet hanya perlu "mengevaluasi hasil yang benar".Versi input / output standar, 13:
Cobalah online
Penjelasan:
sumber
q~$e`{((<~}%p
Haskell - 32
Cukup singkat, bahkan dengan impor.
a \\ b
menghapus kemunculan pertama setiap elemenb
daria
, dannub
membuat semua elemen daftar menjadi unik.sumber
Pyth, 7 byte
Cobalah online.
Bagaimana itu bekerja
Pyth secara otomatis menyimpan input yang dievaluasi
Q
dan mencetak semua nilai kembali yang tidak digunakan.sumber
SQL,
4442 byteSaya harap tidak apa-apa untuk menganggap bilangan bulat disimpan dalam tabel D? Ini akan bekerja di SQLServer, PostgreSQL dan mungkin lainnya. Berkat @manatwork dari 2 byte.
sumber
select*from d group by 1having count(*)>1
. (Pengurai MySQL dan SQLite juga akan menangani bagian yang tidak terpisahkanselect*from
, tetapi mereka tidak mengerti1having
.)select*from
. Tidak suka1having
meskipun .. akan meninggalkan itu sebagaiI having
Mathematica,
2926 byteDengan asumsi input disimpan dalam
d
:Jika tidak, itu 29 byte sebagai fungsi yang tidak disebutkan namanya:
Di sini,
d⋃d
(atau#⋃#
) adalah trik bermain golf untuk menghapus duplikat - dengan membawa set union dengan sendirinya, Mathematica menafsirkan daftar sebagai set, menghapus duplikat secara otomatis, sedangkan union yang sebenarnya tidak melakukan apa-apa.Setelah itu, kedua metode cukup memfilter elemen-elemen yang muncul dalam daftar asli setidaknya dua kali.
sumber
JavaScript (ES6), 37 byte
Jalankan ini di konsol JavaScript:
sumber
console.log
,alert
, dll) yang akan dianggap lengkap. Jika sebuah tantangan mengatakan "tulis sebuah program atau fungsi", maka fungsi kembali juga sudah cukup. Selain itu, solusi yang sangat efisien!Matlab / Oktaf, 40
Saya mengasumsikan nilai input nyata (tidak kompleks). Input dalam variabel
d
.Cobalah online di Octave.
sumber
d = [3, 0, 0, 1, 1, 0, 5, 3]
. Ada dua0
s.d(sum(triu(bsxfun(@eq,d,d')))==2)
. Atau dalam Octave:d(sum(triu(d==d'))==2)
Python 3.5, 30
Menggunakan set Python 3.5 untuk membongkar. The
~-
mengurangi 1, yang membutuhkan hitungan 1-0 yang falsy.Ini memberikan daftar. Jika memberi satu set tidak apa-apa, maka kami menggunakan pemahaman set, menyimpan 1 karakter dan tidak perlu versi 3.5:
sumber
SyntaxError: invalid syntax
untuk Python 3 apakah hanya valid untuk 3,5? Kapan python mulai menjadi esoteris.PowerShell,
3129 BytesAsumsikan bahwa
$d
sudah diisi (seperti yang diberikan) - misalnya$d=@(-34,0,1,-34,4,8,4)
,.Pipes array ke
Group-Object
cmdlet, yang mengelompokkan item-suka bersama dan meludahkan objek yang pada dasarnya adalah array array. Kami menyalurkannya keWhere-Object
(?
operator) yang memilikiCount
lebih dari satu (yaitu, ada duplikat), dan mengeluarkan.Name
item tersebut. Memiliki bonus tambahan untuk menjaga pemesanan awal juga.Sunting - menyimpan dua byte berkat Danko Durbić
sumber
$_.Count-gt1
dengan$_.Count-1
yang benar untuk yangCount
lebih dari satu.APL (Dyalog Unicode) ,
139 byte SBCSFungsi awalan diam-diam anonim.
Cobalah online!
(
...)⌸
untuk setiap elemen unik (argumen kiri) dan indeks tempat terjadinya (argumen kanan), terapkan fungsi tacit berikut:⊣¨
salah satu dari kiri (elemen unik) untuk masing-masing di sebelah kanan (indeks)1↓
jatuhkan satu⊂
menyertakan (mencegah padding dengan nol untuk membuat matriks tidak kasar)∊
ϵ daftar (ratakan)sumber
Julia,
3029 byted.==d'
menciptakan matriks simetris dengan nilai padai,j
true ifd[i]==d[j]
dan false sebaliknya.sum
berbaur dalam satu dimensi dan kemudian mengurangi 1 akan menghasilkan nol jika hanya ada satu elemen dan bukan nol jika ada lebih dari satu.find
akan mendapatkan indeks dari elemen-elemen non-nol, yang kemudian digunakan untuk mengindeks arrayd
itu sendiri.∪
(Union) bertindak sepertiunique
ketika digunakan dengan cara ini, menghapus pengulangan.Solusi lama:
Sederhana - untuk setiap entri, ia memeriksa apakah ada lebih dari satu di dalam array. Yang ada lebih dari satu dikembalikan oleh "filter", dan kemudian
∪
(gabungan) bertindak sepertiunique
ketika digunakan dengan cara ini, menghapus pengulangan.Catatan: awalnya menjadikannya sebagai fungsi, tetapi pertanyaan memungkinkan array disimpan dalam variabel, yang saya pilih
d
seperti disarankan dalam pertanyaan.sumber
Python 2.7,
3642sunting : dikelilingi ekspresi dengan daftar (..) untuk memenuhi format yang diperlukan dalam pertanyaan
sumber
Oktaf, 22 byte
Berdasarkan jawaban Luis Mendo .
sumber
R,
3124 byteBerkat flodel untuk 7 byte.
Dengan asumsi input sudah di
d
.kode:
sunting: sekarang ini menghasilkan dengan benar jika ada lebih dari 2 duplikat seperti yang ditunjukkan oleh aditsu .
sumber
which
karena[
juga menerima argumen yang logis.Python 3 -
3330 byte{_ for _ in d if d.count(_)>1}
Ganti output,
d
sebagai input.sumber
Mathematica,
3129sumber
Pyth, 7 byte
Penjelasan:
Filter menghapus semua elemen yang muncul tepat sekali dari set elemen.
sumber
LINQ,
6254 byteAgak baru di sini, tapi tidak ada yang terjadi.
sumber
K (oK) , 7 byte
Larutan:
Cobalah online!
Penjelasan:
sumber
Shell + GNU coreutils, 12
Output tes:
sumber
Mathematica, 23 byte
Dengan input disimpan di
d
:Sebagai fungsi, 24 byte:
misalnya dengan
mengembalikan ini:
(Elemen pertama dari setiap sublist adalah elemen, elemen kedua adalah frekuensi kemunculannya). Menerapkan ke daftar ini
Pick[#,#2>1]&@@@
mengubahnya menjadiDan di mana argumen kedua
Pick
mengevaluasi keTrue
argumen pertama dikembalikan.sumber
K (bukan K5), 10 byte
Asumsikan input dalam
x
. Saya pikir akan menyenangkan untuk melakukan jawaban non-K5!sumber
Perl 6, 16 byte
Anggaplah daftar itu tersimpan di
$_
Anda dapat menggunakan salah satu cuplikan berikut.(yang secara khusus diizinkan)
Jika Anda tidak peduli bahwa Anda mendapatkan Tas Anda bisa pergi
keys
.Tak satu pun dari ini memiliki batasan hanya bekerja pada bilangan bulat yang ditandatangani, atau bahkan hanya angka dalam hal ini.
sumber
Ruby,
3028 byteDalam Shell Ruby Interaktif :
Disimpan 2 byte berkat Kirill L.
sumber
d.select{|x|d.count(x>1)}|[]
JavaScript,
3528 byteCobalah secara Online!
Setelah memposting ini, saya menyadari bahwa itu sangat mirip dengan solusi w0lf .
sumber
Common Lisp, 57 byte
sumber
Oktaf, 33 byte
Ini dia ideone . Saya telah membungkus snippet dalam suatu fungsi sehingga saya bisa menyebutnya menggunakan semua input sampel.
sumber
Java 8, 80 Bytes
Dengan asumsi x berisi daftar input angka.
sumber
PHP, 35
37byteCukup lurus ke depan:
Sebagai catatan: Saya tidak menambahkan
;
di akhir baris, karena pertanyaan menyatakan:Jadi cuplikan ini dapat digunakan seperti ini dan mengevaluasi hasil yang benar:
Catatan lain
Kode di atas berfungsi untuk semua kasus uji yang disediakan dalam tantangan. Dalam semua karakter non-unik paling banyak duplikat. Jika sebuah elemen dapat muncul lebih dari dua kali, elemen lainnya
array_unique()
diperlukan, yang menambah panjangnya menjadi 49 byte :Suntingan
array_diff_assoc
denganarray_diff_key
. Terima kasih untuk Jörg Hülsermann .sumber
array_diff_key
sebaliknyaarray_diff_assoc