久しぶりのClash of Codeの問題を解いてみました
最後たまたまワンライナー(1行のプログラム)になって、
ワンライナーの制作過程の情報ってあまりないかもと書いてみました。
概略
最初、普通に問題を解いて、無駄な変数を取っていく
1つのルーチンに別の代案が思い浮かんで置き換える
ワンラインにしてみる
世の中には頭の中だけで作れる人もたくさんいそうですが、
私の場合は手を動かして、何度かチューニングしていく感じです。
実際に解いた問題
+-++--009999 といった数字を簡潔にする
頭の+-は掛け合わす感じで、うしろの数字は頭の0を取る
-0と0は0表記
最初に作成したもの
+を全部取る(計算には不要だったりする)
ーのを数を数えておく
ーも全部取る
ーの数が奇数ならーを頭に足す
int型に変換してから表示(頭の0は取ってくれて、-0も0にしてくれる)
作っていて思いついたこと
+を取ったら頭は全部ーになる マイナス2つを全部取ってしまうと奇数なら最後ひとつ残る
最後に
一次的に代入した変数で一箇所しか使わないものを直に置き換えていく
いっきにやろうとするとバグが発生した時の解析が大変なので
ちょこっとずつ動かしながらがコツかもしれません