Diberikan dua string, cari tabel terjemahan ( subtitle cipher ) di antara keduanya, jika terjemahan tidak memungkinkan, output salah. Jawabannya harus diminimalkan dan dibuat dari kiri ke kanan. Karakter pertama yang diterjemahkan antara kata-kata harus menjadi yang pertama dalam tabel terjemahan. Selain itu, huruf apa pun yang tidak diterjemahkan (di tempat yang sama dengan aslinya), TIDAK boleh ada dalam tabel terjemahan.
Mungkin paling mudah didefinisikan melalui contoh:
Kasus yang valid
"bat", "sap" => ["bt","sp"]
Perhatikan urutannya, output dari ["tb","ps"]
tidak valid untuk tantangan ini.
"sense", "12n12" => ["se","12"]
Perhatikan bagaimana n
tidak diterjemahkan karena itu adalah hubungan 1 ke 1.
"rabid", "snail" => ["rabd","snal"]
Perhatikan bagaimana i
tidak diterjemahkan karena itu adalah hubungan 1 ke 1.
"ass", "all" => ["s","l"]
A tidak termasuk, tetap sama, s
dapat memetakan l
karena kecocokan pola.
"3121212", "ABLBLBL" => ["312","ABL"]
Pola yang cocok sempurna.
Kasus Palsu
"banana", "angular" => false
(tidak sama panjang, tidak mungkin).
"animal", "snails" => false
(setiap karakter hanya dapat digunakan SEKALI di setiap sisi terjemahan).
"can","cnn" => false
(n secara implisit digunakan dalam terjemahan, oleh karena itu, mendefinisikan tabel terjemahan dengan n-> a tidak valid)
Jadi, itu [aimal,sails]
adalah jawaban yang tidak valid, membuat ini salah.
"a1", "22" => false
Lihat "peringatan", ini terdaftar sebagai kepalsuan. Dalam hal ini, itu karena a
dan 1
tidak dapat memetakan keduanya 2
. (Setiap karakter hanya dapat digunakan SEKALI di setiap sisi terjemahan).
Jawaban ini tampaknya menjadi patokan yang bagus: /codegolf//a/116807/59376
Jika Anda memiliki pertanyaan tentang fungsi dua pasangan kata yang tidak terdaftar, tunda implementasi ini.
Aturan I / O
- Input dapat berupa array elemen 2 atau sebagai 2 input terpisah.
- Output dapat berupa array atau baris baru / ruang dibatasi, mirip dengan yang saya tunjukkan.
- Output salah bisa 0, -1 atau salah. Kesalahan / output kosong juga baik-baik saja.
- Anda dijamin
a
tidak akan samab
dan tidaka
juga tidakb
akan kosong. a
danb
hanya urutan huruf yang dapat dicetak-ASCII.
Peringatan
- Terjemahan harus muncul dari kiri ke kanan, lihat contoh 1.
- Anda tidak boleh menampilkan karakter yang tetap sama.
- Program Anda hanya dapat menerima dua string
a
danb
. - Setiap karakter hanya dapat digunakan SEKALI di setiap sisi terjemahan. Inilah yang membuat terjemahan dari
snails
menjadianimals
tidak mungkin. - Penggantian rekursif tidak boleh terjadi. Contoh ganti rekursif: di
"a1","22"->[a1,12]
mana a pertama diganti dengan 1, maka kedua resultan diganti dengan 2's. Ini tidak benar, anggap semua terjemahan terjadi secara independen satu sama lain, artinya ini palsu. Artinya: "a1" dengan tabel terjemahan [a1,12] dievaluasi menjadi 12 (bukan 22)
sumber
Jawaban:
JavaScript (ES6), 128 byte
sumber
ass
danall
, seharusnyas,l
.JavaScript (ES6),
108107105106 byteSunting : Diperbaiki untuk mendukung input seperti
"22" / "a1"
yang seharusnya palsu.Mengembalikan salah satu
0
atau array dari dua string.Diformat dan dikomentari
Uji kasus
Tampilkan cuplikan kode
sumber
f('22')('a1')
harus palsu juga.PHP> = 7.1, 130 Bytes
18 Bytes disimpan oleh @Titus
Testcases
Diperluas
PHP> = 7.1, 148 Bytes
mencetak 0 untuk Output salah true sebagai string
Testcases
Diperluas
PHP> = 7.1, 131 Bytes
Jawaban kedua dapat disingkat menjadi ini jika array asosiatif diizinkan
mencetak 0 untuk Output salah true sebagai array asosiatif bukan string
Testcases
PHP> = 7.1, 227 Bytes
mencetak 0 untuk false
Testcases
Diperluas
sumber
array_values()
di dalamnyajoin()
sama sekali tidak berguna dan dapat dijatuhkan.a1 22 => false
ujian. Selain itu, program pertama Anda sepertinya tidak berfungsi dalam tester online.($p=$x[$i])==$o?:$k[$c[$p]=$o]=$p;
di loop dan$y==strtr($x,$c)
untuk tes pertama.Jelly , 18 byte
Tautan monadik yang tidak disebutkan namanya (fungsi satu input) mengambil daftar, yang mengembalikan:
daftar kosong dalam kasus falsey; atau
daftar yang berisi dua daftar karakter dalam kasus kebenaran.
Cobalah online! (footer membagi daftar dengan ruang untuk menghindari pencetakan representasi yang dihancurkan)
... atau lihat test suite .
Bagaimana?
sumber
Retina ,
194191185229225241 byteCobalah online!
Mengambil input yang
;
dipisahkan. Output juga;
dipisahkan. Input palsu ditandai dengan output kosong.Saya tahu ini sangat menyakitkan, saya masih mencoba untuk memotong byte. Sebagian besar byte ini digunakan untuk menghapus input yang salah.
Suntingan
Ternyata saya memiliki kelemahan yang signifikan dengan program saya. Sudah diperbaiki sekarang, tetapi dengan biaya lebih dari 40 byte.
Kesalahan lain ditemukan di mana program saya tidak menyatakan input
a1;22
salah, tetapi saya bisa menjaga program di bawah 250 byte setelah memperbaikinyaPenjelasan
(penjelasan lebih rinci akan segera hadir)
Pertama kita harus memeriksa apakah panjang string
a
danb
sama atau tidak. Jika tidak, kami menghapus semuanya.Gandakan input untuk mempertahankannya sementara kami melakukan beberapa pengujian panjang.
Sekarang dalam satu lingkaran, kita menghapus karakter pertama
a
dan karakter pertamab
hingga salah satu string menjadi kosong.Sekarang ada kemungkinan untuk "ruang pola".
;;abc
Kedua string memiliki panjang yang samadef;;abc
a
lebih panjang darib
;def;abc
b
lebih panjang daria
Sekarang kita harus mengosongkan input jika string tidak memiliki panjang yang sama (skenario 2 dan 3). Inilah yang dilakukan subtitusi di bawah ini. Ini menghapus teks yang cocok dengan skenario 2 dan 3.
Ini menghapus karakter yang tidak ditransliterasikan dalam string
a
danb
.abc;1b2
=>ac;12
Setelah itu, kita harus menghapus karakter duplikat.
sese;1212
=>se;12
, tetapi ini mempertahankan input sepertiaba;123
Akhirnya, kami menghapus input jika ada karakter rangkap yang memetakan ke karakter yang berbeda seperti
aba;123
ataua1;22
.Dan akhirnya, hapus karakter duplikat.
sumber
(?(1)(?!))
saya pelajari dari jawaban Anda :);
.Jelly ,
2826 byteCobalah online!
sumber
Ruby, 133 byte
Cobalah online!
Lebih mudah dibaca:
Hanya untuk iseng, berikut adalah versi 84 byte di Goruby, yang merupakan Ruby, tetapi dengan bendera golf yang diatur ketika mengkompilasi interpreter. Di antara hal-hal lain, ini memungkinkan Anda untuk menyingkat panggilan metode ke pengidentifikasi unik terpendek mereka.
sumber
Python 2 ,
198.193.189.182.179.175.169,165 byteCobalah online!
-4 byte! terima kasih kepada mbomb007 untuk menyarankan penggunaan tab alih-alih ruang.
memodifikasi format input, sekali lagi terima kasih kepada mbomb007.
sumber
Python 3.6,
211185181178 byteKeluar dengan kesalahan untuk hasil palsu.
Ini membutuhkan Python 3.6, yang bisa Anda jalankan di shell di sini .
Anda dapat mengujinya tanpa memesan output yang benar pada TIO di sini . (TIO tidak memiliki 3,6).
Tidak Disatukan:
Kalau saja pesanan tidak masalah ...
sumber
a1,12
kembalia1,12
bukanFalse
? Di bawah bagian Peringatan dikatakan bahwa "a1" dengan tabel terjemahan [a1,12] dievaluasi menjadi 12 .False
.1a 21
juga akan salah, karena oeder harus dilestarikan.a1,12
sebaliknyaa1,22
.Röda ,
108119 byteCobalah online!
Ini adalah fungsi yang mengambil dua daftar karakter dari aliran dan mendorong dua daftar ke aliran.
Ini bisa menjadi penyortir jika saya diizinkan untuk mengembalikan pasangan.
Penjelasan (kedaluwarsa):
Inilah solusi garis bawah yang tidak mengandung variabel (114 byte):
Itu banyak garis bawah.
sumber
<>
dilakukan?a() <> b()
sama denganinterleave([a()], [b()])
(atau hanyainterleave(a, b)
, jikaa
danb
adalah array).a1 22 => false
ujian. "Semua terjemahan terjadi secara independen satu sama lain, artinya ini salah."AWK, 140 byte
Penggunaan: Masukkan kode di
FILE
:String input harus dipisahkan dengan spasi.
Output kosong jika gagal, atau 2 string dipisahkan oleh spasi.
sumber
k, 28 byte
Penjelasan:
sumber
APL (Dyalog) dengan AGL , 22 byte
Cobalah online!
{
...}
fungsi anonim:Jika…
⍺⍵
argumen⍳⍨¨
ketika diindeks sendiri (yaitu kejadian pertama dari elemen mereka dalam diri mereka sendiri)≡/
adalah setara:
kemudian:⍺(
...)⍵
terapkan fungsi diam-diam berikut ke argumen:,¨
menggabungkan elemen yang sesuai (kesalahan pada panjang yang tidak cocok)é
kemudian disaring oleh (é
hanya fungsi primitif/
)≠
di mana string berbeda∪
unik (hapus duplikat)↓⍉↑
transpos daftar-pasangan-ke-daftar-daftar (lit. campuran menjadi tabel, tabel transpos, dibagi menjadi daftar)selain itu, jangan lakukan apa pun
sumber
↓⍉↑
masih membuat saya sedikit bingung.CJam, 38 byte
Input dan output adalah array pada stack.
sumber
PHP (> = 7.1), 165 byte
mencetak
0
untuk array falsy, asosiatif. Jalankan dengan-r
atau coba online .kerusakan
sumber
Output can be as an array or ...
, jadi saya katakan ya. Versi PHP saat ini tersirat untuk semua posting saya; tetapi jika saya menemukan sesuatu yang penting untuk diedit, saya akan menambahkan versinya.array_unique($r)!=$r
dalam setiap kasusarray_unique($r)<$r
saya akan mengunggah posting Anda sendiri untuk trik ini. Saat ini saya sedang mencari penjelasanarray_unique($t)<$t
(harus perubahan itu karenacan
untukcnn
tidak valid) bekerja, karena berbagai perbandingan (tidak seperti perbandingan string) membandingkan panjang sebelum hal lain.can
untukcnn
saya 17 Bytes Lupakan saran saya