Tantangan
Tantangannya adalah mengenkripsi string yang diberikan, menggunakan aturan seperti yang ditentukan di bawah ini. String hanya akan berisi huruf kecil , digit , dan / atau spasi kosong .
Setara dengan Karakter
Sekarang, pertama Anda perlu tahu bagaimana menemukan "setara" dari setiap karakter.
Jika karakternya adalah konsonan, ini adalah cara untuk menemukan itu setara:
1) List all the consonants in alphabetical order
b c d f g h j k l m n p q r s t v w x y z
2) Get the position of the consonant you are finding the equivalent of.
3) The equivalent is the consonant at that position when starting from the end.
misalnya: 'h' dan 't' adalah setara satu sama lain karena 'h', 't' berada di posisi ke-6 dari awal dan akhir masing-masing.
Prosedur yang sama diikuti untuk menemukan padanan vokal / digit. Anda mencantumkan semua vokal atau digit (mulai dari 0) secara berurutan dan menemukan yang setara.
Diberikan di bawah ini adalah daftar yang setara dari semua karakter:
b <-> z
c <-> y
d <-> x
f <-> w
g <-> v
h <-> t
j <-> s
k <-> r
l <-> q
m <-> p
n <-> n
a <-> u
e <-> o
i <-> i
0 <-> 9
1 <-> 8
2 <-> 7
3 <-> 6
4 <-> 5
Aturan Enkripsi
1) Anda mulai bergerak dari kiri dan ke kanan.
2) Jika karakternya adalah konsonan / digit, maka ekuivalennya diambil dan jika itu adalah ruang kosong, maka ruang kosong diambil.
3) Jika karakternya adalah vokal, Anda mengambilnya setara dan mulai bergerak ke arah yang berlawanan. Misalnya, jika Anda bergerak ke kanan dan menemukan vokal, mengenkripsi karakter itu kemudian lompat ke karakter paling tidak terenkripsi dan mulai mengenkripsi di arah kiri, dan sebaliknya.
4) Anda tidak harus mempertimbangkan karakter di posisi yang sama dua kali. Langkah-langkah harus diikuti sampai semua karakter dalam input tercakup.
5) Jumlah total karakter dalam input (termasuk spasi kosong) harus sama dengan jumlah total karakter dalam output.
Harap dicatat bahwa karakter terenkripsi muncul dalam output sesuai urutan dienkripsi.
Sekarang izinkan saya mengenkripsi string untuk Anda.
String = "tre d1go3t is"
Moving left to right
"t" -> "h"
"r" -> "k"
"e" -> "o"
Vowel encountered. Now moving right to left.
"s" -> "j"
"i" -> "i"
Vowel encountered. Now moving left to right.
" " -> " "
"d" -> "x"
"1" -> "8"
"g" -> "v"
"o" -> "e"
Vowel encountered. Now moving right to left.
" " -> " "
"t" -> "h"
"3" -> "6"
Output -> "hkoji x8ve h6"
Contohnya
"flyspy" -> "wqcjmc"
"hero" -> "toek"
"heroic" -> "toyike"
"ae" -> "uo"
"abe" -> "uoz"
"the space" -> "htoo jmuy"
"a d1g13t" -> "uh68v8x "
"we xi12" -> "fo78i d"
"this is a code" -> "htioj ixej uy "
Anda juga dapat memilih untuk menggunakan huruf besar alih-alih huruf kecil.
Mencetak gol
Ini kode-golf , jadi kode terpendek menang!
sumber
Jawaban:
JavaScript (Node.js) ,
173...166156...124123 byte-28 byte Terima kasih Arnauld
Cobalah online!
Dalam iterasi pertama
String
akan diubah menjadiArray
, dan iterasi selanjutnya akan terus digunakanArray
. Voa!Pendekatan Asli (166 byte):
sumber
&
tidak bekerja untuk beberapa angka tetapi&&
berhasil. Terima kasih.q=="0"|+q
sebenarnya 1 byte lebih pendek dariq>" "&&1/q
.05AB1E , 22 byte
Cobalah online! atau sebagai Test suite
Penjelasan
sumber
žhžMžN)UvćXJXíJ‡D?žMsåiR
adalah apa yang saya pikirkan untuk perbaikan, tetapi tidak bisa mengurangiXJXiJ
cukup.DJsíJ
yang juga tidak terlalu efektif.C, 196 byte
Cobalah online!
sumber
J , 132 byte
Cobalah online!
Kata kerja eksplisit kata kerja kali ini.
Penjelasan:
c=.(u:97+i.26)
membuat daftar azv=.'aeiou'
membuat daftar vokal-.
menghapus vokal dari daftar hurufd=.u:48+i.10
membuat daftar digitg=.;"0|.
kata kerja utilitas untuk membuat daftar pasangan kotak simbol penggantia=.''
daftar untuk menyimpan hasilnyawhile.*#y do.a=.a,{.y rplc(g c),(g d),g v
sedangkan panjang daftar adalah> 0 mengambil simbol, ganti dan tambahkan ke hasilnyay=.|.^:({:a e.v)}.y
letakkan satu simbol dari awal daftar dan jika simbol itu vokal, balik daftarend.
mengakhiriwhile
loopa
mengembalikan hasilnyasumber
Bersih ,
221206198190186178 byteCobalah online!
sumber
Retina , 78 byte
Cobalah online! Tautan termasuk kasus uji. Penjelasan:
Tukar setiap karakter dengan padanannya.
Ulangi saat vokal tetap.
Keluarkan teks hingga vokal.
Hapus teks hingga vokal.
Balikkan teks yang tersisa. Ketika tidak ada vokal yang tersisa, ini kemudian secara implisit menghasilkan, namun untuk keperluan kasus uji, header mengeluarkan teks pada akhir setiap baris.
sumber
Stax , 24 byte
Menjalankannya
Berikut ini adalah representasi ascii dari program yang sama.
Ini menerjemahkan masing-masing kelas karakter terlebih dahulu, kemudian memulai loop sementara. Dalam loop, ini menghasilkan karakter berikutnya, dan secara kondisional membalikkan sisa string jika sebuah vokal ditemukan.
sumber