問題タブ [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.
algorithm - アプリケーションを適切にスケーリングするにはどうすればよいですか?
一般に、アプリケーションを適切にスケーリングするには、どのような設計上の決定が必要でしょうか?
(注: Big O Notationについて学んだばかりなので、ここでプログラミングのより多くの原則を収集しようとしています。以下の私自身の質問に答えて Big O Notation を説明しようとしましたが、コミュニティにこの質問と両方を改善してもらいたいです。回答。)
これまでの回答
1) スケーリングを定義します。仮想環境で多数のユーザー、トラフィック、オブジェクトをスケーリングする必要がありますか?
2) アルゴリズムを見てください。彼らが行う作業量は、実際の作業量 (つまり、ループする項目の数、ユーザー数など) に比例しますか?
3) ハードウェアを見てください。アプリケーションは、1 台のマシンが追いつかなくなった場合に複数のマシンで実行できるように設計されていますか?
二次的な考え
1) あまりにも早く最適化しすぎないでください - 最初にテストしてください。思わぬところでボトルネックが発生するかもしれません。
2) スケーリングの必要性がムーアの法則を上回らない可能性があり、ハードウェアのアップグレードはリファクタリングよりも安価になる可能性があります。
fuzzy-search - レーベンシュタイン距離ベースの方法とSoundex
関連スレッドのこのコメントに従って、レーベンシュタイン距離ベースの方法がSoundexよりも優れている理由を知りたい.
algorithm - 「関連」度測定アルゴリズムを実装する方法は?
Stackoverflow の驚くべき機能を紹介されたとき、今日は質問をするつもりでした。質問のタイトルを書いたとき、stackoverflow はいくつかの関連する質問を提案してくれましたが、すでに 2 つの同様の質問があることがわかりました。それは見事でした!
それから、そのような機能をどのように実装するかを考え始めました。関連性によって質問を並べ替える方法:
- 新しい質問と一致する単語数が多い質問
- 一致数が同じ場合、単語の順序が考慮されます
- タイトルに含まれる言葉ほど関連性が高い
それは単純なワークフローですか、それとも複雑なスコア アルゴリズムですか? おそらく、リコールを増やすためのいくつかのステミングですか?この機能を実装するライブラリはありますか? 他にどのような点を考慮しますか?たぶん、ジェフは自分で答えることができます!これをどのように Stackoverflow に実装しましたか? :)
algorithm - 二次元配列をどのように回転させますか?
Raymond Chen の投稿に触発されて、4x4 の 2 次元配列があるとします。それを 90 度回転させる関数を記述します。Raymond は疑似コードのソリューションへのリンクを提供していますが、現実世界のものをいくつか見てみたいと思います。
なります:
更新: ニックの答えは最も簡単ですが、n^2 よりも優れた方法はありますか? マトリックスが 10000x10000 だったら?
algorithm - 見た目に美しいカラー パレットをランダムに生成するアルゴリズム
多数のランダムで美しい色を生成する単純なアルゴリズムを探しています。そのため、クレイジーなネオンカラー、糞を連想させる色などはありません。
この問題の解決策を見つけましたが、それらは RGB 以外のカラー パレットに依存しています。前後にマッピングするよりも、ストレート RGB を使用するほうがよいでしょう。これらの他のソリューションも、せいぜい 32 程度の適切なランダム カラーしか生成できません。
どんなアイデアでも素晴らしいでしょう。
algorithm - 文字セットのサブセットを作成するための最良の解決策は何ですか?
私は「最良」が主観的であることを知っているので、あなたによると、次の問題の最良の解決策は何ですか?
長さnの文字列(「abc」など)が与えられた場合、文字列の適切なサブセットをすべて生成します。したがって、この例では、出力は{}、{a}、{b}、{c}、{ab}、{bc}、{ac}になります。{abc}。
どう思いますか?
php - id(key)とcountries(values)のハッシュをアルファベット順にソートしているとすると、スタックの一番上にエントリをバブルアップするための最良の方法は何ですか?
これはphpの例ですが、どの言語のアルゴリズムでもかまいません。私が特にやりたいのは、米国とカナダをリストのトップに押し上げることです。簡潔にするために短縮された配列の例を次に示します。
IDはそのままにしておく必要があります。したがって、それらを-1または-2にすることは、残念ながら機能しません。
algorithm - ページングリンクを作成するためのアルゴリズム/擬似コード?
StackOverflowのページングリンクを生成する方法のコードまたは擬似コードを提供できる人はいますか?
私は頭を悩ませ続けていますが、常に現在の2ページに加えて、最初と最後のページを表示する動的リンクを構築するための適切な方法を考えることはできません。
例:1 ... 5 6 7 ... 593
.net - 英数字の範囲を爆発させるライブラリまたはアルゴリズム
数値以外の範囲を拡張できるオープンソースのライブラリまたはアルゴリズムがあるかどうか疑問に思っていました。たとえば、必要な場合は取得する必要があり1A
ます9A
これについてグーグルを試してみましたが、思いつくことができる最高のものは、数値をダッシュで展開する正規表現でした(1-3が1,2,3になります)。
algorithm - 確認コード/番号を生成する方法は?
ユーザーが電話をかけ、電話のキーパッドで確認番号を入力する必要があるアプリケーションに取り組んでいます。
入力した数字が正しいかどうかを検出できるようにしたいと思います。電話システムは有効な番号のリストにアクセスできませんが、代わりにアルゴリズム (クレジット カード番号など) に対して番号を検証します。
要件の一部を次に示します。
- 有効なランダムコードを入力するのは難しいに違いない
- タイプミス(桁の入れ替わり、桁違い)をすると有効なコードを取得するのが難しいに違いありません
- 合理的な数の可能な組み合わせが必要です (1M としましょう)
- ユーザーのエラーを避けるために、コードはできるだけ短くする必要があります
これらの要件を考えると、どのようにそのような数を生成しますか?
編集 :
@Haaked: ユーザーが電話で入力するため、コードは数値でなければなりません。
@matt b: 最初のステップでは、コードが Web ページに表示されます。2 番目のステップでは、コードを呼び出して入力します。ユーザーの電話番号がわかりません。
フォローアップ : 数値の有効性をチェックするアルゴリズムをいくつか見つけました(この興味深い Google Code プロジェクトを参照してください: checkDigits )。