pengantar
Suatu hari, Anda hanya bersantai di kantor Anda di CIA, ketika tiba-tiba Anda melihat peringatan di komputer Anda. Program Anda baru saja mencegat ratusan pesan kode! Pemeriksaan cepat mengungkapkan aturan untuk penyandian, tetapi Anda membutuhkan program untuk dapat memecahkan kode dengan cepat.
Tantangan
Anda akan diberikan daftar string, dipisahkan dengan koma. Setiap string akan mengandung:
- Bagian dari pesan kode
- Ini adalah bagian dari pesan kode jika tidak ada dalam formulir
a=b
. Perhatikan bahwa ini adalah bagian dari pesan jika yaab=c
. Tambahkan string ini ke pesan kode.
- Ini adalah bagian dari pesan kode jika tidak ada dalam formulir
- Bagian dari skema pengkodean
- Ini akan dalam bentuk
a=b
. Itu berarti bahwa semua a dalam pesan harus diganti dengan b. Perhatikan bahwa bisa jadia==
, artinya semua a harus diganti dengan = 's.
- Ini akan dalam bentuk
Program Anda kemudian harus menampilkan pesan, diterjemahkan menggunakan skema yang ditemukan.
Info lain: Masukan Anda hanya akan mengandung koma untuk memisahkan string. Itu bisa berisi karakter lain, seperti! 1 #, dll. Itu tidak akan mengandung huruf besar. Bit info decoding tidak saling mendekode. Hanya pesan yang terpengaruh oleh informasi pengodean ulang. Hanya satu pengganti yang akan diberikan untuk setiap karakter, misalnya tidak"io,"i=u","i=g"
Contohnya
Memasukkan:"ta","y=s","y","a=e","b=t","b"," ","j","j=1"
Keluaran:test 1
Memasukkan:"z=p","zota","g=e","yugkb","y=t","u=o","k=s","li","fg","b=="
Keluaran:potatoes=life
Memasukkan:"p","=","==n","ot","p=a","hiz","i=e","z=r"
Keluaran:another
Ini kode-golf , jadi jawaban tersingkat dalam byte menang!
sumber
"massega","e=a","a=e"
dan sejenisnya?"io,"i=u","i=g"
Jawaban:
Jelly , 19 byte
Cobalah online!
Bagaimana?
sumber
m
adalah atom diad yang mengambil setiap elemen kanan-kiri *. Di sini, misalnya,['x','=','y','<space>','a','=','b']m2
akan menghasilkan['x','y','a','b']
. (* kecuali benar nol ketika menambahkan refleksi.)Python 3, 98
lambda
Fungsi ini menerima daftar string (input) dan mengembalikan string (pesan yang diterjemahkan).Contoh:
sumber
'=' == x[1:2]
akan berlaku untukx = 'a=bc'
, yang bukan bagian dari skema pengkodeanHaskell, 85 byte
Pemakaian
Deskripsi
f
membuat tabel pencarian.concat[c|c<-x,[]==f[c]]
mengekstrak pesan.map(\v->maybe v id$lookup v$f x)
melakukan pencarian.sumber
JavaScript (ES6), 87 byte
sumber
Retina,
84827774 byteMengambil daftar yang dipisahkan koma sebagai input. Perhatikan baris baru yang tertinggal
Cobalah secara Online!
Penjelasan:
Pertama, kami memindahkan semua ekspresi formulir
.=.
ke akhir string dan memisahkannya dari pesan dengan koma ganda (,,
). Ini agar pada langkah selanjutnya, kita dapat menemukan semua penyandian dengan memeriksa apakah setiap karakter di depan,,
memiliki kecocokan=.
sesudahnya. Ini dicapai denganM!&`(.).*,,.*\1=.|.+,
menemukan semua kecocokan tersebut dan menempatkannya ke dalam daftar string yang dipisahkan oleh umpan baris. Kami kemudian memodifikasi setiap string hanya berisi salah satu karakter yang tidak ter-enkripsi atau versi karakter yang disandikan. Akhirnya kami mengganti semua umpan baris dan koma dengan string kosong sehingga output kami diformat dengan baik.sumber
Batch, 188 byte
Penjelasan: Loop melalui daftar string dua kali (
for
suka suka string dalam format CSV). Pertama kali, mencari string yang tidak mengandung=
karakter kedua, dan menggabungkannya dengan hasilnya. Kedua kalinya, mencari string yang mengandung=
karakter kedua, dan melakukan substitusi. (bahkan lebih mudah, substitusi sudah dalam format Batch.)sumber
PHP, 116 Bytes
Versi Online
sumber
PHP,
8987 bytedua versi:
mengambil input dari argumen baris perintah; jalankan bersama
-nr
.strtr
(terjemahan jika argumen berisi
=
, pesan lain).strtr
.sumber
05AB1E , 31 byte
Cobalah online!
sumber