前書き
次の例を考えてみましょう。
CODE
+ GOLF
——————
GREAT
これは、各文字が10進数を表し、単語が自然数を表す方程式です(類似した文字は類似した数字を表し、異なる文字は異なる数字を表します)。タスクは、方程式が正しいように、各文字を数字の値と一致させることです。上記の方程式の1つの解決策は次のとおりです。
9265
+ 1278
——————
10543
あなたのタスク
あなたの仕事は、上記のような方程式を解くことができるプログラムまたは関数を書くことです。
入力
入力は、次の形式の文字列です。
[A-Z]+\+[A-Z]+=[A-Z]+
例:
CODE+GOLF=GREAT
AA+BB=CC
スペースは省略され、大文字のAとZの間の文字のみが使用されます(特殊文字や小文字は使用されません)。
この文字列は、標準入力、ファイル、または関数パラメーターから読み取ることができます。
出力
出力形式には次の2つのオプションがあります。
- 数字が置換された元の方程式
- 文字とその値のリスト
複数のソリューションがある場合、それらのいずれか(ただし1つのみ)が返されます。解決策がない場合、プログラムは空の文字列またはnullを返す必要があります。出力は文字列として返すことができ、標準出力またはファイルに書き込むことができます。
例:
9265+1278=10543
A=1 B=2 C=3
(任意の区切り文字を使用できます)
ルール
- 物事を簡単にするために、数字は0から始まりますが、無効な解決策として先頭に0を付けた数字を処理できます。
- 同様の文字は同様の数字を表し、異なる文字は異なる数字を表します
- 任意の言語と選択した言語の標準ライブラリを使用できます(外部ライブラリはありません)
- インターネット上のリソースに接続することはできません(とにかくどうして?)
- これはコードゴルフタスクで、最短のコードが勝ちます。連続する空白文字は単一の文字としてカウントされます。(したがって、空白で書かれたプログラムが自動的に勝ちます)
私は179文字を使用してややハック的なソリューションを持っています。不明な点がある場合は、コメント欄でお尋ねください。
If there are no solutions, the program should return an empty string or null.
無限ループはまだ何も出力しません...私はできますか?