面接で尋ねられた、または仕事や教育の一環として説明を求められた可能性のある疑似コードの問題の例を探しています。特定のドメインからの例を探しているわけではないので、設計パターン、アルゴリズム、データ構造、キャッシング戦略、ソフトウェア エンジニアリングと開発に関係するもの、単純または複雑に関係する可能性があります。
たとえば、私が見つけたいくつかの一般的なものは、主に並べ替えと検索の手法に関連しています。
procedure bubbleSort( A : list of sortable items ) defined as:
do
swapped := false
for each i in 0 to length(A) - 2 inclusive do:
if A[i] > A[i+1] then
swap( A[i], A[i+1] )
swapped := true
end if
end for
while swapped
end procedure
insertionSort(array A)
begin
for i := 1 to length[A]-1 do
begin
value := A[i];
j := i - 1;
done := false;
repeat
if A[j] > value then
begin
A[j + 1] := A[j];
j := j - 1;
if j < 0 then
done := true;
end
else
done := true;
until done;
A[j + 1] := value;
end;
end;
二分探索:
BinarySearch(A[0..N-1], value, low, high) {
if (high < low)
return -1 // not found
mid = low + ((high - low) / 2)
if (A[mid] > value)
return BinarySearch(A, value, low, mid-1)
else if (A[mid] < value)
return BinarySearch(A, value, mid+1, high)
else
return mid // found
}
多くの人が自分の考えや経験を共有してくれれば、疑似コードのアルゴリズムと問題のまともなリストを作成できるかもしれません。
練習として、自分で疑似コード表現を考え出そうとしています。したがって、疑似コードの例が見つからなくても、この方法で表現するのが理想的な概念だと思う場合でも、それは役に立ちます。
また、件名に関連するいくつかの質問もあります。
- 以前にインタビューで書くように頼まれた疑似コードはどれですか?
- これらの質問は、関数の長さが 1 つまたは 2 つの短く単純なアルゴリズムに関連する傾向がありますか?
- 疑似コードを書くときに言語固有の構造を避けるべきですか? 表現は言語に依存しないことを意図しているため、各言語に存在しない Dispose や foreach などの用語を使用しない方が安全ですか?
ありがとう
編集:
私が見つけたさらにいくつかの例をいくつか見つけました。さらに見つけたら編集を続けます。
単語を逆にするのではなく、文内の単語の順序を逆にする単一の文字列を取る関数を作成します。
入力: 「猫は別の猫と一緒にマットの上に座っていました!」
出力: 「ねこ!もうひとつマット付き、その上に座ったねこ」
大文字と小文字、句読点を無視して、その文字列内で最も多く出現する単語を返す単一の文字列を受け取る関数を作成します。複数の単語の出現回数が同じ場合、最初に出現した単語を返します。
入力: 「猫は別の猫と一緒にマットの上に座っていました!」
出力:
大文字と小文字を区別せずに、特定の文字列内で出現回数が最も多い文字を見つける関数を作成します。出現頻度が等しい文字が複数ある場合は、文字列内で最初に出現した文字を返します。
入力:「キャラクター」
出力: c
文字列を逆にする関数を書く
入力:「逆」
出力: "esrever"