Dua duta besar di konferensi PBB ingin berbicara satu sama lain, tetapi sayangnya masing-masing hanya berbicara satu bahasa - dan mereka bukan bahasa yang sama. Untungnya, mereka memiliki akses ke beberapa penerjemah, yang masing-masing memahami dan berbicara beberapa bahasa. Tugas Anda adalah untuk menentukan rantai penerjemah terpendek (karena Anda ingin sesedikit mungkin hilang dalam terjemahan mungkin) yang memungkinkan kedua duta besar untuk berbicara satu sama lain.
Coding
Input: dua bahasa sebagai string huruf kecil 2 huruf (bahasa masing-masing duta besar) dan daftar bahasa (satu daftar per penerjemah yang tersedia)
Anda dapat mengambil bilangan bulat sebagai pengganti kode 2 huruf.
Keluaran: Urutan penerjemah baik berdasarkan indeks atau nilai yang merupakan salah satu rantai penerjemah terpendek yang memungkinkan kedua duta besar berkomunikasi. Jika tidak ada rantai penerjemah yang valid, perilaku tersebut tidak terdefinisi. (Anda mungkin macet, menampilkan nilai sembarang, atau menunjukkan kesalahan)
Rantai penerjemah yang valid adalah di mana penerjemah pertama berbicara bahasa satu duta besar, penerjemah kedua dan selanjutnya berbagi setidaknya satu bahasa dengan penerjemah sebelumnya, dan penerjemah terakhir berbicara bahasa duta besar lainnya.
Contohnya
Menggunakan pengindeksan berbasis nol:
es, en, [
[es, en]
] ==> [0]
en, en, [] ==> []
en, jp, [
[en, zh, ko, de],
[jp, ko]
] ==> [0, 1]
es, ru, [
[gu, en, py],
[po, py, ru],
[po, es]
] ==> [2, 1]
fr, gu, [
[it, fr, de, es, po, jp],
[en, ru, zh, ko],
[jp, th, en],
[th, gu]
] ==> [0, 2, 3]
fr, ru, [
[fr, en],
[en, ko, jp],
[en, ru]
] ==> [0, 2]
de, jp, [
[en, fr],
[ko, jp, zh],
[fr, po],
[es, ko, zh],
[de, en, th],
[en, es],
[de, fr]
] ==> [4, 5, 3, 1]
Aturan dan Asumsi
- Aturan IO standar (gunakan format I / O yang nyaman) dan celah terlarang berlaku.
- Anda dapat berasumsi bahwa berbicara dan memahami bahasa sangat simetris dan bahwa semua terjemahan yang mungkin antar bahasa sama-sama efisien.
- Tidak ada konsep bahasa "cukup dekat". Misalnya, tidak cukup baik menggunakan bahasa Portugis di satu sisi di mana bahasa Spanyol diperlukan, misalnya.
- Jika ada beberapa rantai penerjemah terpendek, salah satu dari mereka akan melakukannya.
- Jika para duta besar berbicara dengan bahasa yang sama, daftar penerjemah harus kosong
- Yang mana dari duta besar yang pertama tidak penting; daftar penerjemah dapat maju atau mundur.
- Duta besar hanya berbicara satu bahasa demi tantangan ini
- Penerjemah berbicara setidaknya dua bahasa
- Kode bahasa 2 huruf tidak perlu sesuai dengan bahasa asli
- Anda mungkin menganggap ada urutan penerjemah yang valid
- Jika mengeluarkan urutan berdasarkan nilai, sertakan set lengkap bahasa yang tersedia, bukan hanya yang relevan.
Selamat Golf!
sumber
en,fr,sp;en,gr;gr,fr
Jawaban:
Python 2 ,
138126120117113 byteCobalah online!
3 byte thx ke ArBo
Mengembalikan daftar panjang minimal penerjemah sebagai
set
bahasa, yaitu 'berdasarkan nilai', dariT
yang memungkinkana
untuk diajak bicarab
.sumber
if t not in U and a in t
dapat diubah menjadiif(a in t)>U.count(t)
untuk menyimpan 4 byte.*args
notasiJelly ,
1917 byteCobalah online!
Tautan diad yang menggunakan daftar penerjemah sebagai argumen kiri dan daftar duta besar (masing-masing terbungkus ganda dalam daftar) sebagai argumen yang tepat. Mengembalikan daftar penerjemah, yang masing-masing adalah daftar bahasa yang mereka gunakan.
Terima kasih kepada @KevinCruijssen karena telah menghemat 2 byte!
Penjelasan
sumber
LÞ
, karena permetrasi powerset + sudah menghasilkan daftar yang diurutkan berdasarkan panjang.05AB1E ,
1817 byteTerinspirasi oleh jawaban Jelly @NickKennedy , jadi pastikan untuk mendukungnya!
Keluarkan daftar sendiri bukan indeksnya.
Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber
JavaScript (ES6),
123121 byteMengharapkan bilangan bulat alih-alih kode 2 huruf.
Cobalah online!
sumber