言語Nimでは、識別子を区別するための規則は、他のほとんどの言語よりもわずかに緩和されています。これらのルールに従う場合、2つの識別子は同等であるか、同じ変数に対応します。
- 両方の最初の文字は同じです (大文字と小文字が区別されます)
- 両方の文字列が同じである(場合に敏感な)除去した後、すべてのインスタンスの文字を
-
と_
チャレンジ
Nim識別子を表す2つの文字列を受け取り、上記のルールで同等であるかどうかに基づいてtrueまたはfalseの値を出力するプログラム/関数を作成します。
仕様書
- 標準のI / Oルールが 適用されます。
- 標準的な抜け穴は禁止されています。
- 文字列にはASCII印刷可能文字のみが含まれます。あなたはしていない、それは有効な識別子だかどうかを確認する必要があります。
- 文字列は、2つの個別の入力、文字列のリストなどとして使用できます(ドリルを知っています)。
- 空の文字列を処理する必要はありません。
- 出力は、真偽値と偽値の両方で一貫している必要があります。
- この課題は、すべての言語で最短のアプローチを見つけることではなく、各言語で最短のアプローチを見つけることです。
- あなたのコードがされるバイト数で得点特に指定がない限り、通常はエンコーディングUTF-8で、。
- このタスクを実行する組み込み関数は許可されますが、組み込みに依存しないソリューションを含めることをお勧めします。
- 「実用的な」言語であっても説明が奨励されます。
テストケース
Input Output
count, Count falsey
lookMaNoSeparator, answer falsey
_test, test falsey
test, tset falsey
aVariableName, a_variable_name truthy
numbers_are_cool123, numbersAreCool123 truthy
symbolsAre_too>_>, symbols_areTOO>> truthy
Ungolfedリファレンス実装
これはNimで書かれています。
import strutils, re
proc sameIdentifier(a, b: string): bool =
a[0] == b[0] and
a.replace(re"_|–", "").toLower == b.replace(re"_|–", "").toLower
f("test", "tset")
ます。1つの答えが予想外の結果をもたらすと思うからです。
>
?
f("_test", "test")
ます。