私自身が表題の問題を解いた時のプログラムについて解説します。
問題の詳細は「出る杭はいいぞ」(CodeIQ)を参照してください。
出る杭はいいぞ
仕様
a-zの小文字で構成される文字列の真ん中の文字を大文字に変換してください。
文字列の文字数(N)が奇数の場合は N/2 の小数点以下を切り上げた位置を「真ん中」とします。
文字列の文字数(N)が偶数の場合は (N/2 + 1) の位置を「真ん中」とします。
標準入力
【例】
- a-zの小文字で構成される文字列が入力されます
- 文字列の文字数は 1-10 文字とします
- 入力は5行固定です。行単位で真ん中の文字を大文字にしてください
c
vb
awk
java
scala
標準出力
※真ん中の定義については 仕様 をご確認ください
- 標準入力の各行の真ん中の文字を大文字にしてください。
【例】
C
vB
aWk
jaVa
scAla
その他の仕様
・標準入力の末尾には改行があります
・標準出力の末尾に改行をつけてください
・標準入力の仕様で説明した内容以外の入力は行われません(不正入力に対するチェックは不要)
Samples
Sample1
標準入力
c
vb
awk
java
scala
標準出力
C
vB
aWk
jaVa
scAla
Sample2
標準入力
oz
ada
perl
basic
python
標準出力
oZ
aDa
peRl
baSic
pytHon
Sample3
標準入力
php
ruby
cobol
kotlin
fortran
標準出力
pHp
ruBy
coBol
kotLin
forTran
Rubyで解答しています。
#!/usr/bin/ruby def toCenterUpper(line) line[line.size/2] = line[line.size/2].upcase return line end # main while line = gets line.strip! if line.empty? then next end puts toCenterUpper(line) end
簡単な文字列操作です。
入力値をtoCenterUpper()関数に渡した結果を印字します。
引数の文字列の長さの1/2(端数切り捨て)位置の文字を大文字に変換すれば終わりです。Rubyの文字列は文字の配列としてアクセス可能で要素番号は0始まりのためこの方法で仕様通りになります。