Teman saya membuat penerjemah bahasa Inggris beberapa hari yang lalu, artinya mengambil string dan mengonversi s => th dan S => Th. Itu cukup lama dan saya pikir itu bisa bermain golf.
Jadi tugasnya adalah membuat program / fungsi yang mengambil string input, menerjemahkannya ke lisp dan output string
Kasus cobaan
Sam and Sally like Sheep Tham and Thally like Thheep
Sally likes sausages Thally liketh thauthageth
Sally sells seashells Thally thellth theathhellth
Perhatikan bahwa tidak masalah jika dia diulang sepanjang waktu
Ini kode golf sehingga jawaban terpendek menang
s
atauS
dimanapun di dalamnya.LOOK OUT A SNAKE!!! -> LOOK OUT A THNAKE!!!
Jawaban:
Lithp Umum, 62
Pertama,
(read)
input (harus berupa string). String dalam CL adalah urutan sehingga kami gunakanmap
untuk beralih pada setiap karakter. Argumen pertama yangmap
merepresentasikan tipe hasil (mis. Saya bisa membuat daftar dari vektor). Ketika itunil
, alias()
, hasilnya dibuang. Fungsi yang dipetakan ke input cukupprinc
(cetak tidak terbaca) setiap karakter, kecuali yang harus diganti.sumber
s
denganth
, seperti yang dilakukan orang lain: lihat jawaban Pyson itu.s
->th
,S
->Th
,th
->th
,Th
->Th
.(defmacro cathe (&rest args) `(case ,@args))
Retina, 9 byte
Cobalah online!
Jawaban yang jelas.
sumber
JavaThcript ETh6, 38 byte
Pada awalnya saya pergi dengan solusi yang jelas
Tapi saya memutarnya 4 byte
Ini menggunakan
i
bendera regex , yang mencari pola case-sensitive. Hal yang baik tentang Javascript adalah Anda dapat menentukan fungsi anonim untuk menangani penggantian (regex).Coba di sini
sumber
'Tt'[b>'r']+'h'
, tetapi panjangnya samaGNU Sed - 17
Jawaban yang jelas.
sumber
Jelly , 13 byte
Mematikan atom trantlate Jelly yang baru. Cobalah online!
sumber
Python 3 - 40 byteth
Golf pertama!
Ia menggunakan metode penerjemahan
str
modul yang menerima tabel terjemahan. Tabel terjemahan sederhana dengan kode kunci sebagai kunci dan di tempat itu sebagai nilai.dict
str
sumber
JavaThcript ETh6, 43 byteth
Tetht Thuite:
sumber
V , 11 byteth
Cobalah online!
Dengan bahasa yang saya buat. Itu tidak finithed, tapi itu benar-benar bagus di regekth.
sumber
C, 50 byte
Ganti
\1
dengan\x01
byte yang sebenarnya .jimmy23013 menyimpan satu byte, dan kemudian saya menyimpan dua lagi menggunakan pendekatannya! Terima kasih.
sumber
&c
parameternya rusak. Tapi itu tidak, karena pada arsitektur little-endian byte kedua yangint
akan0x00
dan benar-benar mengakhiri "string" ... Ini sangat pintar, aku menyukainya!s(c){c=getchar();c+=c-83&~32?0:26625;s(printf(&c));}
char
.'h\1'
05AB1E,
1412 byteJawaban lurus ke depan.
Cobalah online
Disimpan 2 byte berkat @Adnan
sumber
Java,
7165 byteUsaha pertama bermain golf, jadi mengapa tidak dengan Jawa.
sumber
replace
sebagai gantireplaceAll
s->s.replace("S","Th").replace("s","th")
GNU AWK, 31 byte
Hanya menggunakan
gsub
fungsi untuk menerjemahkan S yang lebih rendah atau lebih tinggi melalui regex dan mencetaknya sesudahnya. Dapat bekerja dengan file, atau denganstdin
seperti dalam hal inisumber
CJam, 15 byte
Uji di sini.
Penjelasan
sumber
Python3 - 46 byte
Turun 4 byte dengan bantuan @DenkerAffe !
sumber
lambda s:s.replace("s","th").replace("S","Th")
sedikit lebih pendek.C # 6.0 - 58 byte
Mengambil string input sebagai argumen ke fungsi.
sumber
Haskell, 36 byte
sumber
f's'=...
Char
...Karat, 46 byte
Cobalah online!
sumber
PHP, 42 Bytes
jika dijalankan dari file:
Jalankan sebagai:
sumber
php -d error_reporting=0
untuk menekan pemberitahuan.TI-Basic, 126 byte
sumber
Str1
tidak pernah berubah, danAns
akan menyimpan nomor di bagian akhir.Str1
kembali ...Java, 101 byteth
Perhatikan bahwa ini adalah program yang lengkap tidak seperti jawaban Java sebelumnya .
Bonus (harus diumpankan ke
C preprocessor,THE preprothethor THEE terlebih dahulu):sumber
Pyth, 14 byte
Suite uji
Terima kasih kepada @LeakyNun karena menemukan kesalahan ketik!
sumber
MATL , 17 byte
Cobalah online!
Penjelasan
sumber
Python 3, 53 byte
Pemakaian:
sumber
lambda s:s.replace("s","th").replace("S","Th")
Penggunaan:(lambda s:s.replace("s","th").replace("S","Th"))(s)
Bahasa GameMaker, 74 byte
sumber
Matlab, 39 byteth
Pendekatan langsung:
sumber
Emacth Lithp, 61 byteth
Emacs Lisp mencoba untuk menjadi pintar ketika mengganti teks, tetapi kecerdasan itu rusak ketika string yang diganti hanya membutuhkan satu ruang, yaitu huruf kapital S. Untuk mencegah hal ini dari mengubah "Sam dan Sally" menjadi "THam and THally", seluruh kata lebih cocok sebagai gantinya. Namun, ini juga menangani "SAM dan Sally" dengan cara yang diinginkan, yaitu memproduksi "THAM and Thally".
sumber
kode mesin x86, 19 byte
Dalam hex:
Input::
ESI
string input,:EDI
buffer output.Membongkar:
sumber
test al, 'S'
untuk memeriksa keduanya sekaligusMenembus 98,
3749 byteVersi asli :
Mengakhiri edisi, sesuai konsensus:
Ini meninggalkan lubang klakson besar dalam kisi kode yang tidak begitu saya sukai. Saya akan melihat itu ketika saya punya waktu.
Byte ke-49 adalah ruang di akhir baris kedua, termasuk untuk memiliki kotak persegi panjang, yang diperlukan untuk mencegah ccbi (dan mungkin penerjemah lain) dari menyadap dan mencetak garis "Th" yang tak terbatas.
sumber
35 Byteth of Julia:
Cobalah online! (termasuk semua kasus uji)
sumber
SpecBASThpecBATh - 53 bytesumber