バリケンのJavaScript日記 RSSフィード

2006-10-29

[] 「たのしいRuby 第2版」の練習問題をJavaScriptで解く(4)  「たのしいRuby 第2版」の練習問題をJavaScriptで解く(4) - バリケンのJavaScript日記 を含むブックマーク はてなブックマーク -  「たのしいRuby 第2版」の練習問題をJavaScriptで解く(4) - バリケンのJavaScript日記  「たのしいRuby 第2版」の練習問題をJavaScriptで解く(4) - バリケンのJavaScript日記 のブックマークコメント

きょうも「たのしいRuby」の練習問題をJavaScriptで解いてみるよ。きょうはこちら

(9) (,),{,}という4つの文字を要素とした配列があります。この配列に対して、カッコが正しく対応しているかどうかを調べるメソッド、balanced?メソッドを定義してください。なお、「カッコが正しく対応している」とは、

  • (と)の数が同じ
  • {と}の数が同じ
  • 「( )」の対応と「{ }」の対応が交差することはない

といった状態のことです。

p balanced?(["(","{","{","{","}","}","(",")","}","(",")",")"])
#=>true

たのしいRuby 第2版

じゃあ、ぼくの答えだよ。

function is_balanced(ary) {
  var stack = [];
  try {
    ary.each(function(item) {
      switch (item) {
        case "(":
          stack.push(item);
          break;
        case ")":
          if (stack.pop() != "(")
            throw "exit";
          break;
        case "{":
          stack.push(item);
          break;
        case "}":
          if (stack.pop() != "{")
            throw "exit";
          break;
        default:
          break;
      }
    });
    if (stack.length == 0)
      return true;
    else
      return false;
  } catch(e) {
    return false;
  }
}

細かいところは違うけど、基本的には似てるよね。

トラックバック - http://javascript.g.hatena.ne.jp/muscovyduck/20061029