2014年1月9日木曜日

[JavaScript] 数字を使わずに数字を表現する


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 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...