LL Golf Hole 2 - 文字列に含まれる単語の最初の文字を大文字にする
Posted feedbacks - Ruby
文字列に含まれる単語について、それぞれの単語の最初の文字を大文字にしてください。
たとえば、"LL future" と与えられたときは "LL Future" と出力する。"LL day and night" と与えられたときは "LL Day And Night" と出力する。
与えられる文字列はリテラルで表記する、標準入力で与えられる、引数で与えられるなどは自由とします。
余力のあるものはこのプログラムを短くしてみたり、短くしてみたり、短くしてください。
※LL Future実行委員の高野光弘です。この出題は LL Future公式の出題であり、優れたものについてはLL Golfのセッションでご紹介させていただくかもしれません。ご理解の上、ご投稿ください。また、LL Futureのチケットは現在も発売中です。よろしければ、メインイベントの方にもぜひご参加ください。
see: LL Golf
1 | ruby -e "p 'LL day and night'.scan(/(\w)(\w*)/).map{|a|a.shift.upcase + a.to_s}.join(' ')"
|
文字列は標準入力で与えます。
お題のコードは、"hello, i am a cat"みたいな文が"Hello, Am Cat"になってしまうような。
1 | ruby -pe'$_.gsub!(/(\w)(\w*)/){$1.upcase+$2}'
|
文字列は標準入力から
1 | ruby -pe'gsub(/\w+/){$&.capitalize}'
|
文字列は標準入力から
1 | ruby -pe'gsub(/\b./){$&.upcase}'
|
#6972 の ruby版。
1 2 | z=gets.split //
puts(z.zip([' ']+z).map{|x,y|y=~/\w/?x:x.upcase}.join)
|
gorubyはKernel.#gsubがないのであまり短くならない。
1 | goruby -pe'$_.gsub!(/\b./){$&.up}'
|
Ruby1.9用。Perlでも動くんではないかと思われます。
1 2 3 4 | $/=' ';%#;$/=~('(?{'.(', =$ )'^'_@|_
@||').'$&`,'.('/-).+`&/-'^'__@@_@@@_').'<>})');"#;(___=->(_,*__){$.=/./=~_
$><<([*?`...$&][$.]&&[*$&...?{][$.]?[*?@..$&][~(/@./=~[*$/..?@]*''+_)]+$':_)
__[$.]&&___[*__]})[*[*$<]]#"
|
1.9でも1.8.6でも動かないと思いますが, 1.8.7ならこんな感じでしょうか?
1 2 | #!ruby -p
gsub /\b./,&:upcase
|
なるほど。
1 | s$<.re.gs /\b./,&:up
|
Rubyが既に8件ありますが,久し振りに投稿. 単語間にタブが…とか細かいことは考えない. 正規表現とか,Rubyの構文とかを見直せばもっと短くなるんじゃないか?
1 2 3 4 | puts gets.gsub(/(^.| .)/){$1.upcase}
# $ echo 'LL day and night'|ruby this_answer.rb
#=> LL Day And Night
|






takano32
#6901()
[
Ruby
]
Rating2/10=0.20
文字列に含まれる単語について、それぞれの単語の最初の文字を大文字にしてください。
たとえば、"LL future" と与えられたときは "LL Future" と出力する。"LL day and night" と与えられたときは "LL Day And Night" と出力する。
与えられる文字列はリテラルで表記する、標準入力で与えられる、引数で与えられるなどは自由とします。
余力のあるものはこのプログラムを短くしてみたり、短くしてみたり、短くしてください。
※LL Future実行委員の高野光弘です。この出題は LL Future公式の出題であり、優れたものについてはLL Golfのセッションでご紹介させていただくかもしれません。ご理解の上、ご投稿ください。また、LL Futureのチケットは現在も発売中です。よろしければ、メインイベントの方にもぜひご参加ください。
see: LL Golf
Rating2/10=0.20-0+
[ reply ]