Diberikan string, gunakan huruf besar. Dengan huruf besar, maksud saya adalah conTeNT-lENgth
perubahan Content-Length
. Dalam contoh saya menunjukkan string dengan 2 kata dengan -
sebagai batas kata. Namun saya mengharapkan Anda untuk menulis kode untuk string yang berisi sejumlah kata yang dipisahkan oleh satu karakter sebagai batas. Batas ini dapat berubah melintasi string.
Kondisi
- menggunakan
regular expressions
ini tidak diperbolehkan . - mungkin ada sejumlah kata dalam kalimat (string).
- setiap kata akan terdiri dari
English
huruf[a-zA-Z]
apa saja. - kata-kata yang berbeda dalam kalimat akan dipisahkan oleh satu karakter. Karakter ini akan hanya menjadi salah satu dari
-
,.
,<space-character>
,/
,&
,#
. Anda dapat dengan aman berasumsi bahwa kalimat itu tidak akan mengandung karakter lain kecuali yang disebutkan. - batas kata harus dipertahankan dalam output.
- kode menang pendek.
Misalnya program anda harus output Begin/With.Type&Content
untuk BeGin/wITH.tyPE&conTeNt
.
Some test cases:
"aGeNT ACcEpT/LEngTh-tYPe USeR raNgE.TyPe"
"type&AgeNt/CC/COnteNt lEnGth#acCePT/AgeNt.RAnGe-Cc/contEnt/cODe"
"cc/rEspoNCe.lEngtH#tYpE-witH&UsEr/bEgIN&uSer.AGEnT&begIn/aCCEPt/Cc"
"lENgTH#USeR.tYpE/BeGiN&LENGth tYpe/ACCEpt#rANge/codE&AnD-ACCepT/ConTenT"
"contENT/ACcEpT"
"BeGin/wITH.tyPE&conTeNt"
"Code.cc#User.lenGTh-USer-AND&tyPE TypE&leNgtH.tYPe usER.UseR&with"
"RaNgE&COnTeNT WITh CoNTENT-TypE tyPe"
"BEgin COdE#uSeR#aGeNt.USeR"
"TypE LENGth"
/CC/
pada baris 2, atau-AND&
pada baris 7) harus dibiarkan sendiri. Apakah ini oke, untuk tantangan ini?Jawaban:
GolfScript,
362719 karakterPendekatan GolfScript cukup mendasar yang bekerja untuk semua input sesuai dengan spesifikasi. Contoh-contoh dapat diuji secara online .
sumber
Python 3,22
Kode ini akan mengambil string sebagai input dari stdin dan memberikan output yang dikapitalisasi ke stdout.
sebagai contoh:
memasukkan:
ouput:
Kode berikut untuk input multi-jalur (jika perlu)
Python 3, 46
sumber
while 1:print(input.title())
adalah padanan yang lebih pendek untuk potongan kode terakhir.Mathematica 62
Data
Kode
Pemakaian
sumber
%%
%%%
%
%%
JavaScript (94)
sumber
PHP:
78736564 karakterInput diteruskan
$s
. Ini beroperasi pada string sebagai array karakter.Ini adalah mesin 2 keadaan sederhana. Itu bergantung pada urutan leksikal string, dan bahwa parser secara otomatis mengasumsikan Anda bermaksud mengetik string dalam beberapa kasus.
Status sedang disimpan
$b
dan diwakili sebagai nama fungsi yang perlu dipanggil pada karakter berikutnya.ucfirst
danlcfirst
lebih pendek untuk mengetik dan memiliki perilaku yang identik denganstrtolower
/strtoupper
pada string karakter tunggal. Juga, karena hanya berbeda satu huruf, kita dapat menggunakannya secara efisien untuk menyimpan status. Versi asli diperlukan untuk menyimpan status secara eksplisit dalam boolean.Karena gema tidak mencetak apa pun untuk boolean false, saya menggunakan koma dan
!
operator untuk "menyembunyikan" tugas (yang dalam hal ini benar) dalam pernyataan gema. Ini memungkinkan saya untuk menyimpan karakter dengan menghapus{}
.sumber
$b=ord($c)>64;
mencoba$b=$c>"@";
. Atau bahkan$b=$c>=A;
- AFAIR yang melempar peringatan, tetapi praktik pengkodean yang baik bukanlah kebajikan di sini.$b=ucfirst;foreach(str_split($s)as$c){echo$b($c);$b[0]=$c>=A?l:u;}
.C, 83
Mengambil garis
stdin
, menerjemahkannya menjadistdout
. (Lebih sukaSIGINT
keEOF
.)sumber
Powershell: 37 - 43
Bergantung pada bagaimana Anda ingin mengambil input ...
Meminta pengguna untuk input: 43
Ambil input dari saluran pipa: 38
Berikan input sebagai argumen saat menjalankan skrip: 37
CATATAN: Skrip di atas akan mengabaikan semua huruf besar kata, membiarkannya apa adanya. Jika ini perlu diperhitungkan, input harus dipaksa huruf kecil sebelum konversi Judul Kasus. Ini menambahkan 10 karakter ke metode pertama, dan 12 ke dua lainnya.
sumber
foo:bar
.:
(titik dua) tidak terdaftar sebagai pemisah kata dalam aturan # 4, oleh karena itu, AFAICS,foo:bar
harus menghasilkanFoo:bar
, bukanFoo:Bar
. Tapi itu hanya saya (cukup ketat) membaca spesifikasi.get-culture
denganculture
; lihat codegolf.stackexchange.com/a/778/1308Java - 209 karakter
Saya menambahkan baris baru hanya untuk keterbacaan.
sumber
R,
143116Sebuah solusi yang agak lama mungkin tapi di sini kita mulai:
Sedikit ungolfed dan menjelaskan:
Edit : 116 karakter
Tantangan utama di sini adalah membuat vektor
substr
. Inilah cara lain yang tidak terlalu bertele-tele.Bertakuk:
Pemakaian:
sumber
a
terdiri dari karakter huruf kecil, tidak perlu memeriksa kecocokan dengan huruf besarLETTERS
.TRUE
denganT
.tolower
nanti.mapply(substr,tolower(x),n,n)
denganstrsplit(tolower(x),"")[[1]]
untuk menyimpan satu karakter.Befunge 98 -
2445Menulis ini melukai otak saya.
Ini membutuhkan input melalui
~
dan jika karakter sebelumnya adalah salah satu dari pemisah (atau jika tidak ada karakter sebelumnya), itu dijalankanCuplikan ini mengambil karakter, dan jika nilai ascii lebih besar atau sama dengan
a
, ia mengurangi 32 dari itu, sehingga mengubahnya menjadi huruf besar. Jika kurang dari itua
,3*j
lewati penyesuaian. Setelah itu, ia melewatkan bagian selanjutnya. Bagian ini menangani perubahan dari huruf besar ke huruf kecil (saya yakin itu dapat digabungkan dengan bagian berikutnya; Saya hanya tidak yakin bagaimana):Karakter dicetak (
,
), maka ini memeriksa jika karakter adalah salah satu batasan:Ini pada dasarnya membandingkan karakter dengan nilai ascii dari
/
. Jika karakter bukan batas, kode mendorong12
sehingga akan melewati penyesuaian kapitalisasi di waktu berikutnya.#
melompati program akhir:,@
dan jika akhir input tercapai,~
mengirimkan eksekusi kode kembali ke@
, mengakhiri program.sumber
Ruby:
60515047 karakterContoh dijalankan:
sumber
l==l.swapcase
sama denganl<?0
(tidak diuji)? Setidaknya untuk input yang diizinkan untuk tugas ini.C # - 110
Pemrosesan berbasis-negara-mesin sederhana:
(dimana
x
itustring
huruf besar)dan tentu saja, jika Anda ingin membosankan (setelah spesifikasinya diperbarui), Anda bisa menggunakannya
atau, dengan semua boilerplate yang membosankan:
sumber
Microsoft (R) Roslyn C# Compiler version 1.2.20906.1 Loading context from 'CSharpInteractive.rsp'. Type "#help" for more information. > "foobar".Aggregate(new{b=1>0,r=""},(s,c)=>new{b="-. /&#".Contains(c),r=s.r+(s.b?Char.ToUpper(c):Char.ToLower(c))}).r "Foobar"
Tetapi jika Anda benar-benar peduli dengan pelat tungku yang membosankan, tambahkan 112 karakternya.public
danstring[]a
daripublic
, tapi saya butuh argumen, karena itulah yang saya proses ...Javascript 102
sumber
(
... di)
sekitar kondisi ternary. Bahkan lebih, Anda tidak perlu terner kedua:function(c){o+=q?c.toLowerCase():c.toUpperCase(),q='@'<c}
.Keempat, 135
Keluaran yang diterjemahkan ditulis
stdout
saat dibacastdin
.sumber
Befunge-98 (29), C (65)
Karena metode / algoritma hampir sama, saya memasukkan kedua versi dalam posting yang sama. Keduanya bergantung pada melacak apakah karakter terakhir adalah simbol atau huruf, untuk mengetahui apakah huruf kecil atau tidak.
Befunge-98 (29) C (65)sumber
05AB1E , 1 byte
Kode:
Penjelasan:
Cobalah online!
sumber
Excel VBA-11 characters
In the Immediate window
?[Proper()]
VBscript
sumber
=PROPER(A1)
, also 11 bytesAWK,
113103 bytesThis works fine for single line content, but for multiline input a couple inits need to be added
It would be nice if we could take advantage of the automatic splitting of a record into fields and modifying said fields, but we would then lose our field separators. :(
I know this isn't the golfiest of answers and this is a rather old question, but I feel that AWK is underrepresented in the answer-space of CG :)
(Thanks @manatwork for testing the code, it should work now :) Also changed the flow but kept the byte-count the same, by replacing some
;
with newlines.)sumber
gawk
,mawk
ororiginal-awk
. (Tested on Ubuntu.)gawk
on an RHEL6 box, but then transcribed to a windows box. There could very well be a transcription issue. I'll try testing after work when I can do testing and posting on the same machine.... I think I see the issue, anyway.l=0
should beL=0
{for(l=split($0,a,$0="");i<=l;s=a[++i]){$0=$0(L?toupper(s):tolower(s));L=index("-. /&#",s)}}1
.$0
and the1
label to avoid theprint
command are things I haven't thought of doing. I'll have to keep it in mind for future golfing :)PHP (> v5.4.32) - 25 chars
<?=ucwords($a,'-. /&#')?>
Explanation:
ucwords() is a built-in PHP function
First parameter
$a
is the inputSecond parameter is delimeters (non-alphabet chatacters found in test cases)
Return/echo/print is assumed due to use of
<?= ?>
Links:
Code Playground
PHP ucwords() function
sumber
-R
: Try it online! or 42 using arguments: Try it online!T-SQL, 179
Try the SELECT version in SQL Server 2012 here.
Replace "foo" with the input string. The char count is for a zero-length string. This code traverses the string using an index, uppercasing or lowercasing the character at that position based on the previous character.
sumber
JavaScript (Node.js), 70 bytes
Try it online!
I am sure this can be golfed further.
Note :
Takes input via
f(string)()
, the last are required but perform nothing.sumber
Powershell,
7775 bytesThis solution fully meets the task rules (even ambiguous example
foo:bar
).See also the Powershell solution with builtin function ToTitleCase from @Iszi.
Explained test script:
Output:
sumber
QBasic, 74 bytes
Bytes are counted in CP-437;
is a single byte (character code 20).
The input method here is a bit strange: characters are typed one at a time, and their capitalization is converted before they are displayed. So when you type in
aGeNT
, it appears on screen asAgent
. Hitting Enter ends the program.sumber
Python 3, 122 bytes
Try it online!
Not a great score, but I wanted to try it without builtin string operations for case changing.
sumber
PHP - 23 characters
It needs php_mbstring to work
sumber
mb_convert_case("BeGin/wITH.tyPE&conTeNt", 2);
returns “Begin/with.type&content”, not “Begin/With.Type&Content”.