Tantangan
Diberikan daftar 2-tupel yang sewenang-wenang, dan satu elemen di salah satu tupel itu, mengeluarkan "mitranya", yaitu diberi a
dan [(i,j),...,(a,b),...,(l,m)]
, keluaran b
. Anda dapat menganggap semua tupel adalah unik, dan bahwa semua elemen dalam tupel adalah string. Lebih jauh anggap Anda tidak memiliki keduanya (x,y)
dan (y,x)
.
Uji kasus
Input Output
[("(", ")"), ("{", "}"), ("[", "]")], "}" "{"
[("I'm", "So"), ("Meta", "Even"), ("This", "Acronym")], "Even" "Meta"
[("I", "S"), ("M", "E"), ("T", "A")], "A" "T"
[("test", "cases"), ("are", "fun")], "test" "cases"
[("sad", "beep"), ("boop", "boop")], "boop" "boop"
Bytes paling sedikit menang!
code-golf
array-manipulation
search
Nate Stemen
sumber
sumber
[a, b, c, d]
bukannya[(a, b), (c, d)]
. Itu akan mencukur satu ton byte dari jawaban saya. : P(a,a)
dan diberitahu itu tidak akan terjadi . Nate bahkan mengedit pertanyaan untuk menentukan fakta ini. Namun Anda telah menambahkan test case dengan entri seperti itu dan juga mengedit spesifikasi yang membalikkan keputusan ini - mengapa? Rusak banyak jawaban.Jawaban:
Japt, 6 byte
Bekerja dengan string atau integer.
Menguji
Penjelasan
Input implisit dari array
U
dan string / integerV
.Dapatkan elemen pertama (subarray) di
U
...Berisi
V
.Hapus
V
dan secara implisit mengembalikan array elemen tunggal yang dihasilkan.sumber
f
bukanæ
pada saat itu. Duh: Pæ
dan mencoba untuk menyelesaikan denganf
! : DHaskell , 33 byte
Cobalah online!
Mendefinisikan operator biner
!
, yang mengambil sebagai argumen kirinya nilaix
tipe τ dan sebagai argumen kanannya daftar tupel (τ, τ). Pola definisi cocok di kepala(a,b)
dan ekorc
daftar yang diberikan; jikax==a
kemudianb
dikembalikan; jikax==b
kemudiana
dikembalikan, dan jika tidak kita terus mencari di sisa daftar dengan berulang.(Jika tidak ada "mitra" dalam daftar, ini akan macet, karena kami tidak menentukan apa yang
x![]
seharusnya.)sumber
JavaScript (ES6), 39 byte
Mengambil entri dan larik array sebagai argumen yang disematkan. Versi non-rekursif terbaik yang bisa saya lakukan adalah 44 byte:
sumber
a=>b=>a.map(e=>b=e[1-e.indexOf(b)]||b)&&b
(a,b)=>
=>a=>b=>
, tetapi versi non-rekursif dimulai dari versi rekursif, yang digosok karena saya bisa menyimpan 2 byte pada panggilan rekursif (currying itu sebenarnya biaya satu byte).MATL ,
41456 byteCobalah online!
Input adalah array sebagai
[{a;b},{c;d}]
. Bytecount sangat berfluktuasi sementara OP menemukan apa yang sebenarnya diizinkan.Saya mulai dengan versi 4-byte yang hanya bisa menangani string karakter tunggal, yang merupakan satu-satunya testcase dalam tantangan aslinya. Ketika ini ternyata tidak valid, saya membuat versi 14-byte yang sangat panjang, yang bagus dan hacky (periksa riwayat revisi!), Membuat saya menemukan bug, dan kemudian ternyata sama sekali tidak perlu
Y=
, dengan input yang sesuai , bekerja sama baiknya dengan 4-byte asli sayay=P)
.sumber
Python 2 , 37 byte
Cobalah online!
Proton , 31 byte
Cobalah online!
(Kedua jawaban ini sangat mirip sehingga saya mempostingnya bersama-sama untuk menghindari pengerjaan ulang)
sumber
reversed
menjadireverse
di Proton untuk -1 byte. \ s: P Lebih serius,reverse
apakah nama yang jauh lebih baik, bukan? : PPerl 5 , 30 + 1 (-p) = 31 byte
Cobalah online!
sumber
Python 2 ,
594542 byte-14 byte, terima kasih kepada Emigna. -3 byte terima kasih kepada Maltysen.
Cobalah online!
Masih ingin menggunakan kari. ; -;
sumber
y+[1,-1][y%2]
. Hanya tidak berpikir itu bitwise ... Terima kasih!C ++, 179 byte
C ++ w / tipe data peta, 162 byte
Dengan MSVC, kode mengkompilasi bahkan jika
return
pernyataan terakhir (return"";
) dihilangkan. Itu membuat kode 9 byte lebih ringan, TETAPI keluar pada akhir fungsi (yaitu tidak keluar olehreturn
pernyataan dalam loop) tanpa pernyataan pengembalian akan menyebabkan perilaku yang tidak ditentukan , dan tidak berfungsi jika array tuple tidak mengandung elemen "kunci"sumber
PowerShell, 36 Bytes
menemukan elemen yang mengandung intput, kemudian mendapatkan elemen 'lain' dengan mengecualikan input dari itu, PowerShell tidak memiliki manajemen array yang paling menakjubkan tetapi mungkin ada built-in untuk ini saya tidak tahu.
sumber
("boop", "boop")
test case.Rosda , 30 byte
Cobalah online!
Penjelasan:
sumber
Mathematica
2724 BytesCases
memilih elemen daftar yang cocok dengan suatu pola. Saat digunakan dengan panah, elemen yang cocok dapat diubah.Pemakaian:
Penjelasan: Dalam contoh ini, setelah menemukan argumen pertama, 3, fungsi menjadi
Cases[{3,x_}|{x_,3}:>x]
yang merupakan bentuk operatorCases
yang kemudian diterapkan pada argumen 2{{1, 2}, {3, 4}}
, sehingga memilih pasangan 3, apakah itu dalam posisi absis atau ordinat. Khususnya, fungsi ini akan mencantumkan semua teman jika sebenarnya argumen 1 muncul lebih dari satu kali dalam argumen 2, dengan kata lain, ini sedikit melampaui asumsi pertanyaan yang dinyatakan.Mesin terbang yang tertutup harus kawat gigi berlekuk-lekuk. Disimpan 3 byte dengan saran "Currying" dari @Notatree
sumber
Cases[{#,x_}|{x_,#}:>x]&
digunakan seperti%[3][{{1,2},{3,4}}]
R , 47
42byteCobalah online!
Bekerja pada matriks atau vektor lurus. v = nilai pencarian, a = tuple array.
sumber
Jelly , 6 byte
Tautan diad mengambil daftar mitra di sebelah kiri dan mitra yang hilang di sebelah kanan dan mengembalikan mitra.
Cobalah online!
Bagaimana?
sumber
(a,a)
dan diberitahu bahwa kami tidak perlu menanganinya). Saya yakin saya bisa memperbaikinya, tetapi tidak yakin apakah spesifikasinya seperti yang dimaksudkan sekarang.Pyth -
1198 byteCobalah online di sini .
sumber
Haskell ,
6562 byteCobalah online!
Penjelasan
Ini menggunakan rentang untuk menemukan contoh pertama di mana
x
terkandung oleh tuple. Itu kemudian mengambil elemen pertama dari tuple jika tidak sama dan yang kedua sebaliknya.Haskell Lambdabot,
5956 byteCobalah online!
Penjelasan
Ini menggunakan fungsi
Data.List
sfirst
untuk mengurangi byte yang digunakan oleh(!!0).snd.span
, namun karenafirst
mengembalikan aMaybe
kita perlu menambahkanJust
kecocokan pola kita#
.sumber
x!((a,b):c)|x==a=b|x==b=a|1<2=x!c
adalah 33 byte.05AB1E , 7 byte
Cobalah online!
Alternatif solusi 7 byte
Cobalah online!
sumber
˜D²k>è
untuk 6, kecuali ada alasan khusus untuk XOR'ing dengan 1?Gangguan Umum, 74 byte
Cobalah online!
sumber
Java 8, 78 byte
Lambda (kari) dari
Stream<List<String>>
ke lambda dariString
keString
(meskipun pengetikan implisit terjadi untuk memungkinkan ini bekerja untuk daftar sewenang-wenang). Bahasa ini tidak memiliki kelas tuple khusus, dan saya tidak mengetahui ada di perpustakaan standar, sehingga pasangan input direpresentasikan sebagai daftar. Dapat ditugaskan untukFunction<Stream<List<String>>, Function<String, String>>
.Cobalah secara Online
Saya akan menghargai penghematan 6 byte terakhir untuk siapa saja yang dapat meyakinkan saya bahwa mengembalikan sebuah
Optional
valid. Saya belum bisa meyakinkan diri sendiri.Salah satu bagian yang menarik dari solusi ini bagi saya adalah menentukan cara termurah untuk mendapatkan output dari stream. Saya mempertimbangkan
reduce
,,findFirst
danmin
/max
, tetapi tidak ada yang lebih pendek dari intuisifindAny
.sumber
Ruby, 31 byte
Mengembalikan array tunggal.
sumber
JavaScript (ES6), 45 byte
Datang dengan ini semalam lalu memperhatikan Neil telah mengalahkan saya untuk solusi JS yang lebih baik; pikir saya mungkin juga mempostingnya.
Bekerja dengan string dan integer.
sumber
Prolog (SWI) , 43 byte
Cobalah online!
sumber
C # (.NET Core) ,
101100 + 18 byteterima kasih kepada Grzegorz Puławski membantu mengurangi beberapa byte.
Cobalah online!
C # (.NET Core),
122121120 byteCobalah online!
sumber
x=>y=>
lebih pendek dari(x,y)=>
(Func<a, b, c>
menjadiFunc<a, Func<b, c>>
dan fungsi panggilf(a, b)
menjadif(a)(b)
) - Jawaban hebat btw!using System.Linq;
versusnamespace System.Linq{}
)Sekam , 10 byte
Cobalah online!
Tidak Terikat / Penjelasan
Catatan : Contoh di atas berfungsi pada bilangan bulat hanya demi keterbacaan, tipe itu sendiri tidak masalah (selama Anda dapat membandingkannya).
sumber
Cepat 4 , 43 byte
Outputnya adalah array, yang kosong (tidak ada mitra yang ditemukan), atau memiliki elemen tunggal (mitra).
Kasus uji:
sumber
QBIC , 30 byte
QBIC tidak kuat dalam daftar dan tupel. Kode di atas diambil
a
sebagai parameter baris perintah, lalu meminta input pengguna berpasangan untuk tupel. Ketika elemen kosong diberikan, itu menghasilkanb
.Contoh dijalankan
Penjelasan
Versi alternatif, 22 byte
Ini pada dasarnya melakukan hal yang sama dengan versi yang lebih panjang, tetapi segera berhenti ketika menemukan kecocokan. Saya telah mencantumkan ini sebagai alternatif, karena Anda tidak dapat memasukkan semua tuple ke dalam program ini karena ia berhenti lebih awal.
sumber
Mathematica, 50 byte
Cobalah online!
sumber
{'boop','boop'}
testcase.Ditumpuk , 21 byte
Cobalah online! Ini mengambil input dari stack dan meninggalkan output pada stack. Diperluas, ini terlihat seperti:
Penjelasan
Mari kita ambil
(('sad' 'beep') ('boop' 'boop'))
dan'boop'
sebagai input. Kemudian, array seperti itu dibangun oleh:$revmap,
:Yaitu, salinan larik adalah peta, masing-masing anggota dibalik, dan keduanya disatukan.
KeyArray
pada gilirannya menghasilkan hash dari nilai-nilai yang diberikan, seperti:Kemudian,
\
bawa string pencarian ke atas tumpukan, dan dapatkan kunci dari KeyArray yang cocok dengannya#
. Ini hanya mengembalikan satu nilai, jadi kunci duplikat di KeyArray tidak perlu dikhawatirkan.Pendekatan lain
32 byte: (input dari stack, output ke STDOUT)
[@x:$revmap,uniq[...x=$out*]map]
36 byte:
{%x[y index#+]YES 0# :y neq keep 0#}
38 byte:
[@x:$revmap#,[KeyArray x#]map:keep 0#]
46 byte:
[@x:KeyArray\$revmap KeyArray,[x#]map:keep 0#]
sumber
Excel, 18 Bytes
Rumus Buku Kerja Excel Anonim yang mengambil input
<Lookup Value>
dari rentangA1
,<Key Array>
dari rentangB:B
dan<Def Array>
dari rentangC:C
, dan menampilkan nilai definisi yang terkait dengan nilai pencarian ke sel panggilanSampel I / O akan dimasukkan bila memungkinkan
sumber