保存されたペニーはペニーです


21

...カウント!

プログラムに、ドルおよび/またはセント単位の金額とコインの値の配列を表す変数を渡します。あなたの課題は、コードに渡される量となるコイン値の特定の配列の可能な組み合わせの数を出力することです。指定されたコインでは不可能な場合、プログラムはを返さなければなりません0

アメリカの貨幣用語に関する注意:

  • 1セント硬貨:ペニー
  • 5セント硬貨:ニッケル
  • 10セント硬貨:ダイム
  • 25セント硬貨:四半期(四半期ドル)

例1:

プログラムが合格しました:

12, [1, 5, 10]

(12セント)

出力:

4

12セントを生成するために命名されたコインを結合する4つの可能な方法があります。

  1. 12ペニー
  2. 1ニッケルと7ペニー
  3. 2ニッケルと2ペニー
  4. 1ダイムと2ペニー

例2:

プログラムが合格しました:

26, [1, 5, 10, 25]

(26セント)

出力:

13

26セントを生成するために命名されたコインを組み合わせる13の可能な方法があります。

  1. 26ペニー
  2. 21ペニーと1ニッケル
  3. 16ペニーと2ニッケル
  4. 11ペニーと3ニッケル
  5. 6ペニーと4ニッケル
  6. 1ペニーと5ニッケル
  7. 16ペニーと1ダイム
  8. 6ペニーと2ダイム
  9. 11ペニー、1ダイム、1ニッケル
  10. 6ペニー、1ダイム、2ニッケル
  11. 1ペニー、1ダイム、3ニッケル
  12. 1ペニー、2ダイム、1ニッケル
  13. 1四半期と1ペニー

例3:

プログラムが合格しました:

19, [2, 7, 12]

出力:

2

19セントを生成するために命名されたコインを組み合わせるには、2つの方法があります。

  1. 12セント硬貨1枚と7セント硬貨1枚
  2. 7セント硬貨1個と2セント硬貨6個

例4:

プログラムが合格しました:

13, [2, 8, 25]

出力:

0

13セントを生成するために命名されたコインを組み合わせる方法はありません。


これはサンドボックスを介して行われました。標準の抜け穴が適用されます。これはコードゴルフであるため、バイト数が最も少ない答えが優先されます。


1
s /
counted

4
@ mbomb007 4バイトの場合:s/count/earn
wizzwizz4

5
私と私にとっては、ドルで支払わない他の人々にとって、ニッケルとダイムが何であるかは明らかではありません。それを理解することは難しくありませんでしたが、多分あなたはそれをもう少し国際的に書くことができましたか?
クリッツフィッツ

2
@Kritzefitz。それを質問に追加しました。
-TRiG

2
@jpaugh:コインを好む人は同意するかもしれませんが、私は反対しなければなりません。ペニーは、1セントの価値を持つ標準的なコインです。54セントは金額です。54ペニーは、明示的に54コインです。また、「1セント硬貨」または(公式には)「1セント硬貨」とも呼ばれます。「ペニー」という言葉が受け入れられないような正式な設定は考えられません。これらの人々は、特にコインの収集について、「ペニー」と呼ぶことに問題はありません。
MichaelS

回答:


12

ゼリー(fork)、2バイト

æf

これはJellyのブランチに依存しており、そこで私はFrobeniusが原子を解くように取り組んでいたので、残念ながらオンラインで試すことはできません。

使用法

$ ./jelly eun 'æf' '12' '[1,5,10]'
4
$ ./jelly eun 'æf' '26' '[1,5,10,25]'
13
$ ./jelly eun 'æf' '19' '[2,7,12]'
2
$ ./jelly eun 'æf' '13' '[2,8,25]'
0

説明

æf  Input: total T, denominations D
æf  Frobenius count, determines the number of solutions
    of nonnegative X such that X dot-product D = T

10
...それは公平ではありません。
ETHproductions

...そして、私はそれがはるかに速いと確信しています!
ジョナサンアラン

18

Haskell、37 34バイト

s#l@(c:d)|s>=c=(s-c)#l+s#d
s#_=0^s

使用例:26 # [1,5,10,25]-> 13

単純な再帰的アプローチ:リスト内の次の数値(量以下である限り)の両方を試し、スキップします。数値を引くと量がゼロになる場合は、1elseを取ります(またはリストが要素を使い果たした場合)を取ります0。和それら1秒と0秒。

