だから私はじゃんけんボットを構築しています.プレイヤーがスローを選択した後、ロボットが「チート」して選択を行わないことを確認できるようにする必要があります.
通常、コンピューターで表示する場合、これは選択をハッシュし、場合によってはソルトを提供してから、選択とソルトを明らかにすることによって行われます。しかし、人間が「即座に」検証できるものが欲しいのです。私が選択を単にハッシュ化すると、人々はハッシュを不正に操作することに反則を唱えるでしょう。
だから私の考えは、一種の「ビジュアルハッシュアルゴリズム」を持つことです。人間が自明かつ簡単に実行し、検証できるハッシュアルゴリズムです。
私が今考えているのは、ジャンケン、ペーパー、ハサミの 3 つのボックスを用意し、RPS ボックスの向かいにラベルのない別のボックス A、B、C を 3 つ用意することです。次に、絡み合った線を使用してロックをそれらの 1 つに接続し、紙を別の場所に、C を別の場所に接続します。線が絡み合っているため、ボックス B からはさみなどに線を「たどる」のに時間がかかります。
コンピューターがスローを選択すると、スローに対応するボックスが「強調表示」されます。つまり、シザーズのもつれた線がボックス B につながる場合、ボックス B が強調表示されます。ただし、それがシザーズであったことは明らかになりません。次に、人間は投げを選ぶために、たとえば 3 秒間与えられます。うまくいけば、3 秒では線のもつれを解き、ボックス B から Scissors に戻るには十分な速さではありません。
次に、人間がスローを選択すると、コンピューターははさみを表示し、はさみからボックス B への絡み合った線も強調表示します。これにより、はさみがずっとボックス B につながっていることが明確になり、ごまかしはできませんでした。
これは機能しますが、少し醜く、エレガントではないと思います。人間は、コンピューターが不正行為を行っていないことを簡単に確認できますが、同時に、異常または奇妙に見え、非常に多くの UI 要素が導入されているため、画面が雑然としていたり、信頼できないように見えたりします。UI 要素/グラフィック フットプリントが少ないほど、優れています。
現在、この問題を解決するソリューションはありますか?
- スローの「ハッシュ」と、「元に戻す」のに時間 (少なくとも 3 秒) かかるハッシュアルゴリズムが表示されます。
- スローが明らかになった場合、ハッシュ アルゴリズムが有効に実行されたこと、およびスローが実際にハッシュに対応していることを、視覚的に簡単かつ即座に識別できる必要があります。
- 使用する UI 要素をできるだけ少なくし、グラフィカル フットプリントをできるだけ小さくします。