square869120Contest #2 A - IOI列車で行こう2
implementation
私 perl 36byte
#!perl -pl
$_=s/O*I//*(2*s/OI//g+1)
$_=<>;print s/O*I//*(2*s/OI//g+1),$/
O*I
で先頭を削って、削れたならばさらにO+I+
の数を数える。
これはmatchの順序の関係でOI
としてよい。
hanada3355さん bash 33byte
tr O \ |awk '$0=(NF?NF:.5)*2-1""'
O
空白で置換することでI
の繰り返しからなる単語の列となる。
単語数NF
を使って計算している。NF
が$0$の時は$1$にする。
tr O \ |awk '$0=(NF?NF*2-1:0)""'
とすると1B縮む。
climpetさん perl 30byte
@a=<>=~/I+/g;print@a*2-!!@a,$/
方針は同じで、I+
にmatchする部分を全て取り出し、その数を使って計算している。
@a = (<> =~ /I+/g);
print(@a*2 - !!@a, $/);