私はCodeFightsというサイトで初心者コーディングをしています。私は、より高い評価を受けたコーダーの多くが私よりはるかに簡潔な答えを持っていることに気付きました。 、より簡潔なアルゴリズムを書くには?
が文を考えると、それはpangramであるかどうかを確認します
は、例えば、この問題を取ります。
例: 文章で「茶色のキツネが怠惰な犬の上を飛びます」と出力 は でなければなりませんisPangram(sentence)= true;
sentence = "abcdefghijklmnopqrstuvwxya"の場合、出力は isPangram(sentence)= falseである必要があります。入力/出力
- [期限] 3000ms(CS)
- [入力]列文
範囲におけるそれらのASCIIコードで文字を含む文字列[ 32,126]。
保証制約:
1≤≤sentence.length 100
- [出力]文はパングラムがある場合
真、そうでない場合はfalseのブール。[C#の]構文のヒント
// Prints help message to the console // Returns a string string helloWorld(string name) { Console.Write("This prints to the console when you Run Tests"); return "Hello, " + name; }
私のコードは次のとおりです。
bool isPangramMine(string sentence)
{
char[] stringToCharArray = sentence.ToLower().Distinct().ToArray();
Array.Sort(stringToCharArray);
string joinedkArrayToCheck = String.Join("", stringToCharArray);
MatchCollection matches = Regex.Matches(joinedkArrayToCheck, "[a-z]");
string[] stringMatchArray = new string[matches.Count];
for (int i = 0; i < matches.Count; i++)
stringMatchArray [i] = matches[i].Groups[0].Value;
string joinedArrayToString = String.Join("", stringMatchArray);
Console.WriteLine(joinedArrayToString);
if (joinedArrayToString .Length == 26)
return true;
else
return false;
}
最高の定格C#の答えは、スローモーションという名前の誰かによって書かれました。その答えは次のとおりです。
int isPangram(string s) => s.ToUpper().Distinct().Count(_ => _ > 64 && _ < 91)/26;
スローモーションのコードがreturn
キーワードを使用せずに値を返している方法は?
このような回答はhereとhereですが、どのように動作するかを説明せずに簡略化したコードしかありません。
私が使用できるリソースを教えてくれる答えを探していますが、自分でSlomoのコードを分解していますが、自分自身で説明する時間がある人も大いに感謝しています。
この種の質問は[codereview.se]に適しています。 – Filburt
正確なプログラミングの問題については尋ねていないが、コーディングをより賢くする方法について質問しているので、それは話題にはならないと私は言うだろう。これは誰も単に答えで説明することができず、そのようなサイトはあなたをクリックするだけです。これを解決するには、常に学び続ける努力が必要です。 – Steve
最高の定格応答が仕様のリターンタイプ要件を満たさないことは皮肉です。 –