JavaScriptで数値リテラルを使わずに整数を表現する方法を考えてみました。
普段使うことは絶対ありませんが、縛りありのプログラミングコンテストなんかやるときには面白いかもしれない(と、codeiqの問題を解きながら思いました)。
文字列の長さを使う
一番ベタな方法。>>> "".length
0
>>> "a".length
1
>>> "aaa".length
3
>>> Math.pow("aaa".length,"aa".length);
9
Mathの定数を使う
ちょっとずるい気もするけど、工夫次第で色々な数字を作れる。>>> parseInt(Math.E) 2 >>> Math.ceil(Math.PI) 4 >>> Math.floor(Math.PI*Math.E-Math.LOG2E) 7
論理演算を使う
文字リテラルもMathも使わない場合は結構大変。// trueは1 >>> true+true 2
Dateを使う
タイミング依存の最終手段。>>> now = new Date();
>>> now.getFullYear();
2014
// 各桁の和を求める
>>> String(now.getFullYear()).split("").reduce(function(x,y){return Number(x)+Number(y);})
7

0 件のコメント:
コメントを投稿