立ち上がりおよびリセットシーケンスのn番目の項


37

codingame.comでのマルチプレイヤーゲーム(コードの衝突)からの挑戦

チャレンジ

次のシーケンスのn番目の用語を見つけます。1, 1, 2, 1, 2, 3, 1, 2, 3, 4...または、より明確にするために、{1}, {1,2}, {1,2,3}, {1,2,3,4}...

シーケンスは、1から始まり無限までの1からxまでの連結範囲で構成されます。

ルール/ IO

入力と出力は、区別できる限り、どのような形式でもかまいません。入力は、適切なソース(STDIN、ファイルなど)から取得できます。

入力には0または1のインデックスを付けることができ、選択したインデックスは投稿言及する必要があります

少なくとも255までの結果を処理する必要があります(つまり、0インデックス付きの最大入力は32640です)。あなたの言語がそれをサポートしている場合、それ以上のものは処理されなければなりません。

これによりcode-golf、最短バイト数が勝ちです!

テストケース(0ベースのインデックス付け)

0 -> 1
1 -> 1
5 -> 3
10 -> 1
59 -> 5
100 -> 10
1001 -> 12


4
あなたは、おそらくいくつかのより大きなテストケース(追加する必要があります59100など)
FlipTack


それは逆の挑戦です。その挑戦からの最良の答えは、逆にすることはできませんでした。@JarkoDubbeldam
devRicher

@devRicher私が知っている、ただそれをそこに置くだけで、それは否定的な意味ではありませんでした。そこでの私自身の答えは実際には可逆的でした。関連!=重複。
JAD

回答:



13

Haskell27 26バイト

([z|k<-[1..],z<-[1..k]]!!)

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

ありがとう@DanD。-1バイト!

これは匿名関数であり、無限シーケンスを作成し、nその-th要素を返すだけです:[[1..k]| k<-[1..]]listの無限リストを生成します[[1],[1,2],[1,2,3],[1,2,3,4],...]。これらを連結するため[z|k<-[1..],z<-[1..k]]に、結果を入力し[1,1,2,1,2,3,1,2,3,4,...]、最終的(...!!)に入力を受け入れn(無意味な表記法)、n-th項(0ベース)を返します。


concatより理解して置き換えると、1バイトしか節約されません:([z|k<-[1..],z<-[1..k]]!!)
ダンD.

12

JavaScript、29 28バイト

Arnauldのおかげで-1バイト!

f=(n,m)=>n++<m?n:f(n+~m,-~m)

OEISにある0インデックスの再帰式を使用します。

期待どおりに1つの引数で呼び出された場合、2番目のデフォルト値はmになりますundefined。ただし、-~undefinedは1を返します。これによりm = 1、引数リストに明示的に指定しなくても再帰ローリングを取得できます(@Arnauldに感謝します!)

テストスニペット:

f=(n,m)=>n++<m?n:f(n+~m,-~m)

let examples = [0, 1, 5, 10, 15, 1000];

examples.forEach(function log(x) {
    console.log(x, " => ", f(x))
});


または、同じバイトカウントに対して、次のようなカリー化された関数を使用できます。

f=n=>m=>n++<m?n:f(n+~m)(-~m)

これを呼び出すことができますf(5)()- このメタ投稿で説明されているように、呼び出されると結果を返す関数を返します。


9

ゼリー、5バイト、1インデックス付き

RRF³ị

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

説明:

                                      (Assume N = 4 for the examples)
R      Generate a list of 1 to N      [1, 2, 3, 4]
 R     Generate new lists for each item on the previous list, with that item as N
                                      [[1], [1,2], ...]
  F    Flatten that list              [1, 1, 2, 1, 2, 3 ...]
   ³ị  Use the input number (³) as index (ị) on the list. 
       This is one-based:             [1, 1, 2, 1, 2, 3 ...] 
                                                ^

8

オクターブ、39バイト

@(z)z-(n=ceil((8*z+1)^.5/2-.5))*(n-1)/2

1ベースのインデックス

説明:

次のシーケンスを検討してください。

1   1   2   1   2   3   1   2   3   4   1   2   3   4   5

サブシーケンスの要素の数を数えると

1   2        3          4               5         

したがって、三角数のガウス式を使用して 、zの式を作成できます。

