Masalah dengan cipher Caesar adalah kata-kata yang dihasilkan seringkali sulit diucapkan. Masalah dengan Babi Latin adalah mudah untuk memecahkan kode. Mengapa tidak menggabungkannya?
Memasukkan
Sebuah kata yang terdiri dari 26 huruf bahasa Inggris.
Keluaran
Pertama, ubah setiap konsonan pada kata menjadi konsonan berikutnya dalam alfabet. Jadi, b pergi ke c, d pergi ke f, dan z pergi ke b. Kemudian, ubah setiap vokal ke vokal berikutnya dalam alfabet (Anda pergi ke a). Terakhir, hanya jika huruf pertama dari kata itu adalah konsonan, pindahkan huruf itu ke akhir kata dan tambahkan "ay" ke akhir kata.
Contoh:
cat -> evday
dog -> uhfay
eel -> iim
- Ini kode-golf , jadi kode terpendek menang.
- Kasus tidak masalah.
- Vokal yang akan digunakan adalah A, E, I, O, dan U
z → bay
the → jivay
? (Yaitu, jika kata itu dimulai dengan banyak konsonan, apakah kita hanya memindahkan salah satunya?)Jawaban:
Stax , 20 byte
Jalankan dan debug itu
Penjelasan
Saya melewati beberapa iterasi dan akhirnya turun ke 20. Solusi asli saya adalah 53 byte.
sumber
Ruby ,
9669 byteCobalah online!
Fakta menyenangkan hari ini: tr () cocok dengan string kanan-ke-kiri. Saya selalu menganggap itu dari kiri ke kanan.
sumber
R ,
8685 byteCara sederhana.
chartr
memiliki properti yang menarik dan berguna yang dapat menentukan rentang huruf , yang menghemat beberapa byte.-1 byte dengan mencuri string terjemahan Ruby dari @ GB - upvote it!
Cobalah online!
sumber
Java (JDK) , 167 byte
Cobalah online!
Kredit
sumber
05AB1E , 21 byte
Cobalah online!
Penjelasan
sumber
Node.js 10.9.0 ,
121116 byteMengharapkan string input dalam huruf kecil.
Cobalah online!
Mengidentifikasi vokal
Dan ya:
Berkomentar
sumber
Python 2 ,
1531211109991 byteCobalah online!
8 byte dicukur karena saran oleh Matthew Jensen
sumber
lambda s:[s[1:]+s[0]+"ux",s][s[0]in'aeiou'].translate(8*".ecdfighjoklmnpuqrstvawxyzb.....")
translate
dengan Python 2 ...T-SQL, 169 byte
Input melalui tabel yang sudah ada sebelumnya, sesuai standar IO kami .
Melakukan substitusi karakter terlebih dahulu, menggunakan fungsi ( baru ke SQL 2017 )
TRANSLATE
, lalu memeriksa karakter pertama.Mengganggu panjang sebagian besar karena panjang kata kunci SQL.
sumber
Script shell, 70 byte
Cobalah online!
sumber
Haskell ,
10297 byteCobalah online!
sumber
Retina 0.8.2 , 50 byte
Cobalah online! Tautan termasuk kasus uji. Pendekatan serupa dengan jawaban R. Penjelasan:
o
merujuk ke set lainnya, yaituaei\oub-df-hj-np-tv-zb
, yang mengembangaeioubcdfghjlkmnpqrstvwxyzb
, sehinggauo
mengembanguaeioubcdfghjlkmnpqrstvwxyzb
. Ini menghasilkan transliterasi berikut:Yang kedua
u
danb
diabaikan karena mereka tidak pernah bisa dicocokkan, jadi ini memberikan sandi yang diinginkan. (Perhatikan bahwa dalam Retina 1 Anda tentu saja dapat menggunakanv
alih-alihaei\ou
untuk penghematan 5 byte.)Jika huruf pertama bukan vokal, putar hingga akhir dan sufiks
ay
.sumber
Jelly , 24 byte
Cobalah online!
Disimpan 1 byte berkat Jonathan Allan (gunakan sintaks dua-char daripada tanda kutip).
sumber
⁾ay
untuk satu byte. The©
bisa pergi setelahe
karena itu adalah apa yang Anda menyimpan. Saya punyaØẹØḄ,żṙ€¥1ẎyṙḢe©ØḄƊ®⁾ayẋ
.> <> ,
9492 byteCobalah online!
Sunting: Disimpan 2 byte dengan mengambil input mod 97 daripada 32, sehingga kamus bisa dimulai pada awal baris. Versi sebelumnya:
sumber
Merah , 149 byte
Cobalah online!
Seperti (hampir) selalu, entri terpanjang
sumber
F # (Mono) , 197 byte
Cobalah online!
sumber
Perl 5 , 56 byte
Cobalah online!
sumber
-
antarac
dand
ataug
danh
?<s>58</s> 56 bytes
di header dan banyak orang menambahkan "Edit: Disimpan 2 byte terima kasih kepada @Neil." atau semacamnya ketika mereka dibantu dalam komentar.Dyalog APL (SBCS), 57 byte
Cobalah online!
Hanya mengambil input dalam huruf besar! (Karena
⎕A
adalah huruf besar)⎕A{(⍺~⍵)⍵}'AEIOU'
: Vektor konsonan dan vokal(⊂⍵⍳⍨∊a)⌷∊1⌽¨a
: Menggunakan indeks setiap huruf dari kata dalam alfabet normal (⊂⍵⍳⍨∊a
) untuk mengindeks (⌷
) ke dalam sandi∊1⌽¨a
.('AY',⍨1⌽⊢)⍣(∊/⊃¨⍵a)
: Memindahkan huruf pertama ke akhir dan menambahkan 'AY', jika huruf pertama adalah konsonan.Terima kasih atas tantangan kerennya!
sumber
JavaScript (SpiderMonkey) , 107 byte
Cobalah online!
Mengharapkan input dalam huruf kecil.
Ganti setiap karakter string dengan karakter setelahnya dalam string
'aeiouabcdfghjklmnpqrstvwxyzb'
, dan kemudian piglatinify apapun dengan konsonan awal.sumber
PHP, 112 byte
atau
anggap input huruf kecil. Jalankan sebagai pipa dengan
-nR
atau coba online .Anda juga bisa menggunakan
strtr($s,uzbcadfgehjklminpqrsotvwxy,range(a,z))
bukanstrtr($s,range(a,z),ecdfighjoklmnpuqrstvawxyzb)
.sumber