なんだか初めて書くんじゃないか?!再帰のアルゴリズムを利用したプログラム。
今回の質問は
http://oshiete1.goo.ne.jp/qa5779385.html
質問者は、完全にお礼をするつもりは無いようだが、回答してみた。
でも、文字列のチェックは1行でできても、他の部分のプログラムが気になる。
汚いし、理解できない。
ながめていたが、とても理解しようとおもえないので、最初から書いてみた。
今の自分のレベルには、「再帰」は難しい。
普通なら数時間で済むのに、今回は構想だけで数日を費やした。
う〜〜〜ん。どうだろう。
評価してくれる人ほぼ皆無だからな〜〜。
その回答は、以下。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <title>TEST</title> <body> <form action="#"> <p> <input type="text" id="abcde"> <input type="button" value="check" onclick="check()"> </p> </form> <script type="text/javascript"> var getTotalHitNumber = (function ( puller ) { return function ( ary ) { var result = [ ]; var counter = 0; (function ( ary, buf ) { var len = ary.length, i, c, d; if( 1 == len ) result[ buf.join('') + ary[0] ] = counter++; else { for( i = 0; i < len; i++ ) { c = puller( ary, i ); d = buf.slice(0); d.push( c.value ); arguments.callee( c.array, d ); } } })( ary, [ ] ); return result; }; })( function ( a, n ) { for( var r = [ ], i = 0, I = a.length; i < I; i++ ) i == n || r.push( a[ i ] ); return { value: a[ n ], array: r }; }); var hashList = getTotalHitNumber( ['a','b','c','d','e'] ); var check = function ( ) { var v = document.getElementById( 'abcde' ).value, mess; if( v.split('').sort().join('') == 'abcde' ) mess = "その番号は、" + hashList[ v ] + "番です"; else mess = "その番号は、間違いです"; alert( mess ); }; </script>