z=n*(n+1)/2

nについて解くと、それは二次方程式です

n=(sqrt(8*z+1)-1)/2

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


7

Haskell、25 24バイト

(!!)$[1..]>>= \x->[1..x]

使用例:((!!)$[1..]>>= \x->[1..x]) 10-> 1オンラインでお試しください!

匿名のmake-a-list-from-1-to-x関数\x->[1..x](組み込みenumFromTo 1は1バイト長い)を無限リストにマップし[1..]、結果のリストを単一のリストに連結します。!!n番目の要素を選択します。

1バイトの@flawrに感謝します。


を使用して短縮できると思います(!!)$[1..]>>= \x->[1..x]。時々私はもっと短い無意味な書き方があればいいのにと思っています\x->[1..x]:)
flawr

PS:オンラインで試してみませんかリンク?
flawr

@flawr:よくわかりました、ありがとう!オンラインで試してみると、古いバージョンのghc(またはPrelude)が使用され<$>ており、ほとんどの回答ではスコープ内にないものが使用されています。最新バージョンを使用するオンラインHaskellコンパイラ/インタープリターを知っていますか?haskell.orgは式のみを許可し、入力したコードへのリンクを作成することはできません。
nimi

1
ああ、@ Dennisにそれを更新するように言わせてください。彼はTIOの作成者です:)
flawr

6

オクターブ、39バイト

