ホームページ >ウェブフロントエンド >jsチュートリアル >CodeWars Challenge ソリューションの共有: Basic から Aris までの最小規模

CodeWars Challenge ソリューションの共有: Basic から Aris までの最小規模

Susan Sarandon
Susan Sarandonオリジナル
2024-12-21 07:09:09283ブラウズ

Sharing Solusi Tantangan CodeWars: Least Larger, dari Dasar hingga aris

CodeWars チャレンジから学ぶ: 最小規模

こんにちは、友達!今回は、CodeWars の最小規模チャレンジについて共有したいと思います。この課題は、論理と体系的思考を訓練するだけでなく、この概念が現実の世界でどのように役立つかについてのアイデアを与えるので、本当にエキサイティングです。さあ、一緒に話し合いましょう!


課題とは何ですか?

つまり、数値の配列と特定のインデックスが与えられます。私たちのタスクは、そのインデックスの要素より大きい最小の数値を見つけて、インデックスを返すことです。一致する数値がない場合は、-1 を返さなければなりません。

例:

配列: [4, 1, 3, 5, 6]

インデックス: 0 (参照番号は 4)

4 より大きい最小の数値はインデックス 3 にある 5 であるため、結果は 3 になります。
なぜ 3 になるのでしょうか?
配列は 0
から始まります だから:
4 : インデックス 0
1 : インデックス 1
3 : インデックス 2
5 : インデックス 3
6 : インデックス 4


私が作成したソリューション

この課題を解決するために、leastLarger という関数を作成しました。コードは次のとおりです:

function leastLarger(a, i) {
  let smaller = Infinity; // Nilai pembanding awal
  let result = -1;        // Default hasil kalau nggak ada elemen yang memenuhi

  for (let index = 0; index < a.length; index++) {
    if (a[index] > a[i] && a[index] < smaller) {
      smaller = a[index]; // Update nilai terkecil yang lebih besar
      result = index;     // Simpan indeks elemen
    }
  }

  return result; // Kembalikan hasil
}

どのように機能するのでしょうか?

  1. 初期化

    • 比較のため初期値としてInfinityより小さいものを設定しました。
    • 満足できる要素がない場合、結果は -1 に設定されます。
  2. 配列の反復

    • 配列内のすべての要素をチェックします。
    • 満たさなければならない条件が 2 つあります:
      1. 要素は参照要素 (a[i]) より大きいです。
      2. 要素は前の比較よりも小さい (小さい)。
    • 両方の条件が満たされる場合、より小さく更新し、結果に要素インデックスを保存します。
  3. 結果を返す

    • 条件を満たす要素がある場合、関数はそのインデックスを返します。
    • 何もない場合でも、結果は -1 です。

使用例

console.log(leastLarger([4, 1, 3, 5, 6], 0)); // Output: 3

説明:

  • 参照要素は 4 (インデックス 0) です。
  • 4 より大きい要素は [5, 6] です。
  • これらの要素のうち、最小のものは 5 で、その位置はインデックス 3 にあります。

高度なソリューション: 1 行で簡潔に

より「JavaScript のみ」のアプローチを好む方のために、filter、Math.min、findIndex などの組み込みメソッドを使用して、このソリューションを 1 行のコードで書くことができます。

function leastLarger(a, i) {
  let smaller = Infinity; // Nilai pembanding awal
  let result = -1;        // Default hasil kalau nggak ada elemen yang memenuhi

  for (let index = 0; index < a.length; index++) {
    if (a[index] > a[i] && a[index] < smaller) {
      smaller = a[index]; // Update nilai terkecil yang lebih besar
      result = index;     // Simpan indeks elemen
    }
  }

  return result; // Kembalikan hasil
}

このコードは同じことを行いますが、より機能的で簡潔なスタイルになっています。変数をあまり追加せずに迅速なソリューションを作成したい状況に最適です。


実際の事例紹介

このような関数は、実際にはさまざまな現実の状況に非常に関連しています。いくつかの例:

  1. チケット予約システム

    • チケット システムでは、特定の価格よりも高い最低座席価格を見つける必要があることがよくあります (たとえば、隣の席を埋めるため)。
  2. タスクのスケジュール

    • スケジュールを作成するとき、たとえば会議のスロットや次のタスクを割り当てるために、特定の時刻よりも後で最も近い時刻を探すことができます。
  3. 在庫管理

    • 倉庫内で、特定のアイテムを保管するのに十分な最小容量の保管場所を探す必要がある場合。

この課題は単純そうに見えますが、実際にやってみると、きちんとしたロジックが非常に重要であることがわかりました。この課題で私が気に入っているのは、この概念が現実世界に適用するのにどれほど適切であるかということです。

そうそう、友達がこのチャレンジを完了する別の方法を持っている場合は、遠慮せずにコメント欄で共有してください。もしかしたら、私たちはお互いの異なるアプローチから学ぶかもしれません。この共有がお役に立てば幸いです。コーディングを楽しんでください。 ?

以上がCodeWars Challenge ソリューションの共有: Basic から Aris までの最小規模の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。