Guest User

Untitled

a guest
Feb 20th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.62 KB | None | 0 0
  1. /*
  2. var Y_MAX = "99999";
  3. var X_MAX = "99999";
  4. initialize();
  5. */
  6.  
  7. function PalindromeFinder(x, y) {
  8. this.Y_MAX = x;
  9. this.X_MAX = y;
  10. this.doit = function(){
  11. start = new Date();
  12. var result = this.calc(this.X_MAX,this.Y_MAX);
  13. end = new Date();
  14. print(result[0]*result[1] + " = " + result[0] + " * " +result[1] +
  15. " ( " + (end.getTime() - start.getTime()) + " msec)");
  16. };
  17. this.calc = function(x, y) {
  18. var maxset = [0, 0];
  19. for (i=x; i>0; i--) {
  20. if (maxset[0]*maxset[1] > (i*y)) {
  21. break;
  22. }
  23. for (k=y; k>0; k--) {
  24. //print("("+i+","+k+")");
  25. if (this.isPalindrome(i*k)) {
  26. //print("isPalindrome!");
  27. if (maxset[0]*maxset[1] < (i*k)) {
  28. maxset = [i, k];
  29. }
  30. break;
  31. }
  32. }
  33. }
  34. return maxset;
  35. };
  36. this.isPalindrome = function(value) {
  37. value = new String(value);
  38. var center = value.length / 2;
  39.  
  40. var first = value.substring(0, center);
  41. var last = value.substring(center, value.length);
  42. if (first == this.inverse(last)) {
  43. return true;
  44. } else {
  45. return false;
  46. }
  47. };
  48. this.inverse = function(value) {
  49. var rtnVal = "";
  50. for (index = value.length; index > 0 ; index--) {
  51. rtnVal += value.charAt(index-1);
  52. }
  53. return rtnVal;
  54. };
  55. }
  56.  
  57.  
  58. var Palindrome = {
  59. doit: function(){
  60. start = new Date();
  61. var result = calc3(X_MAX,Y_MAX);
  62. end = new Date();
  63. print(result[0]*result[1] + " = " + result[0] + " + " +result[1] + " ( " + (end.getTime() - start.getTime()) + " msec)");
  64. },
  65.  
  66. calc3: function(x, y) {
  67. var maxset = [0, 0];
  68. for (i=x; i>0; i--) {
  69. if (maxset[0]*maxset[1] > (i*y)) {
  70. break;
  71. }
  72. for (k=y; k>0; k--) {
  73. //print("("+i+","+k+")");
  74. if (isPalindrome(i*k)) {
  75. //print("isPalindrome!");
  76. if (maxset[0]*maxset[1] < (i*k)) {
  77. maxset = [i, k];
  78. }
  79. break;
  80. }
  81. }
  82. }
  83. return maxset;
  84. },
  85.  
  86. calc2: function( x, y) {
  87. var maxset = [0,0];
  88. while (true) {
  89. if (x < 1 || y < 1) {
  90. break;
  91. }
  92. // $("#calc").append(x + " * " + y + " = " + (x*y) + "<br>");
  93. if (isPalindrome(x*y)) {
  94. if ((maxset[0]*maxset[1]) < (x*y)) {
  95. maxset = [x, y];
  96. }
  97. x--;
  98. y = Y_MAX;
  99. } else {
  100. if (x == y) {
  101. x--;
  102. y = Y_MAX;
  103. } else {
  104. y--;
  105. }
  106. }
  107. }
  108. return maxset;
  109. },
  110.  
  111. calc: function(x, y) {
  112. var maxset = [];
  113. (function f(x, y) {
  114. //$("#calc").append(x + " * " + y + " = " + (x*y) + "<br>");
  115. if (x < 0) {
  116. // xが0以下になったら終了
  117. return;
  118. }
  119. if (y < 0) {
  120. return f(x-1, Y_MAX);
  121. }
  122. if (isPalindrome(x*y)) {
  123. if ((maxset[0]*maxset[1]) < (x*y)) {
  124. maxset = [x,y];
  125. }
  126. } else {
  127. f(x, y-1);
  128. }
  129. })(x, y);
  130. return maxset;
  131. },
  132.  
  133. isPalindrome: function(value) {
  134. value = new String(value);
  135. var center = value.length / 2;
  136. for (var i=0;i<center;i++) {
  137. //print(value);
  138. if (value.charAt(i)!=value.charAt(value.length-(i+1))) {
  139. //print(value + " => " + value.charAt(i) + " , " + value.charAt(value.length-(i+1)) );
  140. //print("return false");
  141. return false;
  142. }
  143. }
  144. //print("return true");
  145. return true;
  146. },
  147.  
  148. isPalindrome2: function(value) {
  149. value = new String(value);
  150. var center = value.length / 2;
  151.  
  152. var first = value.substring(0, center);
  153. var last = value.substring(center, value.length);
  154. if (first == inverse(last)) {
  155. return true;
  156. } else {
  157. return false;
  158. }
  159. },
  160.  
  161. inverse: function(value) {
  162. var rtnVal = "";
  163. for (index = value.length; index > 0 ; index--) {
  164. rtnVal += value.charAt(index-1);
  165. }
  166. return rtnVal;
  167. }
  168. };
Add Comment
Please, Sign In to add comment