naiの日記

ソフトウェアエンジニアから放射線科診断医にジョブチェンジしました。趣味のことを書きます。

332. Soroban Fixed

終了しました。


ループカウンタをどのように設定するかが一番のポイントだったようです。
1・4・10回目のループは珠でなくそろばんの枠を出力しなければならないので、1・4・10回目が簡単な条件式で判定できなければなりません。
自分は1から2ずつ増やしてi=1,7,19のときに枠を出力するようにしました。7と19が素数のため133%iで判定できます。
ところがnnさんのコードはi=9からのカウントダウン方式。判定はi%9%6で私のコードと同じく5Bとできるし、iの値がそのままforの条件式に使えるなど、さまざまな利点があります。言われてみれば納得ですが、こういうのを思いつけるのはすごいです。
その他、珠を出力するところでも自分のコードはやや冗長だったようです。うーん、やっぱりもっと考えないとな。

唯一自分が勝っていたのは"=*="を出力するところでstrlenを使っていないところだけでした。
実はかなり後半までstrlenを使っていたのですが、ある程度縮んだにも関わらずalnumがダントツのトップだったので、これは皆さんstrlenは使っていないに違いないと考え最終コードに到達しました。
なので半分カンニングのようなものです……


さて、post mortemで自分が130BをSubmitしたわけですが、コードをご覧になれば分かる通り私はほとんど何もしていません。
なのでこのまま終わるのもアレかと思いどうにか縮まないかいろいろ試してみたのですが、やはり難しいですね……。
実は改行にputsを用いたコードが思いの外縮んだのですが、惜しくも130B止まりでした。悔しいので後でまた挑戦します。