Beberapa karyawan Anda memiliki kunci capslock yang rusak dan Anda terlalu murah untuk menggantinya. Bantu mereka dengan membuat program sesingkat mungkin untuk memperbaiki pekerjaan mereka! Cukup konversi setiap karakter dalam string yang diberikan dari huruf besar ke huruf kecil dan sebaliknya ... tapi ada twist!
Anda juga sangat bersemangat untuk Natal! Jadi, Anda akan meninggalkan "bug" kecil yang tidak memperbaiki huruf yang berada dalam urutan Christmas
(tidak peka huruf besar-kecil).
Memasukkan
Untuk input Anda akan menggunakan satu string tunggal (atau array byte) yang mungkin berisi baris baru dan ascii antara 0x20 dan 0x7e ( -
~
). Anda tidak perlu khawatir tentang carriage return atau karakter lain yang ada di string.
Keluaran
Keluaran seharusnya hanya berisi string yang disediakan dengan karakter huruf besar dan kecil bertukar (dan bug Natal tentu saja!). Ini dapat berisi hingga satu spasi tambahan ekstra.
Bug Natal
Mari kita jelaskan ini dengan sebuah contoh:
Input: i CAN HARDLY WORK LIKE THIS please GET ME A NEW KEYBOARD FOR cHRISTMAS
Output: I Can HaRdly work lIke thiS PLEASE geT Me A new keyboard for ChriStmas
can
berisi "c" yang merupakan huruf pertama Natal, sehingga tidak berubah. Huruf berikutnya Christmas
adalah "h", yang ada di hardly
(yang juga berisi "r"), sehingga tidak berubah, dll. Itu Christmas
sendiri hanya memiliki satu huruf tidak berubah karena pada saat kode mencapai sana, itu sebenarnya mencari "s", bukan "c".
Setelah urutan ditemukan, ia harus mulai dari awal lagi pada "c", dan mulai mengulangi Christmas
sekali lagi. Jadi ChristmasChristmas
akan dibiarkan tidak berubah.
Uji Kasus
Input: Hello World!
Output: hELLO wORLD!
Input: I like pie :)
Output: i LIKE PIE :)
Input: hELP my KeYboarD
iS BROKEN
Output: Help MY kEyBOARd
Is broken
Input: cHRISTMAS IS COMING REALLY SOON!
Output: cHRISTMAS is Coming really soon!
Input: C is the first letter in cHRISTMAS
Output: C IS ThE FIrST LETTER iN ChriSTMAS
Pemenang
Ini adalah kode-golf sehingga jawaban terpendek menang!
Christmas
jadi "h" diabaikan sampai menemukan "c", lalu mencari "h", lalu "r", dll.Jawaban:
05AB1E , 16 byte
Terima kasih kepada Emigna karena menyimpan byte dan memperbaiki bug!
Penjelasan:
Menggunakan pengkodean CP-1252 . Cobalah online!
sumber
u
akan berfungsi.V ,
38, 36 byteCobalah online! (mengandung input dan output yang diharapkan untuk perbandingan)
Ketika saya pertama kali melihat ini, saya pikir itu akan sangat mudah. Bahkan, jika bukan untuk "Natal" bug, ini akan hanya menjadi 2 bytes:
V~
. Bug natal membuatnya jauh lebih sulit, untuk jawaban yang sangat rumit.Seperti biasa, ini hexdump:
sumber
PHP,
113110102 bytemengambil input dari argumen baris perintah pertama. Jalankan dengan
-r
.kerusakan
sumber
MATL ,
3630 byteString dengan baris baru perlu didefinisikan dengan menyatukan dengan kode ASCII
10
(lihat contoh di tautan dengan kasus uji).Cobalah online! Atau verifikasi semua kasus uji .
Penjelasan
sumber
Pyke,
3125 byteCoba di sini!
sumber
\n
dan mengelilingi input"
maka yaPerl 6 , 84 byte
sumber
C # 197 byte
Tidak akan menang dengan ini, tapi semoga implementasi C # terkecil yang bekerja ...
Penjelasan:
sumber
JavaScript,
12211811410710493 bytesumber
k!=c?k:c.toUpperCase()
untuk menghemat beberapa byte?Perl 6 , 80 byte
Cobalah
sumber
my $i=0;
itu legal. Dan saya tidak akan terkejut jika ada lebih banyak kesalahan sintaksis terkait ruang putih.$/ eq $/.lc
daripada$/.lc eq $/
supaya saya bisa menghapus spasi sebelumnyaeq
.Java 7, 200 byte
Jelek, tapi berhasil .. Pasti bisa dipastikan lagi main golf .. Aku berkarat ..
Tidak Disatukan:
Kode uji:
Coba di sini.
Keluaran:
sumber
Python 100 byte
sumber
Ruby, 63 + 1 = 64 byte
Menggunakan
-p
bendera.sumber
C # 239 karakter
versi yang lebih eksplisit:
ini adalah solusi yang cukup naif, dan mungkin dapat ditingkatkan (mungkin kita dapat mengizinkan konversi implisit ke char?).
ia menganggap berada di dalam suatu fungsi, membaca dari konsol (stdin), dan menulis ke sana (stdout).
sunting: Char.IsUpper (s [j]) lebih panjang 2 byte dari s [j]> 64 && s [j] <91, Char.ToUpper lebih panjang dari versi saya juga.
sumber
Haskell,
222207 Bytesdiperbarui:
Bagaimana itu bekerja:
sumber