2/28/2007

SRM 330 div1 level1

条件分岐とテストケースの問題。こういう問題はテストケースが面倒くさい。

解説によれば、面倒くさくない!

<、>、<-、<=、->、=>、・・・が含まれるか indexOfでチェックして一番長いのを返せばよい!
矢軸の長さを0から最大長までループすれば簡単!やられた!

以下はくそまじめにやる方法。


単純に文字を読んでいき、今読んでいる文字が矢印の一部になると想定して、現在の左端の矢尻"<>"と矢軸"-="をそれぞれchar tail, bodyに覚えておく(tail, bodyはない場合もあるので' 'も可)。また、今の矢軸の長さも覚えておく(bodylength)

基本的に以下のようになるが、うまくまとめるとIF文は少なくなる。
面倒くさい。

tail body now
< - > bodylength+1で終了、bodylength=0, body=' ' tail = '>'
< - < bodylength+1で終了(←)、bodylength=0, body=' ' tail = '<'
< - - bodylength++
< - = bodylength+1で終了(←)、bodylength=1, body='=', tail=' ',
< = > bodylength+1で終了、bodylength=0, body=' ' tail = '>'
< = < bodylength+1で終了(←)、bodylength=0, body=' ' tail = '<'
< = - bodylength+1で終了(←)、bodylength=1, body='-', tail=' ',
< = = bodylength++
< > bodylength+1で終了(<)、bodylength=0, body=' ' tail = '>'
< < bodylength+1で終了(<)、bodylength=0, body=' ' tail = '<'
< - bodylength++、body='-'
< = bodylength++、body='='
> - > bodylength+1で終了(→)、bodylength=0, body=' ' tail = '>'
> - < bodylength=0, body=' ' tail = '<'
> - - bodylength++
> - = bodylength=1, body='=', tail=' ',
> = > bodylength+1で終了(→)、bodylength=0, body=' ' tail = '>'
> = < bodylength=0, body=' ' tail = '<'
> = - bodylength=1, body='-', tail=' ',
> = = bodylength++
> >
> <
> -
> =
  - >
  - <
  - -
  - =
  = >
  = <
  = -
  = =
  >
  <
  -
  =