私はSOでこの質問に出会い、それが素晴らしいゴルフの挑戦になると思った。だからここにある:
チャレンジ:
文字列のシーケンスを1行に1つずつ読み取り、各文字列が同じ文字を持つすべての位置のリストを出力するプログラムを作成します。
入出力:
入力は、1行以上の印刷可能な非空白ASCII文字で構成され、各行に改行が続きます。すべての入力行が同じ長さであると仮定することができます。改行は入力の一部と見なされません(つまり、一致する文字として出力するべきではありません)。
入力例(SO質問から恥知らずに盗まれた):
abcdefg
avcddeg
acbdeeg
入力を読み取った後、プログラムは一致する各列の位置とそれに含まれる文字を印刷する必要があります。(プログラムは、一致する列がないことを早期に判断できる場合、それ以上の入力の読み取りを停止できますが、する必要はありません。)妥当な出力形式は許可されます。特に、ポジションに0ベースまたは1ベースのインデックスを使用できます。
上記の入力の出力例(0ベースのインデックス付けを使用):
0: a
3: d
6: g
得点:
これはコードゴルフなので、最短の回答が勝ちます。同点の場合、追加の機能に対して小数のタイブレーカー文字が授与される場合があります。
- -½文字。長さが等しくない入力行を正しく処理します。(出力には、最短の入力行の終わりを超えた位置を含めないでください。)
- −¼ UTF-8でエンコードされた任意のUnicode文字で構成される入力を正しく処理するための1/4文字。
インスピレーションについては、SOの質問でいくつかの未解決のソリューションを見つけることができます(上記を参照)。
明確化:
のように位置と文字を単純に連結しても、「合理的な出力」としてはカウントされ
0a3d6gません。出力の各要素を明確に解析できるように、出力の各要素間に何らかの種類の区切り文字(スペースなど)を提供する必要があります。入力は標準入力ストリーム(
stdin)で提供されるか、選択した言語にとって最も自然なテキストファイル入力メカニズムを使用して提供されます。(選択した言語がいない場合は持っているファイル入力のための自然なメカニズムを、精神内の最も近いと思われるものは何でも。)読み込むデータがなくなると(つまり、ファイルの終わり条件が発生すると)、入力は終了します。必要に応じて、入力を空白行で終了する必要がある場合があります(当然、入力の一部としてカウントしないでください)。そうする場合は、他の人がテストのために正しい入力を提供できるように、回答にそれを記載してください。
最後の行を含むすべての入力行は、改行文字で終わります。あなたの答えは、この改行を一致する列として報告してはいけません。(最後の行が改行で終わらない入力もソリューションで処理できる場合は問題ありませんが、必須ではありません。)