問題タブ [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 - 誰もが良いProper Caseアルゴリズムを持っていますか
信頼できる Proper Case または PCase アルゴリズム (UCase または Upper に類似) を持っている人はいますか? "GEORGE BURDELL"
orなどの値を取り、"george burdell"
それを に変換するものを探しています"George Burdell"
。
単純なケースを処理する単純なものがあります。"O'REILLY"
などを処理して に変換できるものが理想ですが"O'Reilly"
、それは難しいと思います。
それが物事を単純化するのであれば、私は主に英語に焦点を当てています.
更新:私は言語として C# を使用していますが、ほぼすべてのものから変換できます (同様の機能が存在すると仮定します)。
マクドナルドのシナリオが難しいものであることには同意します。私の O'Reilly の例と一緒にそれについて言及するつもりでしたが、元の投稿では言及しませんでした。
c - C での優れたオープン ソース B ツリー実装とは?
C で記述された B ツリー ライブラリの無駄のない適切に構築されたオープン ソース実装を探しています。商用アプリケーションで使用できるようにするには、非 GPL ライセンスである必要があります。理想的には、このライブラリはディスク ファイルとして格納/操作される B ツリー インデックスをサポートし、構成可能な (つまり、最小限の) RAM フットプリントを使用して大きなツリーを構築できるようにします。
注: 少し混乱しているように見えたので、バイナリ ツリーと B ツリーは同じものではありません。
c# - 人気アルゴリズム
SO 18 で Joel は、年齢と人気に基づいてアイテムをランク付けするアルゴリズムについて言及しました。これは重力に基づいています。誰かがこれを投稿できますか?C# もいいかもしれませんが、実際にはどんな言語でも構いません (LISP はできません)。
algorithm - パターン認識アルゴリズム
以前は、ルール評価器として機能するプログラムを開発する必要がありました。前件といくつかの後件 (アクション) があるため、前件が true と評価された場合、アクションが実行されます。
当時、私は前提条件のパターン マッチングにRETE アルゴリズムの修正バージョンを使用しました (最初のバージョンだけが公開されている RETE には 3 つのバージョンがあります)。ここでは、ルールごとに数百万の操作があり、一部の演算子がいくつかのルールで「繰り返される」大規模なシステムについて話しています。
他の言語でもう一度実装しなければならない可能性があります。私は RETE の経験がありますが、他のパターン マッチング アルゴリズムを知っている人はいますか? 何か提案がありますか、それとも RETE を使い続ける必要がありますか?
algorithm - 末尾再帰とは
Lisp を学び始めているときに、末尾再帰という用語に出くわしました。正確にはどういう意味ですか?
algorithm - リンクされたリストにサイクルがあるかどうかをテストするための最適なアルゴリズム
リンクされたリストにサイクルがあるかどうかを判断するための最良の (停止) アルゴリズムは何ですか?
[編集] 時間と空間の両方の漸近的複雑度の分析は、答えをよりよく比較できるようになるでしょう。
[編集] 元の質問は、outdegree > 1 のノードに対処することではありませんでしたが、それについていくつかの話があります。その質問は、「有向グラフでサイクルを検出するための最良のアルゴリズム」の行に沿っています。
algorithm - 箱の中から自分の番号を見つける
100 人 (または偶数 2N :-) の囚人が部屋 A にいます。囚人には 1 から 100 までの番号が付けられています。
囚人1号から100号の順に1人ずつ、1から100までの100個の箱が並ぶ部屋Bに入れられます。(閉じた) ボックスの中には 1 から 100 までの数字があります (ボックスの中の数字はランダムに並べ替えられています!)。
部屋Bに入ると、各囚人は50個の箱を開けることができます(彼はどの箱を開けるかを選択します). 彼がこれらの 50 個のボックスの 1 つに割り当てられた番号を見つけた場合、囚人は部屋 C に入ることができ、次のボックスが部屋 A から部屋 B に入る前に、すべてのボックスが再び閉じられます。部屋A、B、C)が殺されます。
部屋 B に入る前に、囚人は戦略 (アルゴリズム) に同意することができます。部屋間で通信する方法はありません (部屋 B にメッセージを残すことはできません!)。
すべての囚人が生き残る確率を最大化するアルゴリズムはありますか? そのアルゴリズムが達成する確率は?
ノート:
物事をランダムに行う (「戦略なし」と呼ばれるもの) と、確かに各囚人に 1/2 の確率が与えられますが、すべての囚人が生き残る確率は 1/2^100 (非常に低い) です。もっとうまくやれる!
囚人は箱を並べ替えることはできません!
囚人が最初に自分の番号を見つけられなかった場合、すべての囚人が殺されます。しかも通信不可。
ヒント:平均して30 人以上の囚人を救うことができます。これは (50/100) * (50/99) * [...] * 1 よりもはるかに多くなります。
algorithm - 自然な並べ替えアルゴリズム
さまざまなプログラミング言語で文字列の配列を自然に並べ替えるにはどうすればよいですか? 実装とそれがどの言語であるかを回答に投稿してください。
algorithm - 良いハッシュ関数とは?
良いハッシュ関数とは? 大学のデータ構造コースで多くのハッシュ関数とアプリケーションを見てきましたが、良いハッシュ関数を作成するのは非常に難しいということがほとんどでした。衝突を避けるための経験則として、私の教授は次のように述べています。
(mod は C および同様の言語の % 演算子です)
素数がハッシュテーブルのサイズになります。これは衝突を回避するためのやや優れた機能であり、高速なものだと思いますが、どうすればより良いものを作ることができますか? 数値キーに対する文字列キーのより良いハッシュ関数はありますか?