ご挨拶
このシリーズでは、Codewars の課題と私の思考プロセスを投稿しています。私は可能な限り JS と Node 18 を使用しています。明確にするために、私はそれらを公正に使用しています。
Codewars からの次の挑戦へ。この例では、任意の整数を入力として受け取る関数を開発する必要があります。数字は最高から最低の順に並べる必要があります。
私は次の考えから始めます:
「わかりました。何らかの方法で数字を分割する必要があります。おそらく、最初に整数を文字列に変換する必要があります。次に、数字を分割します。次に、順序付けし、すべてを連結してから、整数に戻します。」
そして、テンプレートから始まります:
function descendingOrder(n){ // stringify number = n.toString(); // split digits array = new Array(number.length); // code that fills array with digits {} //sort array.sort() // concatenate digits reverse = array.join(''); // back to integer n = Number.parseInt(reverse); return n; }
手紙が多くて退屈だ。そしてまだ機能していません。では、他に何が必要でしょうか?まず、配列に数字を配置するループ:
// split digits array = new Array(number.length); for(i=0 ; i<number.length ; i++){ array[i] = number.at(i); }
それで済むはずです。そうですよね?
いいえ。ほんの小さなディテールをひとつ。悪魔は細部に宿る。バグも同様です。ソート機能はデフォルトで昇順に並べられます。 「極性を戻す」必要があります。本質的に、これが必要なのです。デフォルトの動作は次のようになります:
(a, b) => a - b
そして次のものが必要です:
(a, b) => b - a
すべての材料を混ぜ合わせます:
function descendingOrder(n){ number = n.toString(); array = new Array(number.length); for(i=0;i<number.length;i++){ array[i] = number.at(i); } array.sort((a,b)=>b-a) reverse = array.join(''); n = Number.parseInt(reverse); return n; }
最善の解決策でも、最も単純な解決策でもありません。しかし、それは仕事をします。
キャー。水を飲みましょう???
前
以上がCodewars - 降順の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。