C# を使用してアルファベットを a から z までたどる
P粉982881583
2023-08-23 09:51:55
<p>アルファベットの横断について質問があります。
「a」で始まり「z」で終わるループが必要です。そして、ループは「aa」から始まり「az」までカウントアップされます。次に、「ba」から始まり、「bz」などに進みます...</p>
<p>誰か解決策を知っていますか? </p>
<h2>ありがとうございます</h2>
<p>編集: 忘れていました。関数に文字「a」を指定すると、関数は「b」を返さなければなりません。 「bnc」が指定された場合、関数は「bnd」を返す必要があります。 </p>
まずは、a-z、次に aa-zz
を使用してみてください。 リーリーこれは「zz」で停止することに注意してください。もちろん、ループ内には醜い繰り返しがいくつかあります。幸いなことに、これは簡単に修正でき、より柔軟にすることもできます:
2 回目の試み: より柔軟なアルファベット
リーリーここで、a、b、c、d、aa、ab、ac、ad、ba などのみを生成したい場合は、
GetExcelColumns("abcd")
を呼び出すことができます。3 回目の試み (さらに改訂) - 無限シーケンス
リーリー再帰を使用するとコードがより明確になる可能性がありますが、効率はそれほど高くありません。
特定の時点で停止したい場合は、LINQ を使用できることに注意してください:
リーリー「再起動」イテレータ
特定のポイントから反復子を再起動するには、softwarejedi が提案したように
あるいは、Skipwhile
を使用できます。もちろん、これは非常に非効率です。呼び出し間で任意の状態を維持できる場合は、(どちらのソリューションでも) イテレータを保持できます。 リーリーforeach
を使用するようにコードを構造化し、実際に使用できる最初の値が見つかったときに中断することもできます。
編集: 元の投稿の最新の編集内容とまったく同じように作成してください
これはテスト済みの最も単純な解決策です:
リーリー