@(n){v=1:n,A=triu(v'+0*v),A(A>0)(n)}{3}

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

これは代替アプローチを使用します。

たとえば、n=1これA=triu(v'+0*v)は行列を作成します

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

すべてのゼロ要素を削除して列を追加するとA(A>0)、シーケンスが取得されます。

1   1  2  1  2  3  1  2  3  4

次にn、そのシーケンスの-th項を抽出するだけです。


5

Python39 36バイト

デニスのおかげで-3バイト!

1ベースのインデックス付けを使用する再帰的なラムダ。

f=lambda n,m=1:n*(n<=m)or f(n-m,m+1)

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

を使用して、現在の「上昇」サイズを追跡しmます。nがより小さいか等しい場合m、現在の「上昇」に収まるため、それを返します。ただし、がより大きい場合はmm1を追加してm再帰的に関数を呼び出す(次のライズに移動する)ことから、それを取り除きます。



4

Pyth6 5バイト

@TheBikingvikingのおかげで1バイト節約できました

@s._S

これは、0ベースのインデックスを使用します。

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

説明

@          Index with implicit input into
   ._      all prefixes of
     S     1-based range of implicit input
 s         concatenated into an un-nested list

いいね!あなたは置き換えることができ.ns
TheBikingViking

@TheBikingVikingありがとう!
ルイスメンドー

4

Mathematica、27 24バイト

@MartinEnderに3バイトありがとう!

((r=Range)@r@#<>1)[[#]]&

1インデックス。これにより、無視しても安全なエラーがスローされます。

説明

((r=Range)@r@#<>1)[[#]]&
  r=Range                 (* Store Range function in r *)
           r@#            (* Create list {1..n} *)
 (r      )@               (* For each element, generate {1..n} *)
              <>1         (* Join the lists and append a 1; throws errors *)
(                )[[#]]&  (* Take the nth element *)

2
Join@@方法が高すぎる;)((r=Range)@r@#<>1)[[#]]&
マーティンエンダー

@MartinEnder Woah、StringJoin評価されていないという事実を悪用しています...私はそれが好きです
ジョンファン

4

brainf * ck、78バイト

,>+<[>[->>+>+<<<]>>>[-<<<+>>>]<<+[->->+<<]>[<<->>>[-<<+>>]<[-]]>[-]<<<+<-]>>+.

入力(0ベース)を受け取り、バイト値として出力します。

あなたはそれをテストすることができます ここでます。

入力には\10進数の前に10桁が必要\10です。出力が印刷可能なASCII文字の場合、表示されるはずです。それ以外の場合は、ビューメモリ->最終ダンプをヒットします。印刷された値は3番目のセル(セル番号2)にあります。

説明:

セル0(入力):入力であり、ループを通過するたびにmy 1が減分されます。

セル1(リセット):TERMに等しくなるたびに1ずつ増加します。これを行うには、ループを通過するたびに1を加算し、等しくない場合は1を減算します。

セル2(TERM):ループごとに1ずつ増加し、RESETと一致する場合は0に設定されます。これを行うには、このセルがRESETと等しくない場合にのみ、HOLDから値をコピーします。

セル3(EQUAL):RESETとTERMが等しいかどうかを確認するために使用されます。

セル4(HOLD):等しいチェックの後、RESETとTERMの値をコピーして戻すために使用されます。

,>+<              # get input and put a 1 in RESET
[                 # for INPUT to 0
  >[->>+>+<<<]    # copy RESET to EQUAL and HOLD
  >>>[-<<<+>>>]   # copy HOLD back into RESET
  <<+             # add 1 to TERM
  [->->+<<]       # subtract TERM from EQUAL and copy it to HOLD
  >[              # if RESET and TERM were not equal
    <<-           # subtract 1 from RESET
    >>>[-<<+>>]   # copy HOLD back to TERM
    <[-]          # zero out EQUAL
  ]               # end if
  >[-]            # zero out HOLD
  <<<+            # add 1 to RESET (this cancels out the subtraction if
                  #     RESET did not equal TERM)
  <-              # subtract 1 from INPUT
]>>+.             # end for and add 1 because the sequence resets to 1 not 0

よくやった!私はこれをテストし、すぐに賞金を授与します。説明を追加しますか?:)
Yytsi

@TuukkaX私はそれに取り組んでいた:)私は今夜の時間があるときに、もう少し追加しようとします。
ライリー

動作するようです:) 20時間で利用可能なバウンティ。
イッツィー

@TuukkaX賞金は、注意を引くために7日間すべて利用可能であり、最終日に授与されることに留意してください。
mbomb007

@ mbomb007うーん。私はbrainf * ckソリューションを提出した最初の人に賞金を授与することを発表しました。これは、賞金の競争が終わったことを意味します。しかし、他の人があなたが言ったのと同じことをしているので、それは私が失ったポイントを補う良い方法です。ありがとう:)
Yytsi


3

R、43 41バイト

編集:A002262 + 1(0インデックス)を使用して、より短い再帰アプローチを見つけました。

f=function(n,m=1)`if`(n<m,n+1,f(n-m,m+1))

古いバージョン:

n=scan();n-choose(floor((1+sqrt(8*n))/2),2)

OEISの1インデックス付き数式。


オンラインでお試しください!それはうまくいくようです。:)
R. Kap

ソリューションに比べて数バイト節約できました。私の答えをご覧ください。
-JAD

3

Perl 6、21バイト

{map(|^*,^∞)[$_]+1}

0インデックス付き。オンラインでお試しください!

使い方:

{                 }  # A lambda.
         ^∞          # Range from 0 to Inf-1. (Same byte count as 0..*, but cooler.)
 map( ^*,  )         # Map each number n to the range 0..(n-1),
     |               # And slip each range into the outer list.
            [$_]     # Index the sequence with the lambda argument.
                +1   # Add 1.

Perl 6、21バイト

{[\,](1..*).flat[$_]}

0インデックス付き。オンラインでお試しください!

使い方:

{                   }  # A lambda.
      1..*             # Range from 1 to infinity.
 [ ,](    )            # Fold it with the comma operator,
  \                    # and return all intermediate results, e.g. (1), (1,2), (1,2,3)...
           .flat       # Flatten the sequence.
                [$_]   # Index it with the lambda argument.

2

これらのソリューションはどちらもJungHawn Minほど短いものではありませんが、代替アプローチであり、私は推測します。どちらも(1-indexed)正の整数入力を取り、正の整数を返す名前のない関数です。

Mathematica、30バイト

-#^2-#&@⌈√(2#)-3/2⌉/2+#&

この関数の実際の数式!(3バイト文字を変換することによって部分的に、より読みやすく、および):

# - ((#^2 + #) / 2 &)[Ceiling[Sqrt[2 * #] - 3/2]] &

Ceiling[Sqrt[2 * #] - 1/2]入力が参照するサブリストを示し、そこから1を減算して、入力に到達する前にどのサブリストが終了するかを示します。次に((#^2 + #) / 2 &)、関心のあるサブリストの前にすべてのサブリストにある要素の数を計算し、入力#から減算して答えを取得します。(いくつかは馴染み式気づく(#^2 + #) / 2ため#番目の三角数を、Ceiling[Sqrt[2 * #] - 1/2]本質的に逆関数です。)

Mathematica、32バイト

If[#2<=#,#2,#0[#+1,#2-#]]&[1,#]&

再帰的ソリューション。Billywobの回答などと基本的に同じです。


2

Brain-Flak、46バイト

ゼロインデックス

(<>()){(({}())[()]){({}[()])<>}{}}<>([{}()]{})

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

スタッククリーン、48バイト

(<>()){(({}())[()]){({}[()])<>}{}}{}<>([{}()]{})

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

説明

これは、モジュロ関数の修正バージョンです。除数として定数を使用する代わりに、除数が減算されるたびに除数をインクリメントします(ループ外の反復ごとに1回)。

注釈付きコード

(<>())       # Switch to the opposite stack and push 1 (the initial divisor)
{            # (outside loop) While top of stack is not 0...
  (          # Push...
    ({}())   # Push the divisor plus 1
  [()])      # ...minus one (ie push a copy of the original divisor
  {          # (inner loop) While the top of stack does not equal zero
    ({}[()]) # Decrement the top of the active stack
    <>       # Switch stacks
  }{}        # (inside loop) End loop and pop zero off the top of stack)
}            # (outside loop) End loop
<>           # Switch stacks (to the one with the divisor)
([{}()]{})   # Calculate the result

2

Java 8、85 73 55バイト

n->f(n,1)+1int f(int n,int m){return n<m?n:f(n-m,m+1);}

OEISで提供される式を使用した0インデックス付き再帰アプローチ:

a(n) = 1 + A002262(n)
A002262a(n)=f(n,1)f(n,m) = if n<m then n else f(n-m,m+1)

ここで試してみてください。


古い回答(85 56バイト):

n->{int m=~-(int)Math.sqrt(8*n+1)/2;return n-m*-~m/2+1;}

OEISで提供されている他の0インデックス付き式を使用しました。

n番目の項はn - m*(m+1)/2 + 1、ここでm = floor((sqrt(8*n+1) - 1) / 2)です。

ここで試してみてください。



1

MATL、8バイト

:"@:]vG)

このソリューションは、1ベースのインデックス作成を使用します

MATL Online試しください

説明

        Implicitly grab input (N)
:       Create an array from [1...N]
"       For each element (A) in this array...
  @:    Create an array from [1....A]
]       End for loop
v       Vertically concatenate everything on the stack
G       Explicitly grab the input again
)       And use it to index into the vertically concatenated array
        Implicitly display the result

1
大したことではありませんが、vその後に移動するとコードがはるかに高速になります]
ルイスメンドー

1
@LuisMendoああ良い点!私は短く速いのが好きです!
Suever

しかし、それは短絡であり、もちろんです!:-)
ルイスメンドー

1

QBIC、21バイト、1インデックス付き

:[a|[b|~q=a|_Xc\q=q+1

説明:

:      Get 'a' from the cmd line
[a|    FOR (b = 1; b <= a; b++) This creates an outer loop from 1 to N
[b|    FOR (c = 1; c <= b; c++) This creates an iteration, yielding the 1, 12, 123 pattern
       'q' stores how many terms we've seen. It starts at 1 b default.
~q=a   if we are at the desired term (q == a)
|_Xc   Then quit, and print 'c' (the current number in the sequence)
\q=q+1 Else, increase 'q' and run again.

少し興味深いアプローチですが、10バイト長くなります。

:{~b+q>=a|_xa-b|\b=b+q┘q=q+1

このプログラムは、このブラケットと以前のすべての数字の合計数を継続的に計算します(1 at loop 1, 3 at loop 2, 6 at loop 3 ...)。そのカウンターが求められているインデックスNを超える場合、現在のブラケットからXを返します。XはNからカウンターの前の量を引いたものです。


1

ルビー、30バイト

->n{(0..n).find{|x|0>=n-=x}+n}

1ベースのインデックス付け


1

R、37バイト

n=scan();for(i in 2:n)T=c(T,1:i);T[n]

から入力を受け取りn、最初のnシーケンスのシーケンスを作成します。これにより、入力が高くなると多少非効率になりますが、問題ありません。次にn、1番目のインデックスが付いた-thエントリを返します。

シーケンスをから開始することにより、素敵な小さなトリックを使用しTます。TRUEまたは1デフォルトします。



1

brainfuck、141バイト

私は賞金には手遅れだと知っていますが、私が考えていたアルゴリズムが最終的に何バイトになるかを見たかっただけです。

このプログラムはインデックスがゼロです。

,>+<[[->>+>+<<<]>>[-<<+>>]<[->+>>+<<<]>[-<+>]>>+[[-<->>+<]>[-<+>]<<<<]>>[>>>]>[.[<<<]]<<<<<<<[[-]>>>[-<+<<+>>>]<[->+<]<<<<<]>>>[>>>]<<<]>[.>]

オンラインで試す

  • Dynamic(infinite)Memoryを選択します。そうしないと機能しません。
  • 入力値をテストするには255、> セルサイズ(ビット)16または32に変更します。
  • インタプリタは入力方法を説明します。以下のための小数入力使用\5の入力のために5
    • 入力をテストできる最大の10進数値は \999
    • 16進入力は、セルサイズと同じ大きさになります。

説明:

これは、プログラムをステップごとに分割し、の入力に対して何が起こるかを示しています5#インタプリタにとって理想的なメモリダンプの場所に配置されます。

このバージョンを実行している場合は、char:でメモリをダンプ#するチェックボックスを使用する必要があります。これにより、ヒット時にメモリがダンプさ#れ、印刷できない文字である場合にテープの値を確認したり、任意のステップで何が起こるかを確認したりできます。ポインターが置かれているセルは太字になります。

,>+<                       (5) 1
[[->>+>+<<<]>>[-<<+>>]       5 1 (0) 5
<[->+>>+<<<]>[-<+>]>>+       5 1 0 5 (2)
[[-<->>+<]>[-<+>]<<<<] (0) 0 4 1 0 3 2 0 0
>>[>>>]                      4 1 0 3 2 0 (0) 0
                             1 1 0 (0) 2 0
>[.#[<<<]]<<<<                4 1 0 (3) 2 0 0 0
<<<[[-]>>>[-<+<<+>>>]<[->+<]<<<<<]>>> (3) 1 0 3 2 0 0 0
[>>>]<<<]>[.#>]

Tape structure:
    (cell_1 cell_2 temp), (cell_1 cell_2 temp), ...

Take Input;
If not zero:
  copy last pair to the right and add one to its cell_2
  subtract each cell_2 from each cell_1 (leaving each cell_2 intact)
  move checking from left to right: 
    If cell_1 is zero and cell_2 isn't:
      print cell_2
    Else:
      copy last cell_1 back, overwriting each previous cell_1
Else:
  right one and print result

オンラインで試す

  • Dynamic(infinite)Memoryを選択します。そうしないと機能しません。
  • charでメモリをダンプします。 #

ノート:

  • 開始セルの左への移動を許可しない別のインタープリターでこれを実行するには(これが動的メモリを使用する理由です)、>開始時に大量に配置します。必要な数は入力値によって異なりますが、O(1)です。

1

tinylisp(repl)、90バイト(0インデックス付き)

(d r(q((n j x)(i n(i(e j x)(r(s n 1)1(s x(s 0 1)))(r(s n 1)(s j(s 0 1))x))j
(q((n)(r n 1 1

または、非競合(このチャレンジが投稿された後にコミットされた機能を使用)、80バイト

(d r(q((n j x)(i n(i(e j x)(r(s n 1)1(a x 1))(r(s n 1)(a j 1)x))j
(q((n)(r n 1 1

1行目はヘルパー関数を定義しr、2行目は名前のない関数nで、シーケンスのn番目の項を取得して返します。replはプログラムの終わりだけでなく、すべての行の終わりで括弧を自動補完するため、これをreplの送信として指定しました。これらの警告を使用して、Try it onlineで動作するように修正されたバージョンがあります。入力0から54に対して実行されたバージョンはありません。

説明

ここでは非競合バージョンを使用します。唯一の違いは、公式バージョンでは加算を2つの減算として実装する必要があることです。

(d r           Define r to be:
 (q(           A lambda function (= a list of two elements, quoted to prevent evaluation):
  (n j x)       Arguments n, j (the range counter), and x (the range limit)
  (i n          If n is truthy, i.e. nonzero:
   (i(e j x)     If counter equals limit:
    (r            Call r recursively on:
     (s n 1)       n-1
     1             counter reset to 1
     (a x 1))      limit increased by 1
    (r           Else, call r recursively on:
     (s n 1)       n-1
     (a j 1)       counter increased by 1
     x))           same limit
   j))))        Else, we're done; return the counter value

(q(            Lambda function:
 (n)            Argument n
 (r n 1 1)))    Call r with n, counter = 1, range limit = 1

1

C、54バイト

最短のCソリューションではありませんが、一定の時間(ループなし、数学のみ)で実行できるメリットがあります。ゼロベースのインデックスを使用します。

x;f(n){x=floor(sqrt(8*n+1)-1)/2;return 1+n-x*(x+1)/2;}

ゴルフをしていない:

int f(int n) {
    int x = floor(sqrt(8*n+1)-1)/2; //calculate the number of the current subsequence (zero based)
    return 1+n-x*(x+1)/2;   //x*(x+1)/2 is the zero based index of the `1` starting the subsequence
}

でテストする:

#include <math.h>
#include <assert.h>
#include <stdio.h>

x;f(n){x=floor(sqrt(8*n+1)-1)/2;return 1+n-x*(x+1)/2;}

int main(){
    int i;
    for(i = 0; i < 10; i++) printf("%d ", f(i));
    printf("\n");

    assert(f(0) == 1);
    assert(f(1) == 1);
    assert(f(5) == 3);
    assert(f(10) == 1);
    assert(f(59) == 5);
    assert(f(100) == 10);
    assert(f(1001) == 12);
}

1

C、103バイト

初心者にとっては大丈夫だと思います:)。

int main(){int n,c,i,j;scanf("%d",&n);while(c<n){for(i=1;i<=j;i++){c++;if(c==n)printf("%d",i);}j++;}}

またはフォーマットされた方法

#include <stdio.h>

int main() {
    int n,c,i,j;
    scanf("%d",&n);
    while(c<n) 
    {
        for(i=1;i<=j;i++)
        {
            c++;
            if(c==n) printf("%d",i);
        }
        j++;
    }
}

1
n,c,i,jグローバルとして宣言する場合、0に初期化されることが保証されますが、これはローカルには当てはまりません。
feersum

そのような未経験の間違いが含まれることは知っていました。n入力またはシーケンスのn番目の数であり、cカウンタであり、iそしてjループエレメントです。j次いで、1 2、次に3しばらくになりますi1、次いで1,2-次いで1,2,3とになるであろう。@ Qwerp-Derp
モハマドマドハナ

あなたが言っていることを正確に理解しているかどうかはわかりませんが、グローバルまたはローカルとして宣言したかどうかにかかわらず、このコードでは初期値は0になります。私が間違っている場合は修正してください0 =)。@feersum
モハマドマドハナ

いいえ、初期化されていないローカル変数が0に設定されていないstackoverflow.com/questions/15268799/...
feersum

1

dc、21バイト、0ベースのインデックス付け

?d8*1+v1-2/d1+*2/-1+p

dcプログラムをオンラインでお試しください!

説明:

?      Push input number n.
d      Duplicate n at the top of the stack.
8*1+   Replace n at the top of the stack with 8n+1.
v      Replace 8n+1 at the top of the stack with the floor of its square root.
1-2/   Subtract 1, and divide by 2 (ignoring any fractional part).

スタックの最上部には、<= nである最大の三角形のインデックスkが保持されます。

d1+*2/ Compute k(k+1)/2, which is the greatest triangular number <= n.
-      Subtract n-(the greatest triangular number <= n). The first n is on the stack in position 2, because the input number n was duplicated at the top of the stack at the very beginning of the program, and only one of the values was popped and used (until now).
1+     Add 1 because the desired sequence starts over again at 1 (not 0) at every triangular number.
p      Print the answer.

このdcプログラムは、競争力のあるサイズのbashスクリプトに変換できます。

Bash + Unixユーティリティ、28バイト、0ベースのインデックス付け

dc -e"?d8*1+v1-2/d1+*2/-1+p"

オンラインでbashプログラムをお試しください!


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.