Saya suka cypher sederhana ini, sangat menyenangkan membaca kata-kata yang tidak bisa dibaca manusia dan mengisi kekosongan ...
Ot wes thi bist uf tomis, ot wes thi wurst uf tomis,
ot wes thi egi uf wosdum, ot wes thi egi uf fuuloshniss,
ot wes thi ipuch uf biloif, ot wes thi ipuch uf oncridaloty,
ot wes thi siesun uf loght, ot wes thi siesun uf derkniss,
ot wes thi sprong uf hupi, ot wes thi wontir uf dispeor,
wi hed ivirythong bifuri as, wi hed nuthong bifuri as,
wi wiri ell guong dorict tu hievin, wi wiri ell guong dorict thi uthir wey –
on shurt, thi piroud wes su fer loki thi prisint piroud,
thet sumi uf ots nuosoist eathurotois onsostid un ots biong riciovid,
fur guud ur fur ivol, on thi sapirletovi digrii uf cumperosun unly.
Aturannya sangat sederhana:
- Terima beberapa teks sebagai input (karakter ascii, huruf besar / kecil dan tanda baca).
- Untuk setiap vokal, putar ke vokal berikutnya, atau kembali ke awal.
- a => e
- e => i
- i => o
- o => u
- u => a
- Huruf besar tetap huruf besar, huruf kecil tetap huruf kecil.
- Keluarkan teks setelah konversi ini.
- Tidak perlu mendukung aksen.
- Semua karakter lain harus tetap tidak berubah.
- Cobalah untuk melakukannya dalam jumlah byte terkecil.
- Bahasa lama yang Anda suka.
Uji Kasus
It was the best of times, it was the worst of times,
it was the age of wisdom, it was the age of foolishness,
it was the epoch of belief, it was the epoch of incredulity,
it was the season of light, it was the season of darkness,
it was the spring of hope, it was the winter of despair,
we had everything before us, we had nothing before us,
we were all going direct to heaven, we were all going direct the other way –
in short, the period was so far like the present period,
that some of its noisiest authorities insisted on its being received,
for good or for evil, in the superlative degree of comparison only.
Di luar:
Ot wes thi bist uf tomis, ot wes thi wurst uf tomis,
ot wes thi egi uf wosdum, ot wes thi egi uf fuuloshniss,
ot wes thi ipuch uf biloif, ot wes thi ipuch uf oncridaloty,
ot wes thi siesun uf loght, ot wes thi siesun uf derkniss,
ot wes thi sprong uf hupi, ot wes thi wontir uf dispeor,
wi hed ivirythong bifuri as, wi hed nuthong bifuri as,
wi wiri ell guong dorict tu hievin, wi wiri ell guong dorict thi uthir wey –
on shurt, thi piroud wes su fer loki thi prisint piroud,
thet sumi uf ots nuosoist eathurotois onsostid un ots biong riciovid,
fur guud ur fur ivol, on thi sapirletovi digrii uf cumperosun unly.
Di:
The quick brown fox jumps over the lazy dog.
Di luar:
Thi qaock bruwn fux jamps uvir thi lezy dug.
Di:
Home is where the heart is.
Di luar:
Humi os whiri thi hiert os.
Di:
Boaty McBoatface
Di luar:
Buety McBuetfeci
Di:
AEIOUaeiou
Di luar:
EIOUAeioua
Di:
Programming Puzzles And Code Golf
Di luar:
Prugremmong Pazzlis End Cudi Gulf
code-golf
text-processing
AJFaraday
sumber
sumber
Jawaban:
Stax , 7 byte
Jalankan dan debug itu
Cobalah online!
Penjelasan (dibongkar)
Mungkin bisa menabung lebih banyak, akan terus berusaha.
sumber
MS-SQL, 51 Bytes
Bekerja pada SQL 2017 atau lebih baru:
Fungsi baru
TRANSLATE
melakukan penggantian karakter individu, sehingga sangat cocok untuk tantangan ini.Input adalah melalui tabel t yang sudah ada sebelumnya dengan kolom varchar v , sesuai aturan IO kami .
Dalam hal ini tabel harus dibuat menggunakan susunan case-sensitive , baik dengan menjalankan pada server case-sensitive, atau dengan menggunakan
COLLATE
kata kunci (tidak dihitung terhadap total karakter):EDIT : SSMS dapat memotong kutipan panjang di atas ketika mengembalikan hasil dalam jendela "hasil ke teks", ini adalah pengaturan klien, bukan bug dalam program saya .
Untuk memperbaiki, buka
Tools > Options > Query Results > SQL Server > Results to Text
dan tingkatkan "Jumlah karakter maksimum yang ditampilkan di setiap kolom."sumber
REPLACE
beberapa trik juga:REPLACE(TRANSLATE(v,'1234567890','xxxxxxxxxx'),'x','')
untuk menghilangkan semua angka dari string, misalnya. Masih panjang, tetapi jauh lebih pendek dari 10 bersarangREPLACE
.Bash + coreutils , 24
Cobalah online!
sumber
Haskell , 52 byte
Cobalah online!
Lynn menyelamatkan saya dua byte dengan menunjukkan bahwa
!!0
itu lebih pendek darihead
.Penjelasan
Jika Anda belum pernah membuat kode di Haskell, ini mungkin akan terlihat seperti tumpukan omong kosong. Jadi pertama-tama mari kita ungolf dan memecahnya:
Pertama kita memiliki fungsi
!
, yang mengambil strings
dan karakterc
. Pencocokan pola pertama kami menerima input jika string tidak kosong. Jika string tidak kosong, kami membandingkan karakter pertamanya denganc
. Jika karakter pertamanya tidak sama denganc
kita melemparkannya dan memanggil!
lagi dengan sisa string danc
. Jika sama, kita mengembalikan karakter kedua dalam string.Pencocokan pola kami berikutnya menangkap string dalam semua kasus lain, yaitu jika string kosong. Dalam hal ini kami hanya kembali
c
.Semua dalam semua fungsi ini mengambil karakter
c
dan strings
dan mengembalikan karakter setelah kemunculan pertamac
dis
. Jika kita melewati ini denganaeiouaAEIOUA
itu akan melakukan sandi kita pada satu karakter. Untuk membuat seluruh fungsi kita, kita harus memetakan ini di seluruh string.sumber
Retina ,
1098 byteCobalah online!
Disimpan 1 byte berkat Neil! Dan satu byte lagi berkat Martin!
Versi baru dari retina memiliki kelas vokal, yang membuat hasilnya sedikit lebih pendek. Transliterasi juga menggunakan kelas "lain". Jadi
to
kelasnya terlihat seperti "aeiouAEIOUA" sedangkanfrom
kelasnya tampak seperti "uaeiouAEIOUA"Ini tidak menimbulkan masalah karena
u
pemetaan keduaA
tidak akan pernah dilakukan karenau
sudah dipetakana
.sumber
T`_o`uvUV
._
dalam dari set akan memperlakukannya secara harfiah, tetapi sepertinya tidak melakukan itu.Y
banyak jadi saya akan mencobanya besok.Perl 5 + -p,
2423 byteCobalah online
-1 byte berkat @DomHastings
sumber
-p
sebagai +1 lagi, sebaliknya kami menganggap bahwa jawaban ini ada di "Perl 5 +-p
".;
pembatas, Anda dapat menyimpan satu byte!Python 3, 62 byte
Buat tabel terjemahan (kamus) dengan metode
str
statisstr.maketrans
. Terjemahkan karakter yang relevan ke karakter tujuan mereka.sumber
x
parameter. Dalam python, fungsi lambda tidak perlu pernyataan kembali.C,
8576676564 bytePort of Java Kevin Cruijssen menjawab . Cobalah online di sini .
Terima kasih kepada Kevin Cruijssen untuk bermain golf 9 byte, untuk Christoph untuk bermain golf 11 byte dan untuk ceilingcat untuk bermain golf 1 byte.
Versi tidak disatukan:
sumber
\0
. Juga, ini tidak berfungsi ketika dikompilasi dengan dentang: tio.run/##S9ZNzknMS///…const char *res = strchr("AEIOU...", 0)
mengembalikan pointer ke terminator dalam string literal.putchar(res[1])
membaca melewati akhir string literal. Dengan gcc ternyata kebetulan menemukan nol byte lain dan kebetulan bekerja, tetapi dengan dentang itu mendapat73 'I'
(mungkin darimain
string literal, "Itu ...", tapi saya tidak memeriksa asm). Jadiputchar
tidak mengembalikan 0, dan kami akhirnya segfault ketika*c++
membaca halaman yang belum dipetakan.f(char*c){for(;*c;)putchar(1[strchr("AEIOUAaeioua",*c++)?:c-2]);}
. Itu saja untuk sekarang saya kira.a[b]==*(a+b)==*(b+a)==b[a]
,. Oleh karena itu1[...]==(...)[1]
R , 43 byte
Cobalah online!
Inilah solusi saya yang dibungkus
cat
untuk membuatnya mencetak dengan lebih baik: Cobalah online!sumber
Jelly , 11 byte
Cobalah online!
sumber
Python 2 ,
796867 byte-1 byte terima kasih kepada @ArnoldPalmer
Cobalah online!
sumber
JavaScript (ES6), 60 byte
Cobalah online!
sumber
s=>s.replace(/./g,c=>'auoieaAUOIEA'.match(".(?=${c})")||c)
only.
=>unlya
Ruby
-p
, 31 byteCobalah online!
sumber
Pyth, 17 byte
Coba di sini
sumber
Japt 2.0,
2521 byteSaya bersenang-senang bermain golf dengan Shaggy ini.
Jalankan di sini.
sumber
S.p(f)
digunakan.Java 10,
9787 byte-10 byte setelah terinspirasi oleh jawaban JavaScript @Arnauld (versi 60-byte) .
Cobalah online.
Penjelasan:
sumber
05AB1E ,
141311 byteCobalah online!
sumber
|
dan»
: Coba online: 11 byte .Retina 0.8.2 , 20 byte
Cobalah online! Tautan termasuk kasus uji.
sumber
APL + WIN, 55 byte
Anjuran untuk input string:
sumber
Mumps, 38 byte
Mumps biasanya tidak menambahkan carriage return, karena saya tidak melihat persyaratan untuk memisahkan input dari output, itu memang terlihat agak aneh saat dijalankan pertama kali. Misalnya, output untuk test case terakhir terlihat seperti ini:
Jika Anda ingin menambahkan carriage return, tambahkan dua byte dengan demikian:
sumber
Vim + tpope / vim-abolish , 30 byte
Solusi alternatif, juga 30 byte:
Menurut meta , jawaban vim dapat menggunakan plugin tanpa penalti byte. Ini bukan jawaban vim, tetapi vim + menghapuskan jawaban.
Abolish adalah plugin yang sangat berguna. Bagian README ini dengan baik menggambarkan bagaimana perintah ini (
Subvert
perintah) bekerja.sumber
CJam ,
2919 byteCobalah online!
-10 byte terima kasih kepada @Peter Taylor
Penjelasan:
sumber
q
daripadal
mengambil input. Kasing uji pertama tampaknya multisaluran. Anda juga dapat mempersingkat"eioua"
untuk_1m<
. Bahkan, Anda bisa melangkah lebih jauh dan bermain golf ini untukq"aeioua"_eu+_1m<er
AutoHotkey , 24 byte
AuotHotkey secara otomatis mengganti huruf dengan huruf besar-kecil.
sumber
PHP, 90 Bytes
Cobalah online
Kode
Penjelasan
75 Bytes jika dijalankan dengan
php -r
menggunakan$argv
sumber
J , 33 byte
Cobalah online!
sumber
str , 18 byte
Cobalah online!
Penjelasan
sumber
PHP, 38 byte
Cukup sederhana, tidak terlalu kreatif, digunakan
strtr
untuk mengganti vokal:Jalankan dengan
echo '<input>' | php -nF <filename>
atau Coba online .sumber
argn
? Jika demikian maka itu tidak valid; Anda harus meneruskan string sebagai argumen dan menggunakannya$argv1]
.-F
flag, maka itu berfungsi dengan input pada baris perintah. Dari opsi-opsi dokumentasi PHP :-F --process-file PHP file to execute for every input line. Added in PHP 5.
Coba mendefinisikan variabel online hanya karena beberapa orang tidak memiliki PHP diinstal secara lokal, dan saya tidak bisa mendapatkan-F
bendera bekerja di TIO.q / kdb +,
3633 byteLarutan:
Contoh:
Penjelasan:
Mencari tahu indeks vokal, tambahkan satu untuk mendorong ke yang berikutnya dan indeks masuk Masih berpikir pendekatan ini dapat ditingkatkan secara signifikan ...
Bonus:
Solusi ** 36 byte (()) saya yang lama yang saya pikir cukup keren, tetapi perlu mengurangi daftar untuk membuatnya kompetitif:
sumber
Arang , 35 byte
Cobalah online!
Metode naif.
Penjelasan:
sumber
PHP , 76 byte
Saksikan berikut ini!
Ini adalah yang terpendek yang dapat saya lakukan dalam PHP.
sumber