タグ付けされた質問 「language-agnostic」

このタグは、特定のプログラミング言語に依存しないプログラミングの質問に使用します。

2
データ構造が「侵入的」であるとはどういう意味ですか?
リストやスタックなどのデータ構造を説明するために侵入型という用語を使用したことがありますが、それはどういう意味ですか? 侵入型データ構造のコード例を教えてください。侵入型データ構造との違いはありますか? また、なぜそれを邪魔にならない(または邪魔にならない)のですか?メリットは何ですか?欠点は何ですか?



30
getMinimum()がO(1)になるようにスタックを設計する
これはインタビューの質問の1つです。getMinimum()関数がスタック内の最小要素を返すように、整数値を保持するスタックを設計する必要があります。 例:以下の例を検討してください ケース#1 5->トップ 1 4 6 2 getMinimum()が呼び出されると、最小要素である1を返す必要があります スタック。 ケース#2 stack.pop() stack.pop() 注:5と1の両方がスタックからポップされます。この後、スタック のように見えます 4->トップ 6 2 getMinimum()が呼び出されたときは、2を返す必要があります。これは、 スタック。 Constriants: getMinimumはO(1)の最小値を返す必要があります スペースの制約も設計時に考慮する必要があり、余分なスペースを使用する場合は一定のスペースにする必要があります。

6
最適なユダヤ人の足の爪の切断アルゴリズムは何ですか?
私は、足の爪を自動的にトリミングするマシンのソフトウェアに取り組んでいます。そのため、ユーザーは自分の足をその中に入れて実行するだけで、手動でかむことや爪切りを使用する必要はありません。 潜在的なユーザーベースのかなりの割合がユダヤ人である可能性が高く、明らかに、足指の爪(または指の爪)を順番どおりにトリミングしないという伝統があります。 この伝統の正確な適用については反対意見があるようですが、次のルールは、宗教的な慣習により爪を順番に切ることを禁止している人々に対応するのに十分だと思います。 隣接する2つの足指の爪を連続して切断しないでください 左足の切断順序は右足の順序と一致してはなりません 2つの連続したランの切断順序は同じであってはなりません。シーケンスは簡単には予測できないため、交互のシーケンスをハードコーディングしても機能しません。 これは、つま先に番号を付けることを決定した方法です。 5 4 3 2 1 1 2 3 4 5 Left foot Right foot 問題を解決するためのコードを作成しましたが、使用されているアルゴリズムは最適ではありません。実際、最悪の場合のパフォーマンスはO(∞)です。動作方法はbogosortに匹敵します。以下は、使用される実際のコードの疑似コードの簡略化です。 function GenerateRandomSequence sequence = Array[5] foreach (item in sequence) item = RandomNumberBetween(1,5) return sequence function GetToenailCuttingOrder while (true) sequence = GenerateRandomSequence() if (!AllItemsAreUnique(sequence)) continue if (NoTwoAdjacentItemsHaveConsecutiveNumbers(sequence)) return sequence …

22
例外またはエラーコードの規則
昨日、私は同僚と、どのエラー報告方法が望ましいのかについて、激しい議論を交わしていました。主に、アプリケーションレイヤーまたはモジュール間のエラーを報告するための例外またはエラーコードの使用について説明しました。 エラー報告のために例外をスローするか、エラーコードを返すかを決定するために、どのルールを使用しますか?

17
TDDと単体テストの比較[終了]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 5年前休業。 この質問を改善する 私の会社はコードを単体テストするのがかなり新しいです。私はTDDと単体テストについてしばらく読んでおり、それらの価値を確信しています。私は、TDDがプログラミング方法について学習し、考え方を変える努力の価値があることをチームに納得させようとしましたが、それは苦労です。これは私の質問に私をもたらします。 TDDコミュニティには、テストの作成とコードの作成に非常に熱心な人がたくさんいます(そして私も彼らと一緒にいます)が、TDDに苦労しているチームにとって、妥協はまだ追加の利点をもたらしますか? コードが記述されたら(おそらくコードをチェックインするための要件として)、チームにユニットテストを記述させることに成功する可能性があり、私の前提は、これらのユニットテストの記述にはまだ価値があるということです。 苦労しているチームをTDDに取り込む最善の方法は何ですか?それに失敗したとしても、コードが書かれた後でも、単体テストを書く価値はありますか? 編集 私がこれから取り除いたのは、コーディングプロセスのどこかでユニットテストを開始することが重要であることです。チームのコンセプトを取り上げた人は、最初にTDDとテストに向けて動き始めます。皆様のご意見ありがとうございます。 ファローアップ 私たちは最近、新しい小さなプロジェクトを開始し、チームのごく一部がTDDを使用しました。残りはコードの後に​​ユニットテストを作成しました。プロジェクトのコーディング部分をまとめた後、コードの後のユニットテストの記述は、TDDコーダーが既に実行されており、より堅実なコードを使用していたことに驚いていました。それは懐疑論者に勝つための良い方法でした。私たちはまだ先に多くの成長する苦痛を持っていますが、意志の戦いは終わったようです。アドバイスをくれた皆さん、ありがとう!

