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