Tujuannya adalah, setelah mengambil string sebagai input, menduplikasi setiap huruf latin dan "beralih" kasusnya (yaitu huruf besar menjadi huruf kecil dan sebaliknya).
Contoh input & output:
Input Output
bad bBaAdD
Nice NniIcCeE
T e S t Tt eE Ss tT
s E t sS Ee tT
1!1!1st! 1!1!1sStT!
n00b nN00bB
(e.g.) (eE.gG.)
H3l|@! Hh3lL|@!
Input terdiri dari simbol ASCII yang dapat dicetak.
Anda tidak boleh menduplikasi huruf, angka, karakter non-latin.
Jawaban:
Jelly, 5 byte
Cobalah online!
Bagaimana itu bekerja
sumber
Python,
5654 byteUji di Ideone .
sumber
*
memiliki prioritas lebih tinggi daripada+
, sehingga hanya mempengaruhic
kasus bertukar.JavaScript ES6,
70686664 byteDisimpan 2 byte berkat @Kevin Lau - bukan Kenny
Disimpan 2 byte berkat @ Cᴏɴᴏʀ O'Bʀɪᴇɴ
Penjelasan
Ini menggunakan benar-benar hacky:
yang ungolfed adalah:
Pada dasarnya
l < "a"
memeriksa apakah titik kode huruf kurang dari titik kodea
(oleh karena itu menjadi huruf besar). Jika itu akan dilakukanto + Low + erCase
yang menjadil['toLowerCase']()
dan membuat karakter huruf kecil.`
kutipan memungkinkan pemformatan string sehingga pada dasarnya Anda dapat memikirkan:sebagai:
"to" + (l<"a" ? "Low" : "Upp") + "erCase"
yang menghasilkan fungsi untuk memanggil (membuat string huruf besar atau kecil). Kami menempatkan ini dalam tanda kurung siku[ ... ]
yang memungkinkan kami mengakses properti yang diberi namanya sebagai string. Ini mengembalikan fungsi yang sesuai dan kemudian kita sebut saja.sumber
/[A-Z]/gi
adalah regex yang lebih pendek: 3to${l<"a"?"Lower":"Upper"}Case
keto${l<"a"?"Low":"Upp"}erCase
l[`to${l<"a"?"Low":"Upp"}erCase`]()
Saya pikir kita memiliki definisi baru tentang kejahatan.Ruby,
3733 (30 +-p
bendera) byteswapcase
untuk menyelamatkan! Semacam. -4 byte dari @Lynn.sumber
gsub(/[a-z]/i){$&+$&.swapcase}
ditambahp
bendera adalah 31 byte.p
benderanya(space)-p
alias 3 byte.C,
6360 byteMenggunakan fakta bahwa
'a' XOR 32 == 'A'
, dll.Tiga byte disimpan berkat FryAmTheEggman.
sumber
s++
terakhirputchar
(&&putchar(32^*s++)
) untuk menyimpan satu byte&&
dengan*
, bukan?&&
perilaku hubungan arus pendek bekerja.f(char*s){isalpha(putchar(*s))&&putchar(32^*s);*s&&f(1+s);}
rekursif?f(char*s){*s&&f(1+s,isalpha(putchar(*s))&&putchar(32^*s));}
rekursif?CJam, 11 byte
Uji di sini.
Penjelasan
sumber
Pyth , 7 byte
Suite uji .
sumber
Python 3.5,
6056 byte:Program lengkap. Akan mencoba bermain golf lebih banyak.
Cobalah secara Online! (Ideone)
sumber
Haskell, 73 byte
sumber
Cheddar ,
118104 byteJawaban Cheddar asli pertama !!! Ini jauh lebih klimaks daripada yang saya kira ...; _;
Bekerja dengan rilis 1.0.0-beta.9 , non-bersaing.
Seperti yang Anda tahu saya tidak merancang cheddar menjadi golf: /
Tidak Disatukan:
Pemakaian:
Memperbarui: 7/14/16 Saya telah menyelesaikan berbagai proses pembuatan hingga 84 byte
Cheddar, 84 byte
bekerja pada versi v1.0.0-beta.14
sumber
Retina,
282721 byteItu adalah tab, bukan spasi.
Cobalah online
Terima kasih atas saran semua orang.
sumber
[A-Za-z]
->i`[A-Z]
_
. Saya akan menggunakan tab agar saya dapat menguji semua kasus uji sekaligus.C,
8780Pass string sebagai input
f()
dan output ditulis ke STDOUT. String tidak dimodifikasi.sumber
sed, 30 byte
Kode 29 byte + parameter 1 byte
-r
Pemakaian:
sumber
J,
3129 bytePenjelasan
sumber
Haskell,
121, 101, 85,82sumber
isLower
lebih pendek dari konstruk denganelem
, selama 5 byte lebih.>>=
adalahconcatMap
(atauconcat.map
) dengan argumen membalik:f n = n >>= (\x->if isAlpha x then[x,r x]else[x])
. Anda bisa pergi pointfree dan menghilangkan nama fungsi dan mengganti definisif
dengan(>>= \x->if isAlpha x then[x,r x]else[x])
.otherwise
Anda dapat menggunakan ekspresi apa pun yang mengevaluasiTrue
, misalnya1<2
. Anda dapat menggantiif .. then .. else
dengan daftar pemahaman:\x->[x]++[g x|isAlpha x]
. Oh, dan ada bug: keduatoUpper
dig
harus menjaditoLower
.[x]++
adalahx:
.Perl, 36 byte (35 +
-n
bendera)(
-p
tag dibutuhkan)(-2 byte terima kasih kepada @Dom Hasting)
Penjelasan singkat:
ord
mengembalikan nilai numerik char.ord(any lower case) >= 97
, danord(any upper case) <= 90)
.Jalankan dengan:
sumber
/i
atau regexp Anda akan cocok dengan beberapa codepoint antara huruf.Ruby,
31 + 1 = 3230 + 1 = 31 byteDengan
-p
bendera, jalankanMengambil keuntungan dari fakta yang
swapcase!
akan mengembalikannil
apa pun kecuali surat ASCII, yang diterjemahkan menjadi string kosong ketika dikembalikan keluar darigsub
blok. @Jordan menyimpan byte dengan menangkap karakter sebelumnya dengan melihat ke belakang.sumber
//
dan kemudian menggunakan$`[-1]
itu pintar.gsub(/(?<=(.))/){$1.swapcase!}
. Konsep dasar yang sama, jadi jangan ragu untuk menggunakannya..swapcase!
. (Maksudku, lepaskan!
.)R,
1911871681569899 byte99 byte karena peningkatan dari Giuseppe dan MickyT .
sumber
readline()
dapat digunakan, tetapi akan dikenakan biaya satu bytescan
akan bekerja dengan input yang diberikan terbungkus dalam tanda kutip (seperti yang sering terjadi untuk argumen baris perintah dalam bahasa lain)05AB1E , 7 byte
Kode:
Penjelasan:
Menggunakan pengkodean CP-1252 . Cobalah online!
sumber
Pyke,
86 byteCoba di sini!
sumber
V , 21 byte
Cobalah online!
Terlalu banyak byte ...
sumber
Sebenarnya, 8 byte
Cobalah online!
Penjelasan:
sumber
MATL,
119 byteCobalah secara Online
Penjelasan
sumber
Perl,
282221 byte (20 +-p
bendera)sumber
$"
alih-alih' '
, tapi saya belum menguji.Stax ,
76 byteBerkat @recursive untuk satu byte yang disimpan!
Jalankan dan debug di staxlang.xyz! (tautan ke versi yang sudah dibongkar)
Dibongkar (7 byte):
Penjelasan:
sumber
u
alih-alih:g
. Ini akan mendapatkan semua elemen unik dalam sebuah array, yang persis seperti yang Anda inginkan dalam kasus ini. Selain itu, ini terlihat golf dengan baik.123
. Anda mungkin perlu mengubah format untuk semua input (yaitu mengutipnya). Tautannya juga rusak. Anda harus menggantim=11
denganm=2
. Ada tombol penghasil pos PPCG di staxlang.xyz sehingga Anda mungkin ingin menggunakannya.Python, 59 byte
Diedit untuk memperbaiki karakter non-alfabet berulang
sumber
Julia, 40 byte
Cobalah online!
sumber
not s is (list comprehension)
oke, Julia ...PHP 4.1, 57 byte
Kode ini mengasumsikan akses melalui server web (Apache, misalnya), menggunakan konfigurasi default.
Anda dapat melewati string dengan mengirimkan kunci
S
dengan cara apapun (POST
,GET
,COOKIE
,SESSION
...).sumber
C #,
8271 byteC # lambda di mana input dan output berada
string
. Cobalah online .11 byte berkat trik @ Lynn.
sumber
Gangguan Umum (Lispworks), 262 byte
ungolfed:
Pemakaian:
sumber