左中央右(LCR)コードゴルフ


10

パーティーで、ゲームLCRを紹介されました。スキルがなく、ランダムなチャンスしかないので、今は素晴らしいゲームではありません。でも、それでコードを書くことができると思ったので、Rでゲームをモデル化する簡単なプログラムを作りました。

ゲームのルールがWikipediaから変更され、私たちのプレイ方法に一致しました:

各プレイヤーは少なくとも3つのチップを受け取ります。プレーヤーは順番に3つの6面サイコロを振って、それぞれに片側に「L」、「C」、「R」と残りの3面に1つのドットが付いています。プレーヤーは、投げられた「L」または「R」ごとに、左または右にそれぞれ1つのチップをプレーヤーに渡す必要があります。"C"は、チップが中心(ポット)であることを示します。ドットは効果がありません。

プレーヤーのチップが3つ未満の場合でも、ゲームに残っていますが、チップの数は、3つすべてをダイスに振るのではなく、自分のターンにダイスを振る数です。チップが0のプレイヤーは、自分のターンにサイコロを渡しますが、他のプレイヤーからチップを受け取り、それに応じて次のターンを取ることができます。勝者はチップを中央に置いた最後のプレーヤーです。

コンテスト:プレーヤーの数と開始チップの数を入力し、LCRのゲームをシミュレーションして、各プレーヤーがロールした後のゲームの状態を示す、選択した言語でプログラムを作成します。

たとえば、ゲームは次のように出力されます。

[[[3,3,3,3],0],[[1,4,3,4],0],[[1,4,3,4],0],[[1,4,1,4],2],[[1,4,1,2],4],
[[0,4,1,3],4],[[0,3,2,3],4],[[0,3,0,3],6],[[0,3,1,1],7],[[0,3,1,1],7],
[[2,0,1,1],8],[[2,0,0,1],9],[[2,0,0,0],10],[[0,1,0,0],11],
[[1,0,0,0],11],[[1,0,0,0],11],[[1,0,0,0],11],[[0,0,0,0],12]]

ht:ジョナサンアラン

出力はこのように正確である必要はありませんが、サイコロの目、各プレーヤーのチップ数、および各ターンのセンターのチップ数を簡単に見分けることができます。

それはコードゴルフなので、最短のコードが勝ちます。


3
「サイコロの目がわかりやすい」-ターン制なので、サイコロの振る舞いはプレイヤーがそうであるように、チップの状態から暗黙的(見分けやすい)です。この出力例には必要なものがすべて含まれていると私は主張し[[[3,3,3,3],0],[[1,4,3,4],0],[[1,4,3,4],0],[[1,4,1,4],2],[[1,4,1,2],4],[[0,4,1,3],4],[[0,3,2,3],4],[[0,3,0,3],6],[[0,3,1,1],7],[[0,3,1,1],7],[[2,0,1,1],8],[[2,0,0,1],9],[[2,0,0,0],10],[[0,1,0,0],11],[[1,0,0,0],11],[[1,0,0,0],11],[[1,0,0,0],11],[[0,0,0,0],12]]ます。
ジョナサンアラン

1
@JonathanAllan、それは私のために働く。
CTホール

1
@KevinCruijssen、いい質問です。どちらにしてもいいと思います。
CTホール

1
@CTHallその場合、私は自分の回答(Javaと05AB1E)の両方を編集し、ありとなしの両方を含めました。:)
Kevin Cruijssen

1
各命令ポインタが特定のプレーヤーとして機能するRunicでこれをほぼ実行したいと考えています。(プレーヤーの入力を無視しても)できるかどうかはわかりませんが、できればそれでいいでしょう。
Draco18sはもはやSE信用していない

回答:


4

Emacs Lisp、279バイト

(defmacro n(i)`(incf(nth ,i c)))
(defun f(p s)(g(let((a'(0)))(dotimes(i p)(push s a))(princ a))0 p))
(defun g(c v p)(dotimes(i(min(nth v c)3))(decf(nth v c))(case(random 6)(0(n(mod(1- v)p)))(1(n(mod(1+ v)p)))(2(n p))(t(n v))))(princ c)(or(eq(-sum c)(nth p c))(g c(mod(1+ v)p)p)))

この関数をとして使用します(f 4 3)

より読みやすいバージョン:

(defmacro n (i) `(incf (nth ,i c)))

