Kami akan mendefinisikan ASCII Odd / Even Cipher melalui pseudocode di bawah ini:
Define 'neighbor' as the characters adjacent to the current letter in the string
If the one of the neighbors is out of bounds of the string, treat it as \0 or null
Take an input string
For each letter in the string, do
If the 0-based index of the current letter is even, then
Use the binary-or of the ASCII codes of both its neighbors
Else
If the ASCII code of the current letter is odd, then
Use the binary-or of itself plus the left neighbor
Else
Use the binary-or of itself plus the right neighbor
In all cases,
Convert the result back to ASCII and return it
If this would result in a code point 127 or greater to be converted, then
Instead return a space
Join the results of the For loop back into one string and output it
Misalnya, untuk input Hello
, outputnya adalah emmol
, sejak
- The
H
bergantian untuk\0 | 'e'
yange
- The
e
berubah menjadi'e' | 'l'
, atau101 | 108
, yang109
ataum
- Yang pertama
l
juga berubah menjadi101 | 108
ataum
- Yang kedua
l
berubah menjadi108 | 111
, yaitu111
atauo
- The
o
berubah menjadi108 | \0
, ataul
Memasukkan
- Sebuah kalimat yang hanya terdiri dari karakter ASCII yang dapat dicetak, dalam format apa pun yang sesuai .
- Kalimat tersebut mungkin memiliki titik, spasi, dan tanda baca lainnya, tetapi hanya akan menjadi satu baris.
- Panjang kalimat setidaknya tiga karakter.
Keluaran
- Cipher yang dihasilkan, berdasarkan aturan yang dijelaskan di atas, dikembalikan sebagai string atau output.
Aturan
- Program lengkap atau fungsi dapat diterima.
- Celah standar dilarang.
- Ini adalah kode-golf sehingga semua aturan golf biasa berlaku, dan kode terpendek (dalam byte) menang.
Contohnya
Input pada satu baris, output pada baris berikut. Baris kosong memisahkan contoh.
Hello
emmol
Hello, World!
emmol, ww~ved
PPCG
PSWG
Programming Puzzles and Code Golf
r wogsmmoonpuu ~ meannncoooeggonl
abcdefghijklmnopqrstuvwxyz
bcfefgnijknmno~qrsvuvw~yzz
!abcdefghijklmnopqrstuvwxyz
aaccgeggoikkomoo qsswuww yy
Test 123 with odd characters. R@*SKA0z8d862
euutu133www|todddchizsscguwssr`jS{SK{z~|v66
o
perubahan l
pada contoh pertama, saya cukup yakin spesifikasi Anda memastikan bahwa yang pertama o
tidak berubah l
pada contoh kedua. Itu harus berubah menjadi 'l' | ','
, apa pun itu, kan?
'l' | ','
, yang 108 | 44 --> 1101111 | 0101100
, yang menjadi 108
, yang l
. The ,
terjadi untuk berbaris dengan l
, jadi tidak ada perubahan saat biner-atau berlangsung.