Panda Noir

JavaScript の限界を究めるブログでした。最近はいろんな分野を幅広めに書いてます。

ろんりてきに考えてプログラミングしよう!

私もあまりできてない気がします。というか、事実前提結論が基本とかいいつつ背理法やら演繹とかわけがわからなくなってきました。まあ、間違えてたらご指摘ください。

はじめに

今回取り上げるのはゼロフィル(zero fill)です。日本語に直すとゼロで満たすみたいな意味です。例えばカレンダーなどで先頭が0のものとかみますよね。Mars 01とか(このブログの日時のところがちょうどそうなってますね)

どうやるの?

では順番立てて考えて行きましょう。結局論理的に考えるというのは筋道立てて考えることなのでしょうから。

まず参考サイトを御覧ください。このサイトのコードの筋道立てた考え方を説明します。自分で書いたものではありませんがいいのです。むしろこのきれいな論理を説明しようと思ったのでこの記事を書きました(注意:独学のため完璧な論理的思考ができるわけではありません)。

参考サイトでは私のような凡人のようにifを使って分岐させて0を足すという方法を使っていません。いちいち場合分けするのが大変だからですね。ただ、この方法はヒントにはなります。

この方法は例えば4桁の数字のゼロフィルをする場合、渡された数が1桁なら0を3つ足す。渡された数が2桁なら0を2つ足す。渡された数が3桁なら0を1つ足す。これはつまり1桁増えると足す0の数を1つ減らしています。見方を変えると渡された数が0を押し出しているように見えませんか?

ここがポイントです。渡された数が0を押し出すのです。押し出して、下4桁を取得。こうすればいいのです。つまり.slice(-n)で下からn桁を取得出来ます。これらをコードにすれば終わりです。

終わりに

やはり論理って難しいですね。書いていて混乱してしまいました。指摘はコメントからどうぞ