2016-10-11 4 views
1

私はこの質問にこだわっている:あなたがリンクを信用していない場合は https://docs.google.com/document/d/1NNgUZtB5wy89DaROVNMy22Hfjt3gbwlq9qkMszU8Bu8/edit?usp=sharing ^リンクLychrel Numbers Javascript?

は、ここで質問です:

ループ:Lychrel番号

大きなプログラム練習

47を取って数字を逆にして追加すると、47 + 74 = 121が得られます。これは回文数字です。これは、数字が逆になっても数字が同じであることを意味します。すべての数字が回文をすばやく生成するわけではありません。例: 349 + 943 = 1292 1292 + 2921 = 4213 4213 + 3124 = 7337 したがって、数字349では、回文に到着するまでに3回の繰り返しが必要でした。

誰もまだそれが証明されていませんが、196のようないくつかの数字は何回繰り返しても回文を生成しないと考えられています。このような番号は、Lychrel Numberと呼ばれています。意外なことに、それ自体がLychrel数である回文数字があります。最初の例は4994です。

整数を1つ読み込み、入力がLychrel数の場合はYES、そうでない場合はNOを出力するプログラムを作成します。さらに、入力番号がLychrel番号でない場合、プログラムは回文と最終回文番号に到着するまでに要した繰返し回数を出力する必要があります。ユーザーの入力を10000未満にすることで、数字が50回の反復で回文になるか、またはLychrelの数字になると仮定できます。

サンプル・プログラムの実行:

入力:349

出力:NO 3 7337

入力:196

出力:YES

入力:89

出力:NO 24 8813200023188

入力:YES

出力は、これは私がこれまで持っているものです。私はそれを働かせるために何をする必要があるのか​​分かりません。私はスタックオーバーフローの新しいですので、私が何か間違っていたら私に知らせてください。ありがとう!

<!doctype html> 
<html> 
    <head></head> 
    <body> 
     Number: <input type='text' id='number' name='number' placeholder='1234'/> </br> 
     Re-enter the same number: <input type='text' id='number2' name='number2' placeholder='1234'/> 
     <button onclick='convert()'>Convert</button></br> 
     <div id='result'></div> 
     <script> 
      function convert(){ 
       var originalNum=parseInt(document.getElementById('number').value); 

       var newNum=parseInt(document.getElementById('number2').value); 
       var x; 
       var total=originalNum; 
       var palindrome=false; 

       for (x=0; x<50; x++) { 
        newNum==newNum.split("").reverse().join(); 
        total+=newNum; 
         if (total==total.split().reverse().join()){ 
          palindrome=true; 
          break; 
         } 
       } 
       if (palindrome) 
        document.getElementById('result').innerHTML=("NO"); 
       else 
        document.getElementById('result').innerHTML=("YES"); 


      } 
     </script> 
    </body> 
</html> 
+0

、彼らが消えることがありますので、良いアイデアではありません。むしろ、文書のテキストを質問にコピーする必要があります。 – Tibrogargan

+0

あなたはそれらが消えているという意味ですか? – Unicornzz

+0

Tibrogargan-おそらく私の質問に答えることができますか? – Unicornzz

答えて

0

おそらくもっと良い方法がありますが、これはうまくいきます。

主な問題は、変数のタイプによってJavaScriptが+演算子で異なることを実行したことです。文字列の場合は文字列を連結しますが、数値の場合は文字列を追加します。これは、異なる演算子の振る舞いに一貫性がないため、特に混乱する可能性があります。すなわち"5" == 5を真と評価する(すなわち、==の場合は文字列を数字に変換するが、+の場合は変換しない)

分割および結合の場合も同様です。それらは引数なしで使用されたときには異なる動作をしますが、互いの逆であるように見えるかもしれません。オフサイトのリソースへのリンク

function lychrelTest() { 
 
    var originalNum=document.getElementById('number').value; 
 
    if (isNaN(parseInt(originalNum))) { 
 
     alert('"'+originalNum+'" is not a number'); 
 
     return; 
 
    } 
 

 
    var result = document.getElementById('result'); 
 
    result.innerHTML = ""; 
 

 
    var current=originalNum; 
 
    var palindrome=false; 
 
    var x; 
 
    for (x=0; x<50; x++) { 
 
     var rev = current.split("").reverse().join(""); 
 
     var attempt = current + "+" + rev; 
 
     current = (parseInt(current) + parseInt(rev)).toString(); 
 
     result.innerHTML += attempt + "="+ current + "<br />"; 
 
     if (current == current.split("").reverse().join("")) { 
 
      palindrome=true; 
 
      break; 
 
     } 
 
    } 
 
    result.innerHTML+=(palindrome?("NO: "+current+" after "+(x+1)+" iterations"):"YES"); 
 
}
<body> 
 
\t Number: <input type='text' id='number' name='number' placeholder='1234'/> 
 
\t <button onclick='lychrelTest()'>Test</button></br> 
 
\t <div id='result'></div> 
 
</body>

+0

私はTibrogarganを愛しています。私の人生はすべて、あなたは単に素晴らしい人間です。すばらしい人生を送って、9時間の拷問をしてくれました。どうもありがとうございます。 -Love、Namita – Unicornzz

+0

Tibrogargan - 実際に何も学ばないように、実際に彼らの仕事や宿題をしなくても、OPを答えに導くことが可能なところでは良い考えです。 –

+0

@EngineerDolleryおそらくあなたは、その冒頭に "納得のいく響きの危険にさらされている"と付け加えるべきです。 – Tibrogargan