問題タブ [algorithm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
10 に答える
45729 参照

algorithm - 最適なワード ラップ アルゴリズムは?

ワード ラップは、最新のテキスト エディターに必須の機能の 1 つです。

ワードラップはどのように処理されますか? ワードラップに最適なアルゴリズムは何ですか?

テキストが数百万行の場合、ワードラップを非常に高速にするにはどうすればよいですか?

なぜこのソリューションが必要なのですか? 私のプロジェクトでは、さまざまなズーム レベルと美しい外観でテキストを描画する必要があるためです。

実行環境は Windows Mobile デバイスです。非常に小さなメモリ サイズで最大 600 MHz の速度。

回線情報はどのように扱えばよいですか?元のデータが 3 行あるとします。

その後、休憩テキストは次のように表示されます。

あと 3 行を割り当てる必要がありますか? または他の提案はありますか?

0 投票する
4 に答える
985 参照

java - JavaでRFC計算を実行するアルゴリズム

JavaクラスのRFCは、クラスのオブジェクトへのメッセージに応答して、またはクラス内のメソッドによって呼び出すことができるすべてのメソッドのセットです。RFC = M + Rここで、M=クラス内のメソッドの数。R=Mから直接呼び出された他のメソッドの総数。

Cは.classであり、JはRFCを計算する必要がある.javaファイルであると考えています。

ここでM=6およびR=9(ループ内の呼び出しについて心配する必要はありません。単一の呼び出しと見なされます)

Mの計算は簡単です。クラスローダーを使用してCをロードし、リフレクションを使用してメソッドの数を取得します。

Rの計算は直接ではありません。クラスからのメソッド呼び出しの数を数える必要があります。最初のレベルのみ。

RIの計算には、正規表現を使用する必要があります。通常、形式は次のようになります(。を使用しない呼び出しはカウントされません)

また

コールリターンが直接別のメソッドのパラメータになる場合、セミコロンなし。また

これは2つのメソッド呼び出しになります

メソッド呼び出しの他のどのパターンを考えることができますか?Rの計算に使用できるRegExを使用する以外の方法はありますか?


更新:
@McDowell BCEL を使用しているように見えますが、プロセス全体を簡略化できます。やってみよう。

0 投票する
2 に答える
1157 参照

mysql - MySQL データベースで再帰的な不変条件を維持する方法は?

MySQL データベースでエッジとしてエンコードされたツリーがあります。

ツリーのリーフごとに、items.tot誰かが設定します。内部ノードの場合、そのitems.tot子の合計である必要があります。次のクエリを繰り返し実行すると、目的の結果が生成されます。

(これは実際には機能しないことに注意してくださいが、それは重要ではありません)

データベースが存在し、不変条件が既に満たされていると仮定します。

質問は:

この要件を維持しながら DB を更新する最も実用的な方法は何ですか? 更新により、ノードが移動したり、totリーフ ノードの値が変更されたりする場合があります。葉ノードは葉ノードのままであり、内部ノードは内部ノードのままであり、全体は適切なツリーのままであると想定できます。

私が持っていたいくつかの考え:

  • 完全な無効化、更新後、すべてを再計算します (ええと...いいえ)
  • アイテム テーブルにトリガーを設定して、更新された行の親を更新します。
    • これは再帰的です(更新は更新をトリガーし、更新をトリガーします...)
    • 動作しません。MySQL はトリガーを開始したテーブルを更新できません
  • 更新される任意の行の親の更新をスケジュールするようにトリガーを設定します
    • これは反復的です(スケジュールからアイテムを取得し、それを処理してさらにアイテムをスケジュールします)
    • 何がこれを開始しますか?クライアントコードを信頼して正しく取得しますか?
    • 利点は、更新が正しく順序付けられている場合、計算する必要がある合計が少なくなることです。しかし、その順序はそれ自体が複雑です。

理想的な解決策は、他の「集約不変条件」に一般化されます

FWIW私はこれが「少しやり過ぎ」であることを知っていますが、私は楽しみのためにこれをやっています(楽しい:動詞、それを行うことによって不可能を見つける. :-)

0 投票する
12 に答える
14569 参照

algorithm - 赤黒木

最近読んだいくつかの本で二分木と二分探索について言及されているのを見てきましたが、私はまだコンピュータ サイエンスの研究を始めたばかりなので、アルゴリズムとデータを実際に扱うクラスをまだ受講していません。深刻な方法で構造。

典型的な情報源 (ウィキペディア、Google) を確認しましたが、(特に) 赤黒木の有用性と実装に関するほとんどの説明は、密集していて理解しにくいものでした。必要なバックグラウンドを持っている人にとっては完全に理にかなっていると思いますが、現時点ではほとんど外国語のように読めます.

では、プログラミング中に自分が行っている一般的なタスクのいくつかで、二分木が役立つのはなぜでしょうか? それ以外に、どのツリーを使用することを好みますか (サンプル実装を含めてください)、その理由は何ですか?

0 投票する
7 に答える
39554 参照

algorithm - 切り屑の少ないカッティングリストの算出

私は、アルミ押出材の切断リストを作成するプロジェクトに取り組んでいます。

アルミ押し出し材の長さは 5m です。

5mの長さのアルミニウム押し出し材から切断する必要がある、より短い長さのリストがあります。

5mの長さのアルミニウム押し出し材から生じるオフカット廃棄物の量が最も少なくなるように、短い方の長さを切断する必要があります。

現在、私は通常、短い長さの最長のものを最初にカットし、短い長さの最短のものを最後にカットするように、カット リストを並べています。この規則の例外は、短い長さが 5m の長さのアルミニウム押し出し材の残りの長さに収まらない場合は常に、収まる最長の短い長さを使用することです。

これは、非常に効率的な (オフ カットの無駄がほとんどない) カッティング リストを生成するように思われ、計算に時間がかかりません。ただし、カッティング リストは非常に効率的ですが、必ずしも最も効率的であるとは限りません。

妥当な時間で計算できる最も効率的なカッティング リストを計算する方法を知っている人はいますか?

EDIT:答えてくれてありがとう、私は「貪欲な」アプローチを使い続けます。なぜなら、それは非常に良い仕事をしているようで(効率的なカットリストを作成するための人間の試みを実行するよりも優れています)、非常に速いからです。

0 投票する
20 に答える
58182 参照

algorithm - 特定の整数に対応する Excel の列名を見つけるにはどうすればよいですか?

Excel で n 番目の列の列名 (「AQ」または「BH」など) をどのように決定しますか?

編集:これを決定する言語に依存しないアルゴリズムが、ここでの主な目標です。

0 投票する
29 に答える
219619 参照

algorithm - 数の最大の素因数を見つけるためのアルゴリズム

数の最大の素因数を計算するための最良のアプローチは何ですか?

最も効率的なのは次のことだと思います。

  1. きれいに分割する最小の素数を見つける
  2. 除算の結果が素数であるかどうかを確認します
  3. そうでない場合は、次に低いものを見つけます
  4. 2に進みます。

この仮定は、小さな素因数を計算する方が簡単であることに基づいています。これは正しいですか?他にどのようなアプローチを検討する必要がありますか?

編集:結果が他の2つの素数の積である場合、ステップ2は失敗するため、2つ以上の素因数が作用している場合、私のアプローチは無駄であることに気付きました。したがって、再帰的アルゴリズムが必要です。

もう一度編集します。最後に見つかった素数が最大である必要があるため、これが引き続き機能することに気付きました。したがって、ステップ2の非素数の結果をさらにテストすると、素数が小さくなります。

0 投票する
14 に答える
15343 参照

algorithm - 2 都市間の距離の計算

2 つの都市間の距離はどのように計算しますか?

0 投票する
129 に答える
28603 参照

algorithm - さまざまな言語での階乗アルゴリズム

階乗サブルーチンまたはプログラムについて、あなたが思いつくさまざまな方法をすべて見たいと思います。誰もがここに来て、新しい言語を学びたいかどうかを確認できることを願っています.

アイデア:

  • 手続き型
  • 機能的
  • オブジェクト指向
  • ワンライナー
  • 難読化
  • オッドボール
  • 悪いコード
  • ポリグロット

基本的に、アルゴリズムを書くさまざまな方法の例と、それらがさまざまな言語でどのように見えるかを見たいと思っています。

1 エントリにつき 1 つの例に制限してください。特定のスタイル、言語、または 1 つの投稿に適したよく考え抜かれたアイデアを強調しようとしている場合は、回答ごとに複数の例を使用できます。

唯一の実際の要件は、表されるすべての言語で、与えられた引数の階乗を見つけなければならないことです。

クリエイティブに!

推奨ガイドライン:

私はときどき、適切な書式設定がない回答を編集します。

0 投票する
9 に答える
143074 参照

algorithm - 2 つの画像を比較するアルゴリズム

2 つの異なる画像ファイル (どの形式を選択しても) が与えられた場合、一方が他方の違法なコピーであるかどうかを予測するプログラムを作成する必要があります。コピーの作成者は、回転、ネガの作成、些細な詳細の追加 (および画像の寸法の変更) などを行う場合があります。

この種の仕事をするためのアルゴリズムを知っていますか?