9
なぜ正規表現を使用してHTML / XMLを解析できないのか:素人の言葉による正式な説明
SOでは、(X)HTMLまたはXMLの解析に関する質問なしに、正規表現が要求される日はありません。 このタスクの正規表現の非実行可能性を実証する例や、概念を表す式のコレクションを思い付くのは比較的簡単ですが、SOでは、なぜこれが素人でできないのかについての正式な説明は見つかりませんでした。条項。 このサイトでこれまでに見つけた唯一の正式な説明は、おそらく非常に正確ですが、独学のプログラマにとっては非常に謎めいています。 ここでの欠点は、HTMLがチョムスキータイプ2文法(文脈自由文法)であり、RegExがチョムスキータイプ3文法(正規表現)であることです。 または: 正規表現は正規言語にのみ一致しますが、HTMLは文脈自由言語です。 または: 有限オートマトン(正規表現の基礎となるデータ構造)には、その状態とは別にメモリがありません。ネストが任意に深い場合は、有限オートマトンの概念と衝突する任意に大きいオートマトンが必要です。 または: 通常の言語のパンピング補題は、それができない理由です。 [公平を期すために:上記の説明の大部分はウィキペディアのページにリンクしていますが、これらは回答そのものよりも理解しやすいものではありません]。 だから私の質問は:(X)HTML / XMLを解析するために正規表現を使用できない理由について、上記の正式な説明を素人の言葉で翻訳してくれませんか? 編集:最初の回答を読んだ後、明確にする必要があると思いました:翻訳しようとする概念も簡潔に説明する「翻訳」を探しています:回答の終わりに、読者は大まかなアイデアを持っている必要があります-たとえば-「通常の言語」と「文脈自由文法」の意味...

16
2つの任意の頂点間のすべての接続を見つけるグラフアルゴリズム
以下で説明するタスクを実行するための最適な時間効率の良いアルゴリズムを決定しようとしています。 一連のレコードがあります。このレコードのセットには、このセットのレコードのペアが相互に接続する方法を示す接続データがあります。これは基本的に無向グラフを表し、レコードは頂点であり、接続データはエッジです。 セット内のすべてのレコードには接続情報があります(つまり、孤立したレコードはありません。セット内の各レコードは、セット内の他の1つ以上のレコードに接続しています)。 セットから任意の2つのレコードを選択し、選択したレコード間のすべての単純なパスを表示できるようにしたいと思います。「単純なパス」とは、パスに繰り返しレコードがないパス(つまり、有限パスのみ)を意味します。 注:選択した2つのレコードは常に異なります(つまり、開始頂点と終了頂点が同じになることはなく、サイクルはありません)。 例えば: 次の記録がある場合: A、B、C、D、E 以下は接続を表しています。 (A、B)、(A、C)、(B、A)、(B、D)、(B、E)、(B、F)、(C、A)、(C、E)、 (C、F)、(D、B)、(E、C)、(E、F)、(F、B)、(F、C)、(F、E) [(A、B)は、レコードAがレコードBに接続することを意味します] 開始レコードとしてBを選択し、終了レコードとしてEを選択した場合、レコードBをレコードEに接続するレコード接続を通るすべての単純なパスを見つけたいと思います。 BをEに接続するすべてのパス: B-> E B-> F-> E B-> F-> C-> E B-> A-> C-> E B-> A-> C-> F-> E これは一例です。実際には、何十万ものレコードを含むセットがある場合があります。

