Anda akan diberikan dua Array / Daftar / Vektor bilangan bulat non-negatif A dan B . Tugas Anda adalah untuk output tertinggi bilangan bulat N yang muncul di kedua A dan B , dan juga unik di kedua A dan B .
Anda dapat berasumsi bahwa setidaknya ada satu nomor seperti itu.
Setiap Masukan wajar dan Output metode / format yang diperbolehkan.
Celah ini dilarang.
Ini adalah kode-golf , jadi kode terpendek di setiap bahasa pemrograman menang!
Kasus uji:
A, B -> Output [6], [1, 6] -> 6 [1, 2, 3, 4], [4, 5, 6, 7] -> 4 [0, 73, 38, 29], [38, 29, 73, 0] -> 73 [1, 3, 4, 6, 6, 9], [8, 7, 6, 3, 4, 3] -> 4 [2, 2, 2, 6, 3, 5, 8, 2], [8, 7, 5, 8] -> 5 [12, 19, 18, 289, 19, 17], [12, 19, 18, 17, 17, 289] -> 289 [17, 29, 39, 29, 29, 39, 18], [19, 19, 18, 20, 17, 18] -> 17 [17, 29, 39, 29, 29, 39, 18, 18], [19, 19, 18, 20, 17, 18] -> 17
sumber
[email protected]/d
) dan mengambil input sebagai daftar dua daftar.Python 3 ,
615654 byteDisimpan 7 byte berkat @ Mr.Xcoder , @ pizzapants184 dan @ovs
Cobalah online!
sumber
05AB1E ,
98 byte-1 byte terima kasih Erik the Outgolfer
Cobalah online!
sumber
Sekam , 7 byte
Mengambil input sebagai daftar dua daftar, juga berfungsi untuk sejumlah daftar (mengembalikan angka tertinggi yang terjadi tepat satu kali dalam masing-masing, jika memungkinkan). Cobalah online!
Penjelasan
Ini adalah jawaban Sekam pertama untuk (ab) menggunakan fungsi "maksimum oleh" yang baru
►
.sumber
Bash + coreutils, 60 byte
Cobalah secara Online
Bash, 89 byte
TIO
sumber
sort -rn
dengansed q
di akhir, bukantail -1
untuk mencukur 1 byte Great ditemukan dengangrep -wf
btw. +1Jelly , 11 byte
Cobalah online!
sumber
`
!J, 23 byte
(-.-.@~:#])
menghapus dari daftar elemen yang berulang&
lakukan ini untuk kedua argumen([-.-.)
Kami ingin A intersect B. Ini adalah ungkapan yang setara: "A minus (A minus B)">./
Ambil maksCobalah online!
sumber
e.~#]
. Golf ini terbukti sulit ... Saya mencoba menggunakan/.
-Kunci tidak berhasil (((1=#)/.~#~.)
untuk bagian pertama yang 2 byte lebih lama menurut hitungan saya)PowerShell , 94 byte
Cobalah online!
Mengambil input
$a
dan$b
sebagai array. Buat afilter
yanggroup
menggabungkan elemen-elemen array input dan menarik hanya elemen-elemen dengancount
-eq
ual ke1
(yaitu, hanya elemen-elemen yang unik dalam array input).Baris berikutnya kemudian membangun algoritma. Pertama
sort
$a
, kita tarik-in
benda-benda unik itu$b
. Itu sendiri unik-ified, yang terbesar[-1]
dipilih, dan kami mengambilnya.Name
. Yang tersisa pada pipa dan output tersirat.sumber
Javascript (ES6),
102867571 byteTerima kasih @justinMariner untuk mendapatkan dari 102 hingga 86
Terima kasih @tsh untuk mendapatkan dari 86 hingga 75
Terima kasih @Arnauld dari 75 hingga 71
Cobalah online!
sumber
e
hanya muncul sekalia
danb
.lastIndexOf
seperti itu, itu cukup pintar. Anda bisa mendapatkan ini hingga 86 byte: Coba online! . Lihat tips JS untuk lebih lanjut.(g=x=>x.filter(y=>y==e).length==1)
lebih pendek.Haskell ,
5753 byteCobalah online!
UPD: Terima kasih @Laikoni
sumber
f
sebagai operator infiks dan menulis[1|...]==[1]
alih-alihsum[1|...]==1
menyimpan beberapa byte.!
denganand
menyimpan dua byte lagi: Cobalah online!Bahasa Wolfram (Mathematica) , 40 byte
Cobalah online!
Bagaimana itu bekerja
Tally@#
memberikan daftar elemen unik dari input pertama, bersama-sama dengan jumlah mereka: misalnya,Tally[{2,2,2,6,3,5,8,2}]
hasil{{2,4},{6,1},{3,1},{5,1},{8,1}}
.Tally@#2
melakukan hal yang sama untuk daftar kedua, dan⋂
menemukan pasangan hadir di keduanya. Lalu kami memilih (denganCases
) pasangan yang berakhir dengan1
, mengambil elemen pertama dari setiap hasil, yang memberi kami daftar semua kembar yang unik. Akhirnya,Max
mengembalikan kembar unik terbesar.sumber
Röda , 48 byte
Cobalah online!
Terinspirasi oleh jawaban jq170727 .
Penjelasan:
sumber
F # (.NET Core) ,
117115114111108 byte115114 byteSolusi lain dengan
countBy
waktu ini:Cobalah online!
117111 byteCobalah online!
100% F #! Setiap bantuan dipersilahkan!
6 byte menang berkat notasi awalan!
108 byte
@
adalah fungsi concat! Terima kasih @ Ayb4btu untuk algoritme ini.Cobalah online!
sumber
C # (.NET Core) ,
8584 byteCobalah online!
Solusi naif dengan LINQ (
using System;using System.Linq;
+ 31chars jadi 116 byte dengan header)84! Saya lupa kari!
sumber
Pip ,
1716 byteIni adalah fungsi yang mengambil dua daftar sebagai argumen. Cobalah online!
Penjelasan
sumber
APL (Dyalog) , 18 karakter = 23 byte *
Badan program penuh. Meminta daftar daftar dari STDIN. Bekerja dengan sejumlah daftar. Output ke STDOUT.
Cobalah online!
⎕
meminta input yang dievaluasi dari STDIN{
...}⌸¨
untuk setiap daftar, panggil fungsi berikut untuk setiap elemen unik dalam daftar itu, menggunakan elemen unik sebagai argumen kiri (⍺
) dan daftar indeks kemunculannya sebagai argumen kanan (⍵
):≢⍵
penghitungan indeks (yaitu jumlah kejadian)1=
sama dengan 1⍺⍴⍨
menggunakannya untuk membentuk kembali elemen spesifik (mis. berikan daftar kosong jika tidak unik)Sekarang kami memiliki dua daftar elemen unik untuk setiap daftar input (meskipun setiap elemen adalah daftar, dan ada daftar kosong sebagai residu dari elemen non-unik).
∩/
persimpangan (reduksi)∊
ϵ daftar (ratakan)⌈/
maks (reduksi)* dalam Classic, menghitung
⌸
sebagai⎕U2338
.sumber
MATL , 13 byte
Cobalah online! Atau Verifikasi semua kasus uji .
Penjelasan
sumber
PHP, 98 byte
Berikan array sebagai parameter GET
a
danb
.sumber
Java 8, 133 byte
Penjelasan:
Coba di sini.
sumber
R , 73 byte
Cobalah online!
Menghitung
A
berpotonganB
, maka maksimum perbedaan antara itu dan elemen yang diduplikasi dariA
danB
.sumber
JavaScript ES5,
122121114 byteSaya baru di sini, jadi saya tidak benar-benar tahu apakah saya dapat menghapus definisi fungsi dan hanya memasukkan isinya (yang akan menyelamatkan saya 17 byte)
Ini contoh kerjanya:
122121114122 hingga 121 byte: Membungkus inisialisasi dalam untuk
121 hingga 114 byte:
b
harus berupa stringsumber
b
dan menyimpanb=''+b,
?f=(a,b)=>{for(b=''+b,i=a.sort().length;--i+1;)if(a[i]!=a[i+1]&&a[i]!=a[i-1]&&!(b.split(a[i]).length-2))return a[i]}
.SQLite , 118 byte
Cobalah online!
Pertama kali dalam SQL, bantuan apa pun diterima!
sumber
Jq 1,5 , 76 byte
Diperluas
Cobalah online!
Berikut adalah solusi lain yang memiliki panjang yang sama:
Diperluas
Cobalah online!
sumber
APL, 47 byte
Menyatakan fungsi anonim yang mengambil dua vektor, menghilangkan elemen duplikat, lalu menemukan elemen terbesar di persimpangan hasil.
A←⍺
danB←⍵
menyimpan argumen yang diteruskan ke fungsi diA
danB
.a=b
mengembalikan vektor dengan 1 di setiap indeks yanga
sama denganb
. Jikaa
skalar (yaitu kuantitas tunggal dan bukan vektor) ini mengembalikan vektor dengan 1 di mana pun elemen dalamb
adalaha
dan 0 ketika tidak. Sebagai contoh:{+/⍵=A}
: fungsi anonim bersarang; menemukan kemunculan argumen dalam vektorA
dan menambahkannya yaitu menemukan jumlah kemunculan argumen diA
1={+/⍵=A}¨A
: terapkan fungsi anonim bersarang untuk setiap elemen dalam A dan temukan elemen yang sama dengan 1 yaitu elemen unik((1={+/⍵=A}¨A)/A←⍺)
: setelah menemukan lokasi elemen unik, pilih saja elemen-elemen ini dalam vektor asli (/
pilih dari elemen argumen kanan yang lokasinya sesuai dengan 1 pada argumen kiri)R←((1={+/⍵=A}¨A)/A←⍺)∩(1={+/⍵=B}¨B)/B←⍵
: ulangi proses untuk argumen kedua; sekarang kita hanya memiliki elemen unik, temukan persimpangan yaitu elemen umum dan simpan dalam vektorR
R[⍒R]
: mengakses elemenR
dalam urutan menurun1↑R[⍒R]
: ambil elemen pertamaR
saat diurutkan dalam urutan menurunKasus cobaan:
sumber
J , 30 byte
Bagaimana itu bekerja:
Saya mulai dengan pengujian di mana kedua daftar tumpang tindih oleh
=/
(memasukkan uji kesetaraan antara semua anggota daftar:Lebih dari satu 1 di kolom yang sama berarti bahwa angka tersebut tidak unik untuk argumen kiri (6 dalam kasus ini); di baris - untuk argumen yang benar (3)
Lalu saya meringkas semua baris dan semua kolom untuk menemukan di mana duplikatnya:
Saya menemukan produk kartesius dari daftar di atas dan mengatur anggota lebih besar dari 1 menjadi 0.
Saya menutupi matriks kesetaraan c dengan m untuk menemukan elemen unik yang umum untuk kedua daftar dan mengalikan argumen kiri dengan ini.
Lalu saya meratakan daftar dan menemukan elemen maks:
Cobalah online!
sumber
C # (.NET Core) ,
66 + 31 = 9765 + 31 = 96 byteCobalah online!
+31 byte untuk
using System;using System.Linq;
Saya mengambil inspirasi dari jawaban @ aloisdg. Namun, alih-alih mencari nilai unik di kedua array, saya membalikkan urutan operasi sehingga yang
intersect
pertama, dan kemudian menemukan nilai maksimum item yang terjadi dua kali ketika array digabungkan dan berada di berpotongan. Saya bisa menggunakan<3
sebagaiCount
akan setidaknya 2 untuk nilai apapun, karena akan berada di kedua array.Ucapan Terima Kasih
-1 byte terima kasih kepada @aloisdg dan sarannya untuk menggunakan
Func
currying.sumber
Oktaf ,
5756 byteFungsi anonim yang mengambil input sel array dari dua array numerik.
Cobalah online!
Penjelasan
Untuk setiap (
cellfun(@(x)...)
) dari dua array input, ini membuat matriks perbandingan kesetaraan berpasangan antara entri (x.'==x
); menyimpan (x(...)
) hanya entri yang jumlah kolomnya1
(sum(...)==1
); dan mengemas hasilnya dalam sel ({...}
). Perpotongan (intersect
) dari dua hasil ({:}
) dihitung, dan maksimum (max(...)
) diambil.sumber
Bahasa Wolfram (Mathematica) , 49 byte
Cobalah online!
sumber