関連するが、これは正の整数のみを必要とし、可換である必要はない
Cantorペアリング関数は、このウィキペディアの記事で説明されています。基本的に、2つの値XとYに適用されると、結果が与えられて元の値XとYを取得できるような操作です。
あなたの仕事は、実行する機能と実行する機能の2つの機能を設計X, Y -> Z
することZ -> X, Y
です。キャッチは次のとおりX, Y -> Z
です。可換でなければなりません。これはZ -> X, Y
、入力がX, Y
またはであったかどうかを判断できないことを意味しますY, X
。
この課題の正式な定義は次のとおりです。
カウント可能な数の無限集合Sを選択します。
次のタスクを実行する2つの関数を設計します。
- Sの値の順序付けられていないペアを指定すると、Sの値を返します
- 初期関数からの戻り値を指定すると、最初の関数を通過したときに入力整数に評価される値の順序付けられていないペアを返します。入力が最初の関数からの戻り値でない場合、この逆関数の動作は気にしません。
必要条件
- 結果は実行間で同一である必要があります。
{a, a}
順不同のペアです
注:証拠を提供すると、あなたの答えは私から賛成票を受け取る可能性が高くなりますが、答えが得られたらテストし、それがうまくいくと確信したら票決します。
1,2
、ペアの1 1,3
つがいつペアになる可能性もあります(両方ともを使用1
)。
f
とその逆g
、sorted((x, y))
と同じでなければなりませんsorted(g(f(x, y)))