(defun f(p s)
  (g
   (let ((a '(0)))
     (dotimes (i p)
       (push s a))
     (princ a))
   0
   p))

(defun g (c v p)
  (dotimes (i (min (nth v c) 3))
    (decf (nth v c))
    (case (random 6)
      (0 (n (mod (1- v) p)))
      (1 (n (mod (1+ v) p)))
      (2 (n p))
      (t (n v))))
    (princ c)
    (or (eq (-sum c) (nth p c))
    (g c (mod (1+ v) p) p)))

出力例:

(3 3 3 3 0)(1 4 3 4 0)(2 2 4 4 0)(2 2 2 5 1)(4 2 2 3 1)(2 2 2 4 2)(2 1 3 4 2)(2 2 0 4 4)(2 2 0 4 4)(1 2 0 4 5)(2 1 0 4 5)(2 1 0 4 5)(2 1 1 3 5)(0 1 1 3 7)(1 0 1 3 7)(1 0 1 3 7)(1 0 3 1 7)(1 0 3 1 7)(1 0 3 1 7)(1 1 2 1 7)(1 1 3 0 7)(0 1 3 0 8)(1 0 3 0 8)(1 1 1 1 8)(1 1 2 0 8)(0 1 2 1 8)(0 1 2 1 8)(0 1 1 1 9)(0 1 1 1 9)(0 1 1 1 9)(0 1 1 1 9)(0 1 1 1 9)(0 1 1 0 10)(0 1 1 0 10)(0 0 1 0 11)(0 0 1 0 11)(0 0 1 0 11)(0 0 1 0 11)(0 0 1 0 11)(0 0 0 0 12)

3

Java 8、281 277 275 274 253バイト

ターンプレーヤーのチップが残っていない場合に同じ状態を出力するバージョン:

p->n->{java.util.Arrays A=null;int c[]=new int[p],i=0,t,r,s=1,u,f=9;for(A.fill(c,n);s>0;f=0,System.out.print(A.toString(c)))for(t=c[++i%p],t=t>3?3:t;t-->f;r*=Math.random(),c[i%p]-=1-r/3,s=c[u=(i+r-1+p)%p]+=1-r&1-r/4,c[u]=s<0?0:s,s=A.stream(c).sum())r=6;}

配列の3番目のプレーヤーから開始します。

オンラインでお試しください。

チップが残っていないプレーヤーをスキップするバージョン(274バイト):

p->n->{java.util.Arrays A=null;int c[]=new int[p],i=p,t,r,s=1,u,f=9;for(A.fill(c,n);s>0;f=0,System.out.print(A.toString(c))){for(t=c[i%p],t=t>3?3:t;t-->f;r*=Math.random(),c[i%p]-=1-r/3,s=c[u=(i+r-1+p)%p]+=1-r&1-r/4,c[u]=s<0?0:s)r=6;for(s=A.stream(c).sum();s>0&c[++i%p]<1;);}}

配列の最初のプレーヤーから開始します。

オンラインでお試しください。

@OlivierGrégoireのおかげで-7バイト。

説明(2番目のバージョンの):

p->n->{                      // Method with two integer parameters and no return-type
  java.util.Arrays A=null;   //  Create a static Arrays-object to save bytes
  int c[]=new int[p],        //  Integer-array with chips of each player (0 by default)
      i=p,                   //  Index integer, starting at the amount of players
      t,                     //  Temp integer to roll 3 dice
      r,                     //  Temp integer for the dice-result
      s=1,u,                 //  Temp integers (and `s` is also the total-sum integer)
      f=9;                   //  Flag integer, starting at a single digit above 3
  for(A.fill(c,n);           //  Give each player in the array the chips
      s>0                    //  Loop as long as the total-sum is not 0 yet
      ;                      //    After every iteration:
       f=0,                  //     Set the flag to 0
       System.out.print(A.toString(c))){
                             //     Print the current state
    for(t=c[i%p],            //   Set `t` to the current player's chips
        t=t>3?3:t;           //   If this is larger than 3: set it to 3 instead
        t-->f                //   Loop that many times (1, 2, or 3)
                             //   (the flag is used to skip this loop the first iteration,
                             //   so we can print the initial state)
        ;                    //     After every iteration:
         r*=Math.random(),   //      Roll the dice in the range [0,5]
         c[i%p]-=r<3?        //      If the dice-roll is 0, 1 or 2:
                  1          //       Remove a chip from this player
                 :0,         //      Else: Leave the chip-amount the same
         s=c[u=(i+r-1+p)%p]  //      If the dice-roll is 0, go to the player left
                             //      If the dice-roll is 2, go to the player right
             +=1-r&1-r/4,    //       And add a chip to this player
         c[u]=s<0?0:s)       //      Change negative amount of chips to 0
      r=6;                   //    Reset the dice-roll to 6 so we can roll again
    for(s=A.stream(c).sum(); //   Calculate the total sum of the chips of the players
        s>0&                 //   If this sum is larger than 0:
         c[++i%p]<1;);}}     //    Determine the next player in line with at least 1 chip

1
(小さな)ゴルフなしで私の賛成票を残すs=0;for(int C:c)s+=C;ことができます:D (21バイト)をs=A.stream(c).sum();(20バイト)に置き換えることができます
OlivierGrégoire

また、完全に大丈夫かどうかはわかりません:c[i%p]-=r<3?1:0c[i%p]-=1-r/3。これは2バイトを節約します。
オリヴィエ・グレゴワール

1
OlivierGrégoireああ、再使用のスマートな方法@ Aからjava.util.Arrays。:Dそしてそれをループに入れてセミコロンを節約することで-2バイトになります。そして1-r/3、確かに正しいです(ここを参照)。ありがとう。
Kevin Cruijssen、

ループ比較のデクリメントによる素晴らしいトリック。私はそれを盗むかもしれません。
Stackstuck

1
以前に削除したコメントを無視:私の真理値表はオフでした。これは固定されたものです:(s=c[u=(i+r-1+p)%p]+=1-r&1-r/4と比較して2バイトが節約されますs=c[u=(i+r%2*2-1+p)%p]+=r<2?1:0
OlivierGrégoire19年

2

パイソン2159の 148バイト

from random import*
n,c=input()
g=[c]*n;i=0
while sum(g):exec"r=randrange(6);g[i]-=1;g[i-[0,1,~-n][max(0,r-3)]]+=r>0;"*min(3,g[i]);i=(i+1)%n;print g

オンラインでお試しください!

すべてのロールの後にすべてのプレーヤーのチップを印刷します


良い試みですが、コードは中央のチップの量を示していません。
CTホール

3
@CTHall中央のチップは常にと等しくなりn*c - sum(players)ます。明示的に書き出す必要がある場合は、次のようにします
TFeld

それは本当だ。許可します。
CTホール

2

ゼリー、39 バイト

+2繰り返し動作を修正します(¡前にnilad so- «3Ḣ$>を付ける必要があります⁸FḢ«3

回転する出力リストを定義して、以前に行動したプレーヤーに属するチップを左側に置くことができれば、最も右側を取り除くことができます33バイトで 6バイト(ただし、私の意見では、それを読むのは少し厄介です)。

ẋµ’1¦‘.,2ŻX¤¦$¹Ø.X¤?⁸FḢ«3¤¡ṙ1µSпṙ"JC$$

プレーヤーのチップ数を左側に、プレーヤーの数を右側に受け入れるダイアディックリンク。これにより、ゲームの開始時および各ターン(0チップがパスを強制するターンを含む)後のプレーヤーチップカウントのリストが表示されます。 。

オンラインでお試しください!

どうやって?

各プレーヤーは、チップカウントに応じて最大3回、コインを投げます。プレイヤーは、彼らが何もしない頭を反転させたが、彼らはそれからLへのチップを失う3面ダイスを転がし、彼らフリップ尾場合、CまたはR.(プレイヤーが0のチップを持っていたときに0が反転することに注意を渡すことと同じである。)場合には
これが繰り返されます
実装は、プレーヤーのチップの合計が0になるまで続きます。この実装では、プレーヤーを1回転左に1回転させ、結果の状態を回転させて、あたかもそうではないかのようにすべてを揃えます。

ẋµ’1¦‘.,2ŻX¤¦$¹Ø.X¤?⁸«3Ḣ¤¡ṙ1µSпṙ"JC$$ - Link: chipsPerPlayer, C; numberOfPlayers, P
ẋ                                      - repeat C P times (making a list of P Cs)
                              п       - collect up results in a list while...
                             S         - ...п condition: sum (while players have chips)
 µ                          µ          - ...п do: the monadic chain:
                         ¡             -   repeat...
                        ¤              -   ...¡ number of times: nilad and link(s) as a nilad:
                    ⁸                  -     chain's left argument (the chip list)
                     «3                -     minimum with three (vectorises)
                       Ḣ               -     head -- i.e. min(left-most player's chips, 3)
                   ?                   -   ...¡ action: if...
                  ¤                    -     ...? clause: nilad and link(s) as a nilad:
               Ø.                      -       the list [0,1]
                 X                     -       random choice (0 is falsey while 1 is truthy)
             $                         -     ...? then: last two links as a monad:
    ¦                                  -       sparsely apply...
   1                                   -       ...¦ to indices: one (the left-most)
  ’                                    -       ...¦ action: decrement (player lost a chip)
            ¦                          -       sparsely apply...
           ¤                           -       ...¦ to indices: nilad and link(s) as a nilad:
      .,2                              -         literal pair of literals .5 and two = [.5,2]
         Ż                             -         prepend a zero = [0,0.5,2]
          X                            -         random choice
                                       -         -- Note application to index .5 is a no-op
                                       -                 index 0 is the right-most entry (L) 
                                       -                 index 2 is the second entry (R) 
                          ṙ1           -   rotate the list left by one for the next п loop
                                     $ - last two links as a monad:
                                    $  -   last two links as a monad:
                                  J    -     range of length -- i.e. [1,2,3,...,turns+1]
                                   C   -     complement = 1-x        [0,-1,-2,...,-turns]
                                 "     -   zipped-appliction of:
                                ṙ      -     rotate left by
                                       -   -- i.e. rotate 1st left by 0, 2nd left by -1, ...)

ラインノイズのように見えるこれらの言語で人々がどのようにコーディングするかについて、私は少し感銘を受けました。:)しかし、私はいくつかの言語しか知らないので、おそらくもっと経験を積んでいくでしょう。
CTホール

2
あなたはwikiでチュートリアルをチェックすることができます、それはかなり良いです。コードの内訳を投稿したら、うまくいけば、私がやったことをフォローできます...
Jonathan Allan

...しかし、これは微妙に正しくない動作ですか?仕様によると、1回のコイン投げではなく、3つのサイコロをすべて振る必要があります。説明に誤りがあり、コードに問題がない場合を除きます。
Stackstuck

@Stackstuck-説明の概要は少し誤解を招くものであり、コインは毎回裏返されます。直します-ありがとう。FWIWコードの内訳の説明は正しい-コインフリップ分岐はØ.X¤?、3回繰り返しの命令内にネストされてい⁸«3Ḣ¤¡ます。
ジョナサンアラン

あ、そう。お役に立てて嬉しいです。
Stackstuck

1

C#、356?+13?バイト

必要ですusing System;私はそれをカウントするために必要だ場合は、以下のコードに13バイトの合計。それ以外の場合は、任意のクラスでそれをplonkして呼び出しますL(players, starting chips);

static int i,j,k,l;public static void L(int p,int s){var r=new Random();var x=new int[p];for(i=0;i<p;i++)x[i]=s;
for(i=0;i<s*p;){for(j=0;j<p;j++){for(l=0;l<x[j]&l<3;l++){k=r.Next(-1,5);if(k<2){if(k==0){x[j]--;i++;}else{x[(p+j+k)%p]++;x[j]--;}}}Console.Write(a(x)+i);}}}public static string a(int[] x){var n="|";for(l=0;l<x.Length;)n+=x[l++]+" ";
return n;}

2,2ゲームの出力例:

|1 3 0|2 2 0|1 3 0|1 3 0|0 4 0|0 3 1|0 3 1|2 1 1|1 2 1|1 2 1|0 3 1|0 3 1|0 3 1|1 1 2|1 1 2|1 1 2|0 2 2|1 1 2|0 1 3|1 0 3|0 1 3|0 1 3|0 1 3|1 0 3|1 0 3|1 0 3|0 1 3|1 0 3|0 1 3|0 0 4

ゴルフレスバージョン:

using System;
//class omitted.
static int i,j,k,l;
public static void LCR(int pl, int sc){
var r=new Random();
var state = new int[pl];
for(i=0;i<pl;i++)state[i]=sc;
for(i=0;i<sc*pl;){
    for(j=0;j<pl;j++){
        for(l=0;l<state[j] && l<3;l++){
            k=r.Next(-1,5);
            if(k<2){
                if(k==0){state[j]--;i++;}else{state[(pl+j+k)%pl]++;state[j]--;}
            }
        }
        Console.Write(a(state)+i);
    }
}
}
public static string a(int[] x){
    var n="|";
    for(l=0;l<x.Length;)n+=x[l++]+" ";
    return n;
}

さて、これはここで私の最初の答えです。私を食べないでください。
Stackstuck

ああ、ドラット。配列の印刷動作がJavaと混同されました。私はただ…修正を加えて戻ってきます。
Stackstuck

さて、それは修正されました、出力は間違いなく動作するはずです。
Stackstuck

...ああ、いや、もう1つエラーがあります。
Stackstuck

動作が実際に残っているときにモジュロと言う人は...それをすべきではありません。そこで、90%がこれで動作することを確信しています。
Stackstuck

1

C#(Visual C#Interactive Compiler)201 199バイト

n=>m=>{var r=new Random();var j=Enumerable.Repeat(n,m).ToList();for(int i=0;j.Any(c=>c>0);i++,Print(j))for(int k=0,x=r.Next(6);k++<Math.Min(j[i%m],3);j[((x<1?-1:1)+i+m)%m]+=x<2?1:0,j[i%m]-=x<3?1:0);}

オンラインでお試しください!

startingChips=>playerNum=>{
//Instantiate a new random number generator
var rng = new Random();
//Create a list of chips
var players = Enumerable.Repeat(startingChips, playerNum ).ToList();
//Loop as long any player still has chips
for(int turnNum = 0;players.Any(c=>c>0);
//And print the result every iteration
i++,Print(j))
//Get a random number within the range of 0-5 and loop for...
for(int k = 0,randomNum = rng.Next(6);
//either 3 or the amount of chips we have, whichever is smaller
k++<Math.Min(players[turnNum % playerNum ],3);
//Increment either the right player if the random number is 1, else increment the right player if it is 0
players[((randomNum<1?-1:1)+ turnNum + playerNum ) % playerNum ]+=x<2?1:0,
//Decrement current player if the die roll is under 3
players[ turnNum % playerNum ]-=x<3?1:0);}

1

チャコール、61バイト

≔⁰ηWΣθ«≔Eθ⭆⌊⟦κ׳⁼λη⟧‽⁶ιUMθ⁻⁺⁺κ№§ι⊕λ3№§ι⊖λ5LΦ§ιλ›μ2≔﹪⊕ηLθη⟦⪫θ,

オンラインでお試しください!リンクはコードの詳細バージョンです。サイコロと残りのチップを交互に出力します(初期のチップ数も中央のチップ数も出力に含まれません)。説明:

≔⁰η

最初のプレイヤーから始めます。

WΣθ«

チップがなくなるまで繰り返します。

≔Eθ⭆⌊⟦κ׳⁼λη⟧‽⁶ι

現在のプレイヤーのダイスを3つまでロールします。これらのサイコロには0〜5のラベルが付いています。0〜2はドットを表し、3は左へのパス、4は中央へのパス、5は右へのパスです。

UMθ⁻⁺⁺κ№§ι⊕λ3№§ι⊖λ5LΦ§ιλ›μ2

右側のプレーヤーが左を通過したチップの数と、左側のプレーヤーが右を通過したチップの数を加算しますが、プレーヤー自身が通過したチップの数を減算します。

≔﹪⊕ηLθη

次のプレイヤーに進みます。

⟦⪫θ,

プレイヤーが保持するチップの新しい数を出力します。

全員が同時にサイコロを振る方が実際には簡単です。これは、50バイトで行うことができます。これには、サイコロと残りのチップの印刷も含まれます。

WΣθ«≔Eθ⭆⌊⟦κ³⟧‽⁶ιUMθ⁻⁺⁺κ№§ι⊕λ3№§ι⊖λ5LΦ§ιλ›μ2⟦⪫ι,⪫θ,

オンラインでお試しください!リンクはコードの詳細バージョンです。


よくわかりませんが、各ラウンドではなく、各役割の後に保持されるチップの数を説明しているようには見えません。
CTホール

@CTHallああ、つまり、各プレーヤーが個別にロールし、チップの数が更新されるということですか?すみません、見落としました。時間があり次第、回答を更新します。
ニール、

1

05AB1E(レガシー)58 50 49 52 バイト

ターンプレーヤーのチップが残っていない場合に同じ状態を出力するバージョン(50 49 52 バイト):

и[=ÐO_#¾è3‚Ws\F5ÝΩ©3‹iε¾¹%NQ-}®≠iε®<¾+¹%NQ+}}}}D0›*¼

オンラインでお試しください。

チップが残っていないプレーヤーをスキップするバージョン(58 57 60 バイト):

и[=DO_#[D¾èDĀ#\¼}3‚Ws\F5ÝΩ©3‹iε¾¹%NQ-}®≠iε®<¾+¹%NQ+}}}}D0›*¼

オンラインでお試しください。

新しい05AB1Eバージョンには奇妙なバグがあるため、両方ともレガシーバージョンを使用して+3バイトです。それはで動作するべきであるWs\(飛び出ることなく、プッシュ最小、スワップ、廃棄リスト)に置き換えß(ポップリストとプッシュ最小)と0›(チェック0より大きい場合には)に置き換えるdに(チェック非負/より大きいまたは0に等しい場合)新しいバージョンですが、何らかの理由で、末尾の¼!..:Sの後にリストの順序が変更されます(また、新しいバージョンも非常に遅く、結果が完了する前に60秒後にタイムアウトします。.> >>)

最初の入力はプレーヤーの数、2番目の入力はプレーヤーごとのチップの量です。

説明(2番目のバージョンの):

и                    # Create a list with a size of the (first) implicit input,
                     # filled with the second (implicit) input
[                    # Start an infinite loop:
 =                   #  Print the list with trailing newline, without popping the list
 DO_#                #  If the total amount of chips is 0: stop the infinite loop
 [                   #  Start an inner infinite loop:
  D¾è                #   Get the chips of the I'th player (I is 0 by default)
     D               #   Duplicate this
      Ā#             #   If it is NOT 0: stop the inner infinite loop
        \            #   Remove the duplicated chips for the next iteration
         ¼           #   And increase I by 1
 }                   #  After the inner infinite loop:
 3Ws\               #  If the amount of chips is larger than 3: use 3 instead
      F              #  Loop that many times:
       5ÝΩ           #   Roll a random dice in the range [0,5]
       ©3i          #   If the dice-roll is 0, 1, or 2:
           ε¾¹%NQ-}  #    Remove a chip from the I'th player
           ®≠i       #    If the dice-roll is NOT 1:
              ε®<¾+  #     Go to the player left if 0; or right if 2
              ¹%NQ+} #     And increase that player's chips by 1
      }}}            #  Close both if-statements and the loop
         D0›*        #  Make any negative amount of chips 0
             ¼       #  Increase I by 1

私はそれが正しく機能しているかどうかはわかりません。プレイヤーは自分の番でチップを獲得できるようです。
CTホール

@CTHallよろしいですか?4つのTIOバージョンのどれがこれに見られましたか?私は最後の(チップが0のプレーヤーをスキップするレガシーバージョン)だけをチェックしましたが、プレーヤーが増加するのは、別のプレーヤーが順番にいるときだけです。ここに最後のデバッグ行が追加されたので、どの(0インデックス付き)プレーヤーが順番になっているかを確認できます。
Kevin Cruijssen

1
レガシーのものは正しいようですが、非レガシーは私が述べたエラーを持っているようです。
CTホール

@CTHallああ、あなたは本当に正しいです。..:Sが[2, 3, 3, 3]続く行が表示され[2, 2, 2, 6]ます。原因を見つけて修正できるかどうかを確認します。そうでない場合は、常にそれを削除してレガシーのみを使用できます。とにかく出力が多いためです。新しいバージョンは、何らかの理由で複雑なループがあり、かなり遅くなります。>>。>
Kevin Cruijssen

@CTHall問題を特定できましたが、修正できませんでした。なんらかの理由で、グローバルcounter_variable..を増やした直後にリストの順序が変更されます。簡単な例で問題を再現しようとしましたが、できません。ネストされたifステートメントと無限ループ内のマップに何らかの関係がありますが、それは間違いなく奇妙です。
Kevin Cruijssen
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.