Untuk tantangan hari ini, Anda harus menulis sebuah program atau fungsi yang mengganti huruf string. Namun, Anda harus mengabaikan karakter non-alfabet. Ini berarti bahwa setiap karakter alfabet harus memiliki huruf yang berbeda dari karakter alfabet sebelumnya dan berikutnya. Ini sedikit lebih kompleks daripada melipatgandakan setiap huruf lainnya misalnya. Jika Anda mengambil string seperti
hello world
dan mengonversi setiap karakter lain menjadi huruf besar, Anda akan mendapatkan:
hElLo wOrLd
Seperti yang Anda lihat, huruf kecil o
diikuti oleh huruf kecil w
. Ini tidak valid. Sebagai gantinya, Anda harus mengabaikan ruang, memberi kami hasil ini:
hElLo WoRlD
Semua karakter non-alfabet harus dibiarkan sama. Output dapat mulai dengan huruf besar atau kecil, asalkan secara konsisten bergantian. Ini berarti yang berikut ini juga akan menjadi output yang dapat diterima:
HeLlO wOrLd
Program Anda harus bekerja terlepas dari kasus input.
String input hanya akan berisi ASCII yang dapat dicetak , jadi Anda tidak perlu khawatir tentang karakter yang tidak diinginkan, baris baru atau unicode. Kiriman Anda dapat berupa program lengkap atau fungsi, dan Anda dapat mengambil input dan output dalam format yang masuk akal. Misalnya, argumen fungsi / nilai pengembalian, STDIN / STDOUT, membaca / menulis file, dll.
Contoh:
ASCII -> AsCiI
42 -> 42
#include <iostream> -> #InClUdE <iOsTrEaM>
LEAVE_my_symbols#!#&^%_ALONE!!! -> lEaVe_My_SyMbOlS#!#&^%_aLoNe!!!
PPCG Rocks!!! For realz. -> PpCg RoCkS!!! fOr ReAlZ.
This example will start with lowercase -> tHiS eXaMpLe WiLl StArT wItH lOwErCaSe
This example will start with uppercase -> ThIs ExAmPlE wIlL sTaRt WiTh UpPeRcAsE
A1B2 -> A1b2
Karena ini adalah kode-golf , celah standar berlaku dan jawaban terpendek dalam byte menang!
cowsay
Jawaban:
JavaScript (ES6),
6663 byteMulai dengan huruf besar.
Uji kasus
Tampilkan cuplikan kode
sumber
s=!s
kerjanya?s
adalah string input,!s
pertama-tama mengevaluasi kefalse
(kecuali string input kosong, dalam hal ini akan dievaluasi ketrue
- tetapi string kosong tidak akan menghasilkan kecocokan apa pun). Setelah itu, itu hanya menjadi operasi boolean standar, bergantian antarafalse
dantrue
. Juga, kami tidak keberatan kehilangan konten padas
saat ini karena sudah digunakan untuk memberi makan.replace()
."A[I"
akan gagal.05AB1E ,
118 byteKode:
Menggunakan penyandian 05AB1E . Cobalah online!
Penjelasan:
sumber
lvy¾Fš}Da½J
apa yang sudah Anda miliki ._.Oh-Five-Ay-Bee-One-Eee
, saya bukan orang yang kreatif.GNU Sed, 33
Skor termasuk +1 untuk
-r
flag to sed.Cobalah online .
sumber
Jelly , 13 byte
Cobalah online!
Bagaimana itu bekerja
sumber
Japt ,
1614 byteCobalah online!
Penjelasan
sumber
,
. Kecuali itu angka (yaitu[12]
), Japt tahu mereka item yang berbeda. Saya yakin Anda bisa menghapusnya&1
juga._m"uv"gT°
Bagus. Saya baru saja akan menyarankan itu.Python 3 ,
8676686663 byte-2 bytes berkat DJMcMayhem
-3 bytes berkat Cyoce
Cobalah online! atau Coba semua test case
sumber
print(end=(2*i).title()[x])
?Alice , 18 byte
Cobalah online!
Penjelasan
Program ini mengikuti templat yang kurang dikenal untuk program ganjil yang berjalan seluruhnya dalam mode ordinal. Versi linear dari kode ini adalah:
Penjelasan kode:
Tanpa menggunakan
l
duplikat, tumpukan setelahnyaN
akan menjadi["helloworld", "helloworld"]
. Saya sangat curiga ini adalah bug.sumber
C (tcc) ,
605756 byteBerkat DigitalTrauma untuk memperhatikan bit 5 adalah satu-satunya perbedaan untuk huruf besar / kecil ASCII.
Terima kasih khusus kepada zch untuk bermain golf tiga byte lagi.
Simpan satu byte lagi dari ide RJHunter
Cobalah online!
sumber
strdup()
mendapatkan pointer untuk membaca-menulis memori dalam kode test-driver.*s&~32|++l%2<<5
untuk menghemat 3 byte.&~33
dengan&95
untuk menyimpan byte lebih lanjut.Java 8, 99 byte
Penjelasan:
Coba di sini.
sumber
(c+"").matches("[A-Za-z]")
atauCharacter.isLetter(c)
menyimpan byte.c>64&c<91|c>96&c<123
. Dan karena sayaint
tetap menggunakan untuk bagianCharacter.toUpperCase(...)
danCharacter.toLowerCase(...)
golf (ini:(char)(c&~32)
dan(char)(c|32)
), saya ragu saya bisa membuatnya lebih pendek dengan salah satu dari mereka.a->{String r="";int i=0,f=32;for(int c:a)r+=(char)(c>64&c<91|c>96&c<123?(f=~f):c);return r;}
??Ruby,
57554741 byteHitungan byte mencakup dua byte untuk opsi baris perintah.
Jalankan misalnya seperti ini:
$ ruby -p0 alternate_case.rb <<< "some input"
Dengan
p0
opsi ini, seluruh input dikonsumsi dalam sekali jalan, dan global magis$.
bertambah menjadi 1. Ini kemudian beralih antara 0 dan 1 dan digunakan untuk menjaga status.Bekerja dengan input multiline; Cobalah online!
Terima kasih kepada Ventero untuk input yang luar biasa - periksa komentar untuk detail.
sumber
$.
kenaikan otomatis dengan setiapgets
panggilan, program lengkap dengan-p
bendera akan lebih pendek ...1&$.+=1
memungkinkan Anda menjatuhkan tanda kurung. Dan untuk kelengkapan demi, ada bilangan bulat global yang lain - itu sayangnya hanya read-only:$$
.-p0
membuat penerjemah membaca semua input yang tersedia dalam sekali jalan - jadi kode Anda hanya dipanggil sekali, memungkinkan Anda untuk bebas menggunakan$.
. Menggabungkannya dengan fakta yanggsub
secara implisit beroperasi seperti$_.gsub!
ketika menentukan-p
membuat program lengkap secara signifikan lebih pendek: 48 karakter untukgsub(/[a-z]/i){[$&.upcase,$&.downcase][1&$.+=1]}
dan 2 untukp0
bendera.-p0
, Anda sebenarnya dapat menyimpan beberapa karakter lagi dalam cara Anda$.
bolak-balik: Karena sekarang dijamin1
ketika kode Anda dipanggil, Anda dapat menggunakan$.^=1
./\p{L}/
( Surat kategori Unicode ) adalah satu karakter lebih pendek daripada/[a-z|/i
.Brachylog , 25 byte
Cobalah online!
Ini panjang dan lambat.
Penjelasan
sumber
MATL ,
1615 byteCobalah online! Atau verifikasi semua kasus uji .
Penjelasan
Pertimbangkan masukan 'halo dunia'
'
sumber
Perl 6 ,
3230 byteCobalah
Cobalah
Diperluas:
sumber
q / kdb +,
514238 bytesLarutan:
Contoh:
Catatan:
sumber
V ,
17, 13 byteCobalah online!
Atau Verifikasi semua test case!
HeXdUmP:
Penjelasan:
Ini menggunakan regex terkompresi ️, jadi sebelum menjelaskannya, mari rentangkan regex keluar:
The
VU
bertobat segalanya menjadi huruf besar. Lalu kita jalankan ini:Jawaban lama / lebih menarik:
sumber
PHP, 71 Bytes
Cobalah online!
sumber
CJam ,
2624 byteCobalah online!
Penjelasan
sumber
Pyth, 11 byte
Coba di sini
Penjelasan
sumber
PowerShell, 86 byte
Masukan adalah a
[char[]]
array.Komentar dalam kode untuk penjelasan
sumber
Haskell,
10583 +24 + 1 byte pemisah =1088688 BytesFungsinya
(1#)
, mulai huruf kecil. Cobalah online!Yang menyedihkan adalah ini lebih panjang dari Java dan jawaban C #Terima kasih kepada Ørjan Johansen karena telah menghemat 22 byte dengan menggabungkan tiga baris menjadi satu!sumber
f#(x:y)|isLetter x=([toUpper,toLower]!!f)x:(1-f)#y|1>0=x:f#y
1#
tidak dihitung sebagai fungsi anonim. Dalam pemahaman saya, seseorang harus dapat mengikat fungsi anonim ke pengidentifikasi, tetapi misalnyaf=1#
tidak akan berfungsi. Sebagai gantinya Anda membutuhkan bagian(1#)
untuk +2 byte. Ini juga secara implisit dinyatakan dalam pedoman komunitas kami untuk bermain golf di Haskell , meskipun mungkin itu harus diadaptasi untuk secara eksplisit menyebutkan kasus ini.Google Sheets, 264 byte
Ini berantakan besar tetapi sedikit lebih mudah jika Anda mengembangkannya:
Logika semu akan berjalan seperti ini:
sumber
Perl 5 , 24 byte
23 byte + 1 byte untuk
-p
.Berkat @Dada untuk -2 byte.
Cobalah online!
sumber
\pl
bukannya[a-z]
2 byte tho :)[a-z]
sebagai gantinya!). Jika Anda bertanya-tanya, itu berasal dari perlrecharclass ;)Retina , 46 byte
Cobalah online! Termasuk kasus uji.
sumber
C 64 byte
Mengambil keuntungan dari pengkodean ascii di mana huruf besar dan kecil diimbangi dengan 0x20.
sumber
char
dan*s
Retina , 32 byte
Cobalah online!
Pertama mengonversi input menjadi huruf besar, dan kemudian mengelompokkan input ke dalam kecocokan yang berisi hingga dua huruf kapital. Satu-satunya waktu itu hanya akan berisi satu huruf adalah jika huruf terakhir tidak memiliki pasangan. Kemudian menurunkan huruf pertama dari setiap pertandingan ini.
Pada
01
tahap kedua diterjemahkan secara kasar ke: jangan mengubah perilaku tahap ini berdasarkan nomor pertandingan, tetapi hanya menerapkan perubahan pada karakter pertama dari setiap pertandingan.sumber
PHP 5, 54 byte
sumber
C #, 100 byte
sumber
Groovy, 79 byte
sumber
Python 3 , 192 byte
Cobalah online!
sumber
Cembung , 16 byte
Cobalah online!
Convex pelabuhan jawaban @business Cat .
sumber