- ベストアンサー
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は コンソールログで表示できるようにします。 コードができたら回答してください。 腕試しをしたい方、ポイ活の方、 スキルアップを望む方の回答をお待ちしています。
- みんなの回答 (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; } だな。 ゴメン。
その他の回答 (2)
- cametan_42
- ベストアンサー率62% (164/263)
#!/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);
お礼
補足
OKWAVEの様式上、お礼と補足を記述後に追記できないため、 この場をお借りして、追記させていただきます。 cametan_42様には斟酌の上、ご了承願います。 _kappe_様の回答コードにおいて、 for (n = 9; n > 0; n--) { これですと、nが未定義の変数として扱われるため エラーが発生します。
- _kappe_
- ベストアンサー率68% (1582/2306)
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 〇
お礼
補足
※ 急告 ※ 質問文中の例で計算を間違えて掲載してしまいました。 解答された皆様には訂正して、 この場をお借りしてお詫び申し上げます。 26 x 6 = 156 〇 342 x 2 = 684 〇
お礼