square869120Contest #2 A - IOI列車で行こう2

,

https://beta.atcoder.jp/contests/s8pc-2/tasks/s8pc_2_a

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;[email protected]*[email protected],$/

方針は同じで、I+にmatchする部分を全て取り出し、その数を使って計算している。

@a = (<> =~ /I+/g);
print(@a*2 - [email protected], $/);