18
再帰関数のしくみを理解する
タイトルが説明するように、私は非常に基本的なプログラミングの質問があります。すべての(非常に賢い)「再帰を理解するには、最初に再帰を理解する必要があります」を除外します。さまざまなオンラインスレッドからの返信まだ十分に理解できていません。 わからないことがわからない場合は、間違った質問をしたり、間違った質問をしたりする傾向があることを理解している。私にとって再帰的な電球をオンにするのに役立つ少しの知識! ここに関数があります(構文はSwiftで書かれています): func sumInts(a: Int, b: Int) -> Int { if (a > b) { return 0 } else { return a + sumInts(a: a + 1, b: b) } } 引数として2と5を使用します。 println(sumInts(a: 2, b: 5)) 答えは明らかに14です。しかし、その値がどのようにして達成されるかははっきりしません。 これらは私の2つのハングアップです: この関数は、条件が満たされるまで再帰的に呼び出されます。その条件はa> bです。この条件が満たされた場合は、0を返します。一見すると、戻り値が0であることが予想されますが、これは明らかに正しくありません。 各反復で「a」の値を出力すると、2、3、4、5と予想される値が得られます(この時点で、5 + 1> bは最初の条件を満たす:a> b)。 14の値がどのように達成されるかを確認します。 私の最初の考えは、次のようなものが魔法のように起こっているということです。 var answer …

12
ハッシュコードとチェックサム-違いは何ですか?
私の理解では、ハッシュコードとチェックサムは似ています。データブロックに対して計算された、比較的一意の数値です。 つまり、同じ数値のハッシュ/チェックサム値を生成する2つのデータブロックの確率は、アプリケーションの目的で無視できるほど十分に低いです。 それで、同じことを表す2つの単語があるのでしょうか、それともハッシュコードとチェックサムの間に重要な違いがあるのでしょうか。

5
スペルチェッカーで提案されるアルゴリズムはどれですか。
単語の候補を伴うスペルチェッカーを実装する場合、通常どのようなアルゴリズムが使用されますか? 最初に、入力した新しい単語(辞書に見つからない場合)を、辞書の他のすべての単語からのレーベンシュタイン距離と比較して上位の結果を返すことを確認することは理にかなっていると思いました。ただし、これは非常に効率が悪く、辞書全体を繰り返し評価する必要があるようです。 これは通常どのように行われますか?


8
ハッシュテーブルは本当にO(1)になるのでしょうか?
ハッシュテーブルがO(1)を達成できることは一般的な知識のようですが、それは私には意味がありませんでした。誰かがそれを説明できますか?頭に浮かぶ2つの状況を次に示します。 A. 値は、ハッシュテーブルのサイズよりも小さいintです。したがって、値は独自のハッシュであるため、ハッシュテーブルはありません。しかし、あったとしても、それはO(1)であり、それでも非効率的です。 B. 値のハッシュを計算する必要があります。この状況では、検索されるデータのサイズの順序はO(n)です。O(n)の作業を行った後、ルックアップはO(1)になるかもしれませんが、それでも私の目にはO(n)が出てきます。 また、完全なハッシュテーブルまたは大きなハッシュテーブルがない限り、バケットごとに複数のアイテムが存在する可能性があります。したがって、いずれにしても、ある時点で小さな線形検索に発展します。 ハッシュテーブルはすばらしいと思いますが、理論的なものでない限り、O(1)の指定はありません。 ウィキペディアのハッシュテーブルに関する記事は、常に一定のルックアップ時間を参照しており、ハッシュ関数のコストを完全に無視しています。それは本当に公正な措置ですか? 編集:私が学んだことを要約するには: ハッシュ関数はキーのすべての情報を使用する必要がないため、一定の時間になる可能性があり、十分に大きいテーブルは衝突を一定の時間に近づけることができるため、技術的には正しいです。 ハッシュ関数とテーブルサイズが衝突を最小限に抑えるように選択されている限り、一定の時間のハッシュ関数を使用しないことがよくあるので、時間が経つとうまくいきます。

15
リンクされたリストはどのような状況で役立ちますか?
ほとんどの場合、リンクされたリストを使用しようとする人がいますが、私には選択が悪い(または非常に悪い)ように思えます。おそらく、リンクされたリストがデータ構造の適切な選択である、またはそうでない状況を調査することは有用でしょう。 理想的には、データ構造の選択に使用する基準、および特定の状況でどのデータ構造が最適に機能する可能性が高いかについて回答が説明されます。 編集:私は言わなければなりません、私は数だけでなく答えの質にもかなり感銘を受けました。私は1つしか受け入れることができませんが、もう少し良いものがなかったら、受け入れる価値があったと言えるでしょう。リンクされたリストが真の利点を提供する状況を指摘したカップル(特に、私が最終的に受け入れたもの)のみ。スティーブジェソップは、1つだけでなく3つの異なる答えを思いついたので、何らかの名誉ある言及に値すると思います。もちろん、回答ではなくコメントとしてのみ投稿されていたとしても、Neilのブログエントリも一読の価値があると思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.