• ベストアンサー

JS 最適値 N を求める関数を作れますか?

JS 最適値 N を求める関数を作れますか? JavaScriptのコードで、任意の数値の末尾を満たす最適値 N を求める。 関係式      ■□ x □ <= max     ■■□ x □ <= max      [例1]    数字が 2□で、上限値が 200の場合    26 x 6 = 132 〇    27 x 7 = 189 ◎    28 x 8 = 224 ✕        よって N = 7 [例2]    数字が 34□で、上限値が 1100の場合    342 x 2 = 384 〇    343 x 3 = 1029 ◎    344 x 4 = 1376 ✕        よって N = 3 与えられた数字をnum、上限値をmaxとして 最適値 N を求める関数 Func()を JavaScriptのコードで作れますか? 最適値 Nは コンソールログで表示できるようにします。 コードができたら回答してください。 腕試しをしたい方、ポイ活の方、 スキルアップを望む方の回答をお待ちしています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

おっと失礼。 ラムダ式内の不等号を書き間違えてた。 function Func(num, max) { return [...Array(10).keys()] .map(i => i + Math.floor(num / 10) * 10) .filter((x) => x * (x % 10) <= max) .length - 1; } だな。 ゴメン。

retorofan
質問者

お礼

見直し回答をありがとうございます。

Powered by GRATICA

その他の回答 (2)

回答No.2

#!/usr/bin/env js91 function Func(num, max) { return [...Array(10).keys()] .map(i => i + Math.floor(num / 10) * 10) .filter((x) => x * (x % 10) < max) .length - 1; } function main(args) { console.log(`N = ${Func(args[0], args[1])}`); } main(scriptArgs);

retorofan
質問者

お礼

ご回答ありがとうございます。

Powered by GRATICA
retorofan
質問者

補足

OKWAVEの様式上、お礼と補足を記述後に追記できないため、 この場をお借りして、追記させていただきます。 cametan_42様には斟酌の上、ご了承願います。 _kappe_様の回答コードにおいて、 for (n = 9; n > 0; n--) { これですと、nが未定義の変数として扱われるため エラーが発生します。

  • _kappe_
  • ベストアンサー率68% (1582/2306)
回答No.1

function Func(num, max) { if (num < 0 || !Number.isInteger(num) || max < 0) { console.log("Invalid argument"); return -1; } for (n = 9; n > 0; n--) { if ((num * 10 + n) * n <= max) { break; } } console.log(n); return n; } Nは10進数一桁であると仮定しています。それから、引数のエラーチェックは勝手に足しました。 質問文中の例が計算を間違えているので何か違う意味があるのかと思いましたが、単なる打ち間違いと判断しています。 26 x 6 = 156 〇 342 x 2 = 684 〇

retorofan
質問者

お礼

ご回答ありがとうございます。

Powered by GRATICA
retorofan
質問者

補足

※ 急告 ※ 質問文中の例で計算を間違えて掲載してしまいました。 解答された皆様には訂正して、 この場をお借りしてお詫び申し上げます。 26 x 6 = 156 〇 342 x 2 = 684 〇

関連するQ&A

専門家に質問してみよう