編集:@Damien:再帰の短い基本ケースを指すことで3バイトを節約しました(@xnors answerにもあります)。


s#l @(c:d)| s> = c =(sc)#l + s#d; s#_ = 0 ^ s
ダミアン

そして、1209 [1,5,10,33,48]と6000 [1,5,10,33]の結果はどうなるので、コードを調整できます
RosLuP

@RosLuP:1209 # [1,5,10,33,48]-> 1314050
nimi

私はここに同じ結果を持っている1314050のため@nimi OK ...おかげで...
RosLuP

@RosLuP:... 537分後:6000 # [1,5,10,33]-> 22086484
nimi

15

Mathematica、35 22バイト

FrobeniusSolve13バイトを提案して保存してくれたマイルに感謝します。

Length@*FrobeniusSolve

名前のない関数を評価します。この関数は、コインのリストを最初の引数として受け取り、ターゲット値を2番目として受け取ります。FrobeniusSolveのディオファントス方程式を解くための略記

a1x1 + a2x2 + ... + anxn = b

以下のための非負整数上で、私達にすべてのソリューションを提供します。xi


@RosLuPこれを実行するにはMathematicaにアクセスする必要があります。また、これは匿名関数なので、それを呼び出すには、括弧でカプセル化するか、変数に格納します。たとえば、(Length@*FrobeniusSolve)[{1, 7, 9}, 18]
マイル

そして、1209 [1,5,10,33,48]と6000 [1,5,10,33]の結果はどうなるので、コードを調整できます
RosLuP

@RosLuP 1314050および22086484
マーティンエンダー

[OK]をここに同じ、感謝の結果...
RosLuP

このため16票だけの長さを書いたプログラマならば正当化されている@ * FrobeniusSolveあなたがいる...
RosLuP

12

Pyth、8バイト

/sM{yS*E

生のブルートフォース、実際のテストにはメモリ集約型です。これはO(2 mn)です。ここで、nはコインの数、mはターゲットの合計です。入力をとして受け取りますtarget\n[c,o,i,n,s]

/sM{yS*EQQ      (implicit Q's)
      *EQ       multiply coin list by target
     S          sort
    y           powerset (all subsequences)
   {            remove duplicates
 sM             sum all results
/        Q      count correct sums

9

Haskell、37バイト

s%(h:t)=sum$map(%t)[s,s-h..0]
s%_=0^s

最初のコインの倍数を使用すると、減少する進行でh必要な合計sが負でない値に減少[s,s-h..0]し、残りのコインで作成する必要があります。コインがなくなったら、として算術的に合計がゼロであることを確認し0^sます。


異なるアプローチを使用して@nimiとまったく同じバイトカウントを達成する方法は驚くべきことです。
クリッツフィッツ

9

JavaScript(ES6)、51 48バイト

f=(n,a,[c,...b]=a)=>n?n>0&&c?f(n-c,a)+f(n,b):0:1

任意の順序でコインを受け入れます。最初のコインを使用する場合と使用しない場合の両方で試行し、いずれかの方法で組み合わせの数を再帰的に計算します。n==0は一致する組み合わせをn<0意味し、コインが数量を超える一方で、コインがc==undefined残っていないことを意味します。この関数は非常に遅いことに注意してください。ペニーコインがある場合は、次の関数の方が高速です(コインの配列でペニーコインを渡さないでください)。

f=(n,a,[c,...b]=a)=>c?(c<=n&&f(n-c,a))+f(n,b):1

...ダンギット。本当にいいアイデア。
ETHproductions

そして、1209 [1,5,10,33,48]と6000 [1,5,10,33]の結果はどうなるので、コードを調整できます
RosLuP

@RosLuP最初の例では、指定されたコードは最終的に1314050を返します。私のインタープリターは、2番目の例を評価するために必要な再帰を処理できません。
ニール

@RosLuP追加のペニーコインが存在し、6000 [5,10,33]で22086484を返すと仮定するように関数を変更しました。
ニール

@Neil ok 22086484 6000 [1,5,10,33]の場合...代わりに6000 [5,10,33]の場合はここで11239になります(作成した配列)
RosLuP

7

Perl、45バイト

バイトカウントには、44バイトのコードと-pフラグが含まれます。

s%\S+%(1{$&})*%g,(1x<>)=~/^$_$(?{$\++})^/x}{

1行目にコインの価値を、2行目に目標額を取ります:

$ perl -pE 's%\S+%(1{$&})*%g,(1x<>)=~/^$_$(?{$\++})^/x}{' <<< "1 5 10 25
26"
13

簡単な説明:

-p                        # Set $_ to the value of the input, 
                          # and adds a print at the end of the code.
s%\S+%(1{$&})*%g,         # Converts each number n to (1{$&})* (to prepare the regex)
                          # This pattern does half the job.
(1x<>)                    # Converts the target to unary representation.
  =~                      # Match against.. (regex)
    /^ $_ $               # $_ contains the pattern we prepared with the first line.
     (?{$\++})            # Count the number of successful matches
     ^                    # Forces a fail in the regex since the begining can't be matched here.
    /x                    # Ignore white-spaces in the regex 
                          # (needed since the available coins are space-separated)
 }{                       # End the code block to avoid the input being printed (because of -p flag) 
                          # The print will still be executed, but $_ will be empty, 
                          # and only $\ will be printed (this variable is added after every print)

6

ゼリー10 9 バイト

œċЀS€€Fċ

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

どうやって?

œċЀS€€Fċ - Main link: coins, target
  Ѐ      - map over right argument, or for each n in [1,2,...,target]
œċ        - combinations with replacement, possible choices of each of n coins
    S€€   - sum for each for each (values of those selections)
       F  - flatten into one list
        ċ - count occurrences of right argument

2
お金に関連した質問でそのような多くのユーロ記号を使用したことに対して+1。
-steenbergh

6

JavaScript(ES6)、59バイト

f=(n,c)=>n?c.reduce((x,y,i)=>y>n?x:x+f(n-y,c.slice(i)),0):1

コインは最高から最低まで入力されf(26,[100,25,10,5,1])ます。あなたがペニーを持っている場合、それを削除し、代わりにこのはるかに高速なバージョンを使用してください:

f=(n,c)=>n?c.reduce((x,y,i)=>y>n?x:x+f(n-y,c.slice(i)),1):1

これは、@ nimiのような再帰式を使用します。数日前、チャレンジがまだサンドボックスにあったときに私がこれを書いた。このように見えた:

f=(n,c=[100,25,10,5])=>n?c.reduce((x,y,i)=>y>n?x:x+f(n-y,c.slice(i)),1):1

唯一の違いは、デフォルト値c(元のチャレンジで設定された値)であり0.reduce関数のを1(これはの2バイト短く、10億倍速いc=[100,25,10,5,1])に変更することです。


以下は、組み合わせの数ではなく、すべての組み合わせを出力する修正版です。

f=(n,c)=>n?c.reduce((x,y,i)=>y>n?x:[...x,...f(n-y,c.slice(i)).map(c=>[...c,y])],[]):[[]]

そして、1209 [1,5,10,33,48]と6000 [1,5,10,33]の結果はどうなるので、コードを調整できます
RosLuP

@RosLuP 1314050(5分後)とスタックオーバーフロー(1時間後)をそれぞれ受け取ります。追加したばかりの高速バージョンでは、数秒で1314050と22086484が得られます。
ETHproductions

-第2の5分+またはのための最初の結果のための私の古いペンティアム2.8Ghコンピュータでは6秒、
RosLuP

5

PHP、327バイト

function c($f,$z=0){global$p,$d;if($z){foreach($p as$m){for($j=0;$j<=$f/$d[$z];){$n=$m;$n[$d[$z]]=$j++;$p[]=$n;}}}else for($p=[],$j=0;$j<=$f/$d[$z];$j++)$p[]=[$d[$z]=>$j];if($d[++$z])c($f,$z);}$d=$_GET[a];c($e=$_GET[b]);foreach($p as$u){$s=0;foreach($u as$k=>$v)$s+=$v*$k;if($s==$e&count($u)==count($d))$t[]=$u;}echo count($t);

それを試してみてください


5

公理、63 62バイト

@JonathanAllanによって保存された1バイト

f(n,l)==coefficient(series(reduce(*,[1/(1-x^i)for i in l])),n)

このアプローチでは、生成関数を使用します。おそらくそれはコードサイズを小さくする助けにはなりませんでした。Axiomで遊んで、自分の機能を定義することは初めてだと思います。

この関数が最初に呼び出されると、恐ろしい警告が表示されますが、それでも正しい結果が生成されます。その後、リストが空でない限り、すべてが問題ありません。


1
公理は知りません-以前にスペースを削除することは可能forですか?
ジョナサンアラン

1
@JonathanAllanはい、そうです!良いゴルフの本能、ありがとう!
クリスチャンシーバーズ

5

R、81 76 63バイト

13バイトのゴルフをしてくれた@rturnbullに感謝します!

function(u,v)sum(t(t(expand.grid(lapply(u/v,seq,f=0))))%*%v==u)

例( c(...)値のベクトルをRに渡す方法です):

f(12,c(1,5,10))
[1] 4

説明:

uは目的の値で、vコインの値のベクトルです。

expand.grid(lapply(u/v,seq,from=0))

0からkコイン(kは金種に依存)のあらゆる可能な組み合わせでデータフレームを作成します。ここで、kはそのコインの値のk倍が少なくともu(達成する値)になるように最低です。

通常、それを使用as.matrixしてマトリックスに変換しますが、それは多くの文字です。代わりに、自動的に強制する転置(!)の転置を使用しますが、必要な文字数は少なくなります。

%*% v次に、各行の金額を計算します。最後のステップは、それらの値のうちいくつが目的の値に等しいかを数えることですu

これの計算の複雑さとメモリ要件は恐ろしいですが、ちょっと、それはコードゴルフです。


1
の素敵な使用expand.grid!そして、私はt(t())トリックが大好きです。関数には1行のコードしか含まれないため、中括弧を削除して2バイト節約できます。また、11バイトを節約するdo.call(expand.grid,lapply(u/v,seq,from=0))ためだけexpand.grid(lapply(u/v,seq,f=0))に切り替えることができます。
-rturnbull

それらをありがとう!expand.grid入力としてリストを取得することに気づかなかった。":"非整数でlapply(u/v,":",0)はうまく機能しないのは少し残念ですが、それ以外の場合はさらに節約できます。
JDL

do.call(x,y)はと同じなのでx(y)、どのような種類の入力が受け入れられるかではありません。本当に使用したい場合:、を使用できると思いますがlapply(u%/%v,`:`,0)、同じバイトカウントです。
rturnbull

1
" do.call(x,y)は" と同じですx(y)--- yこの場合はリストではありません。ただし、2番目の点については同意します。
JDL

3

J、27バイト

1#.[=](+/ .*~]#:,@i.)1+<.@%

使用法

   f =: 1#.[=](+/ .*~]#:,@i.)1+<.@%
   12 f 1 5 10
4
   26 f 1 5 10 25
13
   19 f 2 7 12
2
   13 f 2 8 25
0

説明

1#.[=](+/ .*~]#:,@i.)1+<.@%  Input: target T (LHS), denominations D (RHS)
                          %  Divide T by each in D
                       <.@   Floor each
                             These are the maximum number of each denomination
                     1+      Add 1 to each, call these B
                ,@i.         Forms the range 0 the the product of B
             ]               Get B
              #:             Convert each in the range to mixed radix B
     ]                       Get D
       +/ .*~                Dot product between D and each mixed radix number
                             These are all combinations of denominations up to T
   [                         Get T
    =                        Test if each sum is equal to T
1#.                          Convert as base 1 digits to decimal (takes the sum)
                             This is the number of times each sum was true

Jはとても
素晴らしく

2

TSQL、105バイト

これらの4種類のコインでは、1ドルまでしか処理できません。未使用のバージョンは最大4ドルまで処理できますが、非常に遅いです-私のボックスではこれには27秒かかります。結果は10045の組み合わせです

ゴルフ:

DECLARE @ INT = 100
DECLARE @t table(z int)
INSERT @t values(1),(5),(10),(25)
;WITH c as(SELECT 0l,0s UNION ALL SELECT z,s+z FROM c,@t WHERE l<=z and s<@)SELECT SUM(1)FROM c WHERE s=@

ゴルフをしていない:

-- input variables
DECLARE @ INT = 100
DECLARE @t table(z int)
INSERT @t values(1),(5),(10),(25)

-- query
;WITH c as
(
  SELECT 0l,0s
  UNION ALL
  SELECT z,s+z
  FROM c,@t
  WHERE l<=z and s<@
)
SELECT SUM(1)
FROM c
WHERE s=@
-- to allow more than 100 recursions(amounts higher than 1 dollar in this example)
OPTION(MAXRECURSION 0)

フィドル


2

tinylisp repl、66バイト

(d C(q((Q V)(i Q(i(l Q 0)0(i V(s(C(s Q(h V))V)(s 0(C Q(t V))))0))1

再帰的な解決策:最初のコインを使用し、最初のコインを使用しないで、それぞれの結果を追加します。指数関数的な時間の複雑さおよび末尾再帰はありませんが、テストケースは問題なく計算されます。

Ungolfed(組み込みのキー:d=定義、q=引用、i= if、l=より小さい、s=減算、h=頭、t=尾):

(d combos
 (q
  ((amount coin-values)
   (i amount
    (i (l amount 0)
     0
     (i coin-values
      (s
       (combos
        (s amount (h coin-values))
        coin-values)
       (s
        0
        (combos
         amount
         (t coin-values))))
      0))
    1))))

使用例:

tl> (d C(q((Q V)(i Q(i(l Q 0)0(i V(s(C(s Q(h V))V)(s 0(C Q(t V))))0))1
C
tl> (C 12 (q (1 5 10)))
4
tl> (C 26 (q (1 5 10 25)))
13
tl> (C 19 (q (2 7 12)))
2
tl> (C 13 (q (2 8 25)))
0
tl> (C 400 (q (1 5 10 25)))
Error: recursion depth exceeded. How could you forget to use tail calls?!

1

PHP、130バイト

function r($n,$a){if($c=$a[0])for(;0<$n;$n-=$c)$o+=r($n,array_slice($a,1));return$o?:$n==0;}echo r($argv[1],array_slice($argv,2));

現在のコインの値をターゲットから繰り返し削除し、新しい値と他のコインで自分自身を呼び出す99バイトの再帰関数(および31バイトの呼び出し)。ターゲットが正確に0に達した回数をカウントします。次のように実行します:

 php -r "function r($n,$a){if($c=$a[0])for(;0<$n;$n-=$c)$o+=r($n,array_slice($a,1));return$o?:$n==0;}echo r($argv[1],array_slice($argv,2));" 12 1 5 10

97以上の異なる種類のコインで呼び出された場合、何も返さずに再帰死しますが、それははるかに異なる種類のコインであるため、サポートする必要があります。
user59178

1

ラケット275バイト

(set! l(flatten(for/list((i l))(for/list((j(floor(/ s i))))i))))(define oll'())(for((i(range 1(add1(floor(/ s(apply min l)))))))
(define ol(combinations l i))(for((j ol))(set! j(sort j >))(when(and(= s(apply + j))(not(ormap(λ(x)(equal? x j))oll)))(set! oll(cons j oll)))))oll

ゴルフをしていない:

(define(f s l)
  (set! l              ; have list contain all possible coins that can be used
        (flatten
         (for/list ((i l))
           (for/list ((j              
                       (floor
                        (/ s i))))
             i))))
  (define oll '())                    ; final list of all solutions initialized
  (for ((i (range 1  
                  (add1
                   (floor             ; for different sizes of coin-set
                    (/ s
                       (apply min l)))))))
    (define ol (combinations l i))          ; get a list of all combinations
    (for ((j ol))                           ; test each combination
      (set! j (sort j >))
      (when (and
             (= s (apply + j))              ; sum is correct
             (not(ormap                     ; solution is not already in list
                  (lambda(x)
                    (equal? x j))
                  oll)))
        (set! oll (cons j oll))             ; add found solution to final list
        )))
  (reverse oll))

テスト:

(f 4 '[1 2])
(println "-------------")
(f 12 '[1 5 10])
(println "-------------")
(f 19 '[2 7 12])
(println "-------------")
(f 8 '(1 2 3))

出力:

'((2 2) (2 1 1) (1 1 1 1))
"-------------"
'((10 1 1) (5 5 1 1) (5 1 1 1 1 1 1 1) (1 1 1 1 1 1 1 1 1 1 1 1))
"-------------"
'((12 7) (7 2 2 2 2 2 2))
"-------------"
'((3 3 2) (2 2 2 2) (3 2 2 1) (3 3 1 1) (2 2 2 1 1) (3 2 1 1 1) (2 2 1 1 1 1) (3 1 1 1 1 1) (2 1 1 1 1 1 1) (1 1 1 1 1 1 1 1))

次の再帰的な解決策にはいくつかのエラーがあります:

(define (f s l)                      ; s is sum needed; l is list of coin-types
  (set! l (sort l >))
  (define oll '())                   ; list of all solution lists
  (let loop ((l l)   
             (ol '()))               ; a solution list initialized
    (when (not (null? l))
        (set! ol (cons (first l) ol)))
    (define ols (apply + ol))        ; current sum in solution list
    (cond
      [(null? l) (remove-duplicates oll)]
      [(= ols s) (set! oll (cons ol oll))
                 (loop (rest l) '()) 
                 ]
      [(> ols s) (loop (rest l) (rest ol))
                 (loop (rest l) '())   
                 ]
      [(< ols s) (loop l ol) 
                 (loop (rest l) ol)
                 ])))

以下に対して適切に動作しません。

(f 8 '[1 2 3])

出力:

'((1 1 1 2 3) (1 2 2 3) (1 1 1 1 1 1 1 1) (2 3 3) (1 1 1 1 1 1 2) (1 1 1 1 2 2) (1 1 2 2 2) (2 2 2 2))

(1 1 3 3)は可能ですが、ソリューションリストには含まれていません。


私はラケットに慣れていないんだけど、私は数年前の使用をしたことは、この同様の問題のためのClojureでソリューションを書きましたreduce
マイル

'reduce'は、基本的なRacket言語の一部ではありませんが、 'fold'は使用可能です。以前のソリューションにはエラーがあるため、上記の修正されたソリューションを追加しました。
rnso

たくさんのLisp愛好家が集まって...ラケットを作ったように見える
ジョー

1
Lisp愛好家の何人かが最初にSchemegroups.csail.mit.edu/mac/projects/scheme)を作成し、最終的に本格的になりましたRacketracket-lang.orgstackoverflow.com / questions/3345397/…)!
rnso

1

ゼリー、15バイト

s+\Fṁḷ
2*BW;ç/Ṫ

オンラインでお試しください!またはすべてのテストケースを検証します。

これは、ビルトインを使用せずにJellyで効率的なバージョンを作成するためのより多くの練習でした。これは、変更を行う方法の数を計算するために使用される一般的な動的プログラミングアプローチに基づいています。

説明

s+\Fṁḷ  Helper link. Input: solutions S, coin C
s       Slice the solutions into non-overlapping sublists of length C
 +\     Cumulative sum
   F    Flatten
     ḷ  Left, get S
    ṁ   Mold the sums to the shape of S

2*BW;ç/Ṫ  Main link. Input: target T, denominations D
2*        Compute 2^T
  B       Convert to binary, creates a list with 1 followed by T-1 0's
          These are the number of solutions for each value from 0 to T
          starting with no coins used
   W      Wrap it inside another array
    ;     Concatenate with D
     ç/   Reduce using the helper link
       Ṫ  Tail, return the last value which is the solution

1

実は、15バイト

ゴルフの提案を歓迎します。オンラインでお試しください!

╗;R`╜∙♂S╔♂Σi`Mc

アンゴルフ

         Implicit input n, then the list of coins a.
╗        Save a to register 0.
;R       Duplicate n and create a range [1..n] from that duplicate.
`...`M   Map the following function over that range. Variable i.
  ╜        Push a from register 0.
  ∙        Push the i-th Cartesian power of a.
  ♂S       Sort each member of car_pow.
  ╔        Uniquify car_pow so we don't count too any duplicate coin arrangements.
  ♂Σ       Take the sum of each coin arrangement.
  i        Flatten the list.
c        Using the result of the map and the remaining n, push map.count(n).
         Implicit return.

0

Python、120バイト

from itertools import*
lambda t,L:[sum(map(lambda x,y:x*y,C,L))-t for C in product(range(t+1),repeat=len(L))].count(0)

目標値までのコインのすべての組み合わせをブルートフォースします(最小値が1でなくても)。

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