Latar Belakang
Anda telah diberi tugas untuk membuat catatan untuk rapat. Anda mulai mengetik di Google Doc Anda, tetapi Anda tidak punya cukup waktu selama pertemuan untuk melihat keyboard Anda saat Anda mengetik.
Untungnya bagi Anda, Anda dapat mengetik tanpa melihat keyboard Anda. Setelah pertemuan, Anda menyadari bahwa semua yang Anda ketikkan adalah satu kunci ke kiri.
Tantangan
Untuk tantangan ini, Anda akan menggunakan huruf, angka, dan spasi di tata letak keyboard QWERTY.
Diberikan input teks (dari metode input standar), output teks yang dihasilkan, di mana setiap karakter dipindahkan satu ke kiri pada keyboard.
Untuk sebagian besar huruf, lihat saja surat itu dan terjemahkan ke huruf ke kiri (
c
menjadix
,t
menjadir
, dll).Untuk huruf
q
, terjemahkan ke karakter tab literal (\t
).Untuk huruf
a
, aktifkan caps lock, jadi kapitalisasi sisa string dibalik.Untuk huruf
z
, huruf besar huruf berikutnya dalam string.Tidak diperlukan terjemahan untuk bilah spasi.
Pertahankan penggunaan huruf besar saat menerjemahkan, dan perhatikan caps lock (jika caps lock diaktifkan, pastikan casingnya bertolak belakang).
Semua karakter dalam string input akan berupa huruf, angka, atau spasi. Tidak ada tanda baca atau karakter lain yang bisa dimasukkan.
Uji Kasus
\t
adalah karakter tab literal
Hello world -> Gwkki qieks
Code Golf -> Xisw Fikd
Queried apples -> \tyweuws OOKWA
Mencetak gol
Skor terendah dalam byte menang. Selamat bersenang-senang!
Azerty
wERT
z
, huruf besar huruf berikutnya dalam string -> apakah itu berarti bahwa kita hanya perlu peduli dengan huruf besar huruf dan tidak perlu beralih antara angka dan simbol? Untuk apa output yang diharapkan0123456789
,a0123456789
danz0z1z2z3z4z5z6z7z8z9
? (Selain itu, pada banyak keyboard non-QWERTY, 'Caps Lock' benar-benar bertindak sebagai 'Shift Lock'. Saya percaya bahwa QWERTY tidak mengikuti pola ini, tetapi harus ditentukan untuk kita yang tidak terbiasa dengan itu. )Jawaban:
JavaScript (V8) , 271 byte
Cobalah online! Golf kode JavaScript pertama saya. Pasti bisa lebih pendek, tapi saya pikir ini awal yang baik.
Ini pada dasarnya menemukan setiap karakter dalam
k
string dan menggantinya dengan yang sebelumnya, kemudian menukar kasus segala sesuatu di antaraA
ataua
, dan menghapus semua kejadianZ
atauz
(karena tombol shift tidak melakukan apa-apa pada dirinya sendiri).Ini seharusnya tata letak keyboard QWERTY yang normal, tetapi beri tahu saya jika tidak.
sumber
zebras=>wveA
test case tampaknya salah. Yang pertamaz
harus menyebabkane
mencetak huruf besarw
. Dari OP: "Untuk hurufz
, kapitalkan huruf berikutnya dalam string."Python 3 , 211 byte
Cobalah online!
Menggunakan string pencarian di mana karakter normal dan versi yang dimodifikasi-shift dikelompokkan bersama. Untuk setiap karakter dalam input, itu akan mengambil karakter dua tempat ke kiri. Mengubah kapitalisasi dengan menambahkan
1
(atau-1
jika karakter saat ini adalah huruf besar) ke nilai pencarian saat shift XOR caps lock aktif. Angka tidak dipengaruhi oleh pengubah caps lock.sumber
PHP , 227 byte
Cobalah online!
Saya telah membuat string pemetaan (
~1!2@3#4$5%6^7&8*9(0 qwertyuiopasdfghjklzxcvbnm
) yang untuk setiap digit memiliki mode SHIFT mereka di sebelah kiri dan untuk setiap huruf memiliki huruf / kunci di sebelah kiri mereka.Saya mengulangi karakter input dan untuk setiap karakter:
a
atauA
, caps caps lock dibalik (tidak logis)z
atauZ
, shift flag diatur ke1
.aAzZ
:$t
.1
,$t
dicetak, yang lain, jika digit1
,`
dicetak, jika digit0
,9
dicetak dan sebaliknya,digit-1
dicetak.$t
dicetak dalam huruf kecil atau huruf besar. Satu-satunya kasus khusus di sini adalah karakter tab, yang dicetak apa adanya.0
di akhir.sumber
Merah , 218 byte
Cobalah online!
Saat ini
AaZz
tidak memengaruhi digit.sumber
'A pear' -> ' OWe'
C (gcc) , 276 byte
Berkat ceilingcat untuk -33 byte.
Cobalah online!
sumber
k^=!(l^7)
alih-alihk=l^7?k:!k