2012-06-24 6 views
6

最近、インタビューの質問でperlの文字列を逆にするように頼まれました。私はコードを書いて、テストするための文字列をいくつか与えることを希望しました。私はそれらにいくつかの文字列、多くの文字、無効な文字などの例文を与えました。しかし、彼らはまた、私がテストする最も長い文字列が何であるか尋ねました。私は何を伝えるべきか分からなかった。 したがって、この質問。 perlコードでテストできる最長の文字列は何ですか?それは何に依存していますか?マシンのメモリ? perlスタンドポイントには何らかの制限がありますか?私が持つことができる最長の文字列は何ですか?

+0

あなたは仕事を得ましたか? – simbabque

答えて

6

最長の文字列に関する公式文書を見つけることができるかどうかを検討していました。私はhttp://perltutorial.orgで見つかった文字列について:

Perlは文字列を一連の文字として定義します。最短の文字列には文字も空文字列も含まれません。 最長の文字列には、コンピュータの使用可能なメモリに制限されている無制限の文字を含めることができます。

これは公式十分なあなたのためにあるかどうかはわかりません。 FAQやPerldocで何かを見ていただければ幸いです。これは、その中に文字列処理原料の束を持っているのPerlのFAQ#4である

my $rev_string = reverse $string; 

:正式にPerlで文字列を逆にするところで

、。 の文字列を逆に質問は、誰かが彼らの秘密のPerlのものを知っているかどうかを確認するための古いトリックのインタビューの質問です。ほとんど誰もがreverseが配列を逆転することを知っていますが、文字列を逆にすることも知っていますか? Noobiesは、複雑なアルゴリズムのいくつかの並べ替えを実行し、インタビュアーはその人を抱きしめていないと感じる理由があります。

個人的には、誰かにインタビューしていたら、私はこの質問をしました。誰かがエレガントなアルゴリズムで現場に現れ、短くて長くて無効な文字で動作する方法を教えてくれました。あなたはいつでも新しい愚かなPerlのトリックを学ぶことができますが、すぐにあなたの足のタイプの思考は見つけるのは難しいものです。

誰かが私にインタビューで同じ質問をしたとき、私はずっと前に逆のストリングトリックを学んだ。私はそれを見て、FAQでそれを見つけ、私がそれをしたことを実現しましたは間違ってです。私はPerlをほぼ20年間使用してきました。Perl文字列を逆転させなければならなかった時代を考えることはできません。

+5

perltutorial.orgは[推奨しない](http://perl-tutorial.org/rejected/)、すべての情報が疑わしい[by連合](http://enwp.org/Association_fallacy)。 SOの回答は、信頼できる質の高いリソースを挙げるべきです。 – daxim

+0

多くの場合、プロセスはコンピュータのメモリの一部にしかアクセスできないため、コンピュータのメモリよりもはるかに制限されている可能性があります。 – ikegami

+0

@daxim - 私はキャメルブックで何か似たようなことを覚えていますが、それを見つけることはできませんでした。私はPerlmonkの上記と同様の記述を見つけましたが、そこには参照がありません。たぶん正解はおそらく必要以上に長くなっているはずですので、心配しないでください。 –

5

基本的には、プログラム(つまりPerl)がアクセスできるメモリの量によって異なります。あなたが32ビットのマシンを持っているなら、それは4 GiBの下にあります。 64ビットマシンを使用している場合は、使用可能な仮想メモリによって制限値が大きくなる可能性があります。固定の制限はありません。

+0

だから、どのように長い文字列を作成するか、言い換えれば、テストのために可能な最長の文字列を作成することができますか?私がよく分からないのは、テストケースの1つとして長い文字列を持つ必要があるということです。 – user238021

+2

@ user238021:この*コンピュータはハングします。あなたは警告されている:perl -e 'print scalar reverse a .. "z" x999' – jm666

関連する問題