2017-04-05 8 views
1

これは「パラシュートされたロボット」のパズルとは少し異なります。無限の線の上に2台のロボットがぶら下がっています。彼らの距離は相対的なものではないので、距離が5mか5kmかどうかは関係ありません。権利 無限の2つのロボット

  • 二つの移動に左
  • 一手に

    • 一つの動き:あなたは、磁石で満たすために、2台のロボットをプログラムする必要があり、あなたが持っている唯一の選択肢であると仮定右
    • 停止へ
    • 二つの動きを残し、ロボットは次の目にすでに存在する場合

    ロボットが知ることができません磁石の上にあるかどうかを確認1つのロボットを動かすと、他のロボットも同じ方向に移動します。 2つのロボットが磁石で会合するアルゴリズムを定式化する。

    私はこの問題に対する解決策を立てることができません。パズルの解決策はありますか?私は両方のロボットが同じプログラムを実行することができると思う

  • +4

    いつも同じ方向に動くと、彼らはこれまでに会うことができますか?これは、最初の距離が保存されていることを意味していませんか? –

    +0

    @NicoSchertlerそれは質問されたものですが、私も質問と混同されています – Cham

    答えて

    1

    var steps = 10, count = 10, left = true; 
    while (!isRobotOnMagnet()) { 
        if (count-- > 0) 
         if (left) 
          oneMoveLeft(); 
         else 
          oneMoveRight(); 
        else { 
         steps *= 2; 
         left = !left; 
         count = steps; 
        } 
    } 
    

    ない、それを策定するための最もエレガントな方法を、改善の余地があります。アイデアは、いくつかのステップを左に移動し、次に右に量を倍増させ、再度左に量を倍増するなど...あなたは最終的に磁石を見つけるでしょう。

    +0

    はい、同じプログラムを実行できるロボットです – Cham

    +0

    どのようにロボットは磁石で会うつもりですか? 1人だけがそれに触れることができますが、あなたの答えは両方ではありませんか? – Cham

    +1

    ロボットが磁石の上にあるときに停止するが、もう片方が動いているので、最終的には両方とも磁石で終わることはない。彼らは同じプログラムを実行しますが、それぞれは独自のコンピュータ上で動作します。 – maraca