テクノロジーインタビューで、AがBに等しく、BがCに等しく、AがCに等しい「オブジェクト」(引用符に注意)をトラバースするアルゴリズムを書くように頼まれました。
object
問題のは部品で構成されA,B and C
、それが形成しますtriangle
。人は、オブジェクト(コレクション)にすべて等しい部分が含まれているかどうかを単純に尋ねています。
インタビュアーは、部品A, B and C
が提示されているかどうかを知りたいので、無限ループに陥ることなく、それらがすべて等しいかどうかを確認できます。この質問は単純に理解するために愚かであり、それでも彼らはそれを尋ねることでそれをうまく処理することができました。
それらはすべて等しい時A == B && B == C && A == C
ですが、それは単純化できますA == B && A == C
。
質問の単純さは混乱を招き、実際にはひどい言葉で表現されています。
正しい言い回しがあったはずです。
コレクションの各部分をチェックして、それらがすべて等しいかどうかを確認するアルゴリズムを作成します。無限ループに巻き込まれないように注意する必要があります。例えば; パーツAがBに等しく、BがCに等しく、AがCに等しい場合、問題が発生する可能性があります。
インタビュアーによると、答えは再帰関数を書くべきだったということでした。
はい、are all my parts equal
再帰関数を使用して質問に答えることができます。いいえ、これは効率的なソリューションではありません。
編集:いくつかの考えの後。いいえ、再帰関数を使用して、すべての等しい部分を含むコレクションをチェックすることはできません。
最も効率的なソリューションは次のとおりです。
function are_all_equal(parts)
{
for(int i=1; i < parts.length; i++)
if parts[i] is not same as parts[0]:
return false;
return true;
}
print are_all_equal(parts) ? "yes" : "no";
この問題はプログラミングで発生します。コレクションをテストするためのアルゴリズムを作成するように誰かに依頼することは完全に正常です。プログラミング言語にもよりますが、この問題はたった1行のコードで解決できます。
彼らがしたように言い回し、間違った答えを期待することは正常ではありません。この質問は1年前に尋ねられたものです。あなたが他の場所で仕事をすることを本当に願っています。私は元の投稿から彼/彼女にとって物事がどうなるか興味があります。