모든 싱글 여덟


24

에서 0~ 까지의 정수로 구성된 비어 있지 않은 사각형 배열이 주어지면 이웃이없는 9셀의 양을 출력합니다 . 이웃은 무어의 의미 , 즉 대각선을 포함하여 이해됩니다 . 따라서 각 셀에는 배열의 가장자리에있는 셀을 제외하고 이웃 이 있습니다.888

예를 들어, 입력이 주어지면

8 4 5 6 5
9 3 8 4 8
0 8 6 1 5
6 7 9 8 2
8 8 7 4 2

출력은이어야합니다 3. 세 개의 적격 셀은 다음과 같으며 별표가 표시되어 있습니다 (그러나 해당 항목의 양만 출력되어야 함).

* 4 5 6 5
9 3 8 4 *
0 8 6 1 5
6 7 9 * 2
8 8 7 4 2

추가 규칙

테스트 사례

  1. 입력:

    8 4 5 6 5
    9 3 8 4 8
    0 8 6 1 5
    6 7 9 8 2
    8 8 7 4 2
    

    산출: 3

  2. 입력

    8 8
    2 3
    

    산출: 0

  3. 입력:

    5 3 4
    2 5 2
    

    산출: 0

  4. 입력:

    5 8 3 8
    

    산출: 2

  5. 입력:

    8
    0
    8
    

    출력 : 2.

  6. 입력:

    4 2 8 5
    2 6 1 8
    8 5 5 8
    

    산출: 1

  7. 입력:

    4 5 4 3 8 1 8 2
    8 2 7 7 8 3 9 3
    9 8 7 8 5 4 2 8
    4 5 0 2 1 8 6 9
    1 5 4 3 4 5 6 1
    

    출력 3.

  8. 입력:

    8
    

    산출: 1

  9. 입력:

    8 5 8 1 6 8 7 7
    9 9 2 8 2 7 8 3
    2 8 4 9 7 3 2 7
    9 2 9 7 1 9 5 6
    6 9 8 7 3 1 5 2
    1 9 9 7 1 8 8 2
    3 5 6 8 1 4 7 5
    

    출력 : 4.

  10. 입력:

    8 1 8
    2 5 7
    8 0 1
    

    출력 : 3.

MATLAB 형식의 입력 :

[8 4 5 6 5; 9 3 8 4 8; 0 8 6 1 5; 6 7 9 8 2; 8 8 7 4 2]
[8 8; 2 3]
[5 3 4; 2 5 2]
[5 8 3 8]
[8; 0; 8]
[4 2 8 5; 2 6 1 8; 8 5 5 8]
[4 5 4 3 8 1 8 2; 8 2 7 7 8 3 9 3; 9 8 7 8 5 4 2 8; 4 5 0 2 1 8 6 9; 1 5 4 3 4 5 6 1]
[8]
[8 5 8 1 6 8 7 7; 9 9 2 8 2 7 8 3; 2 8 4 9 7 3 2 7; 9 2 9 7 1 9 5 6; 6 9 8 7 3 1 5 2; 1 9 9 7 1 8 8 2; 3 5 6 8 1 4 7 5]
[8 1 8; 2 5 7; 8 0 1]

파이썬 형식의 입력 :

[[8, 4, 5, 6, 5], [9, 3, 8, 4, 8], [0, 8, 6, 1, 5], [6, 7, 9, 8, 2], [8, 8, 7, 4, 2]]
[[8, 8], [2, 3]]
[[5, 3, 4], [2, 5, 2]]
[[5, 8, 3, 8]]
[[8], [0], [8]]
[[4, 2, 8, 5], [2, 6, 1, 8], [8, 5, 5, 8]]
[[4, 5, 4, 3, 8, 1, 8, 2], [8, 2, 7, 7, 8, 3, 9, 3], [9, 8, 7, 8, 5, 4, 2, 8], [4, 5, 0, 2, 1, 8, 6, 9], [1, 5, 4, 3, 4, 5, 6, 1]]
[[8]]
[[8, 5, 8, 1, 6, 8, 7, 7], [9, 9, 2, 8, 2, 7, 8, 3], [2, 8, 4, 9, 7, 3, 2, 7], [9, 2, 9, 7, 1, 9, 5, 6], [6, 9, 8, 7, 3, 1, 5, 2], [1, 9, 9, 7, 1, 8, 8, 2], [3, 5, 6, 8, 1, 4, 7, 5]]
[[8, 1, 8], [2, 5, 7], [8, 0, 1]]

출력 :

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

17
당신이 그것을 좋아한다면 당신은 그것에 투표를해야합니다
Luis Mendo

"8과 동일한 셀"을 읽을 때 잠시 동안 셀이 그리드의 1x1 척 (NxN)보다 클 수 있다고 생각했습니다. 수학이 필요없는 것을 명확히하기 위해 아마도 "8 인 셀"로 바꾸어야 할 것입니다. = P
Tezra

@ 테 즈라 편집. 내가 좀 덜 자연 새로운 표현을 찾을 수 있습니다,하지만 난 당신의 기준 믿을거야 그래서 내가 네이티브 스피커가 아니에요
루이스 Mendo

답변:


2

MATL , 21 17 10 바이트

8=t3Y6Z+>z

온라인으로 사용해보십시오!

채팅에 도움을주고 2D 컨볼 루션을 제안한 Luis Mendo에게 감사합니다.

설명:

	#implicit input, m
8=	#equal to 8? matrix of 1 where m is 8, 0 otherwise
t	#duplicate
3Y6	#push [1 1 1; 1 0 1; 1 1 1], "neighbor cells" for convolution
Z+	#2D convolution; each element is replaced by the number of neighbors that are 8
>	#elementwise greater than -- matrix of 1s where an 8 is single, 0s otherwise
z	#number of nonzero elements -- number of single eights
	#implicit output

개념을 잘 알고 있다면 (2D-) 회선을 사용하여 상당히 많은 바이트를 절약 할 수 있습니다.
Luis Mendo

1
@LuisMendo 2D 컨볼 루션은 1D 컨볼 루션을 이해하지 못하는 것 중 하나이므로 저에게는 희망이 없습니다 ... 두 가지를 배울 수있는 기회처럼 들립니다!
주세페

1
도움이 필요하면 대화방에 알려주십시오. 컨볼 루션은 매우 유용한 작업입니다. 컨벌루션을 배우려면 1D로 시작하십시오. 2D 로의 일반화는 즉각적입니다
Luis Mendo

9

R , 117 63 59 바이트

function(m)sum(colSums(as.matrix(dist(which(m==8,T)))<2)<2)

온라인으로 사용해보십시오!

dist행렬의 행 사이의 거리 (기본값은 유클리드)를 계산합니다. which두 번째 인수를 사용 TRUE하면 조건자가 true 인 좌표를 반환합니다.

그들 사이의 거리가 2의 제곱근보다 크지 않으면 좌표는 이웃이지만 <2, 가능한 거리가 sqrt(2)ro 에서 점프하기 때문에 내부 는 충분합니다 2.


수치적인 부정확성이 colSums()^2<=2작동 하지 않는 것은 부끄러운 일입니다.
Giuseppe

@Giuseppe는 물론 몇 가지 가능한 거리가 있으며 (예 :)로 sqrt(2)이동하여 너무 영리했습니다. 2sort(c(dist(expand.grid(1:6,1:6))), decreasing = TRUE))
ngm

7

APL (Dyalog Classic) , 29 28 25 바이트

≢∘⍸16=2⊥¨3,⌿3,/8=(⍉0,⌽)⍣4

온라인으로 사용해보십시오!


참고 : 0 인덱스 원점은 필요하지 않습니다.
Zacharý

@ Zacharý 나는 놀라움을 피하기 위해 항상 기본값으로 사용합니다.
ngn

아, 다른 사람들과 마찬가지로 1(명시 적으로 설정되지 않음). 말이 되네요
Zacharý

스텐실을 사용하지 않는 것이 놀랍습니다. 여기에 스텐실을 불편하게 만드는 것이 있습니까?
lirtosiast

@lirtosiast 그것으로 더 이상 :)
ngn

5

젤리 , 18 15 바이트

8=µ+Ż+ḊZµ⁺ỊṖḋµS

온라인으로 사용해보십시오!

작동 원리

8=µ+Ż+ḊZµ⁺ỊṖḋµS    Main link (monad). Input: digit matrix
8=              1) Convert elements by `x == 8`
  µ             2) New chain:
   +Ż+Ḋ              x + [0,*x] + x[1:] (missing elements are considered 0)
                     Effectively, vertical convolution with [1,1,1]
       Z             Transpose
        µ⁺      3) Start new chain, apply 2) again
          ỊṖ       Convert elements by `|x| <= 1` and remove last row
            ḋ      Row-wise dot product with result of 1)
             µS 4) Sum

이전 솔루션, 18 바이트

æc7B¤ZḊṖ
8=µÇÇỊḋµS

온라인으로 사용해보십시오!

Jonathan Allan의 솔루션 보다 1 바이트 길지만 다른 접근법을 공유하고 싶었습니다. .

작동 원리

æc7B¤ZḊṖ    Auxiliary link (monad). Input: integer matrix
æc7B¤       Convolution with [1,1,1] on each row
     ZḊṖ    Zip (transpose), remove first and last elements

8=µÇÇỊḋµS    Main link (monad). Input: digit matrix
8=           Convert 8 to 1, anything else to 0 (*A)
  怀        Apply aux.link twice (effective convolution with [[1,1,1]]*3)
     Ịḋ      Convert to |x|<=1, then row-wise dot product with A
       µS    Sum the result


4

J , 43, 40 37 바이트

Bubbler 덕분에 -3 바이트

1#.1#.3 3(16=8#.@:=,);._3(0|:@,|.)^:4

온라인으로 사용해보십시오!

설명:

알고리즘의 첫 번째 부분은 입력에 3x3 슬라이딩 윈도우를 적용 ​​할 수 있음을 보장합니다. 이것은 0의 행과 90도 회전을 4 회 반복하여 달성합니다.

1#.1#.3 3(16=8#.@:=,);._3(0|:@,|.)^:4
                         (       )^:4 - repeat 4 times
                          0|:@,|.     - reverse, prepend wit a row of 0 and transpose
                     ;._3             - cut the input (already outlined with zeroes)
      3 3                             - into matrices with size 3x3
         (          )                 - and for each matrix do
                   ,                  - ravel (flatten)
             8    =                   - check if each item equals 8
              #.@:                    - and convert the list of 1s and 0s to a decimal
          16=                         - is equal to 16?
   1#.                                - add (the result has the shape of the input)
1#.                                   - add again

1
사용 @:및 이동 37 바이트|. . 참고 @장소에서의이 @:작동하지 않습니다.
버블 러

@Bubbler 감사합니다!
Galen Ivanov

이거 좋은데. 코드 분석이 아닌 경우 작동 방식에 대해 최소한 높은 수준의 설명을 추가 할 가치가 있습니다. 그것을 알아내는 데 10m 정도 걸렸습니다. 또한 동일한 접근법을 사용하는 APL 버전이 얼마나 짧은 지 흥미 롭습니다. 그것은 단일 문자 기호 대신에 주로 digraphs의 결과 인 것 같습니다 ...
Jonah

@Jonah 설명을 추가하겠습니다. APL과 비교하기 위해 ngn 솔루션 의 개정판 , 특히 28 바이트 버전
Galen Ivanov

1
@Jonah 설명 추가
갈렌 이바노프을

3

레티 나 0.8.2 , 84 바이트

.+
_$&_
m`(?<!(?(1).)^(?<-1>.)*.?.?8.*¶(.)*.|8)8(?!8|.(.)*¶.*8.?.?(?<-2>.)*$(?(2).))

온라인으로 사용해보십시오! 설명:

.+
_$&_

모든 줄이 한쪽에 하나 이상의 문자를 갖도록 각 줄을 8문자 가 아닌 문자로 감싸십시오 8.

m`

이것은 마지막 단계이므로 경기를 세는 것이 암시됩니다. m수정은하게 ^하고 $문자는 라인의 시작 또는 끝에서 일치합니다.

(?<!...|8)

8 바로 다음에 문자를 일치시키지 마십시오.

(?(1).)^(?<-1>.)*.?.?8.*¶(.)*.

... 8 이하의 문자; 는 다음 행 (?(1).)^(?<-1>.)*에서와 동일한 열과 일치 ¶(.)*하지만 다음 행에서 다음 에 나오는 문자의 왼쪽 또는 오른쪽에 1을 .?.?허용합니다 .8.

8

일치 8합니다.

(?!8|...)

8 직전 8과 일치하지 않거나 ...

.(.)*¶.*8.?.?(?<-2>.)*$(?(2).)

... 아래 줄에 8이있는 문자; 다시,이 (?<-2>.)*$(?(2).)은 AS 동일한 열에 일치 (.)*¶이전 라인을하지만,이 .?.?(가) 있습니다 81 또는 오른쪽의 남겨 지도록 8사전이 .이전 라인.


3

젤리 , 17 바이트

=8ŒṪµŒcZIỊȦƲƇẎ⁸ḟL

온라인으로 사용해보십시오! 또는 테스트 스위트를 참조하십시오.

방법?

=8ŒṪµŒcZIỊȦƲƇẎ⁸ḟL - Link: list of lists of integers (digits)
=8                - equals 8?
  ŒṪ              - multidimensional truthy indices (pairs of row & column indices of 8s)
    µ             - start a new monadic chain
     Œc           - all pairs (of the index-pairs) 
            Ƈ     - filter keep if:  (keep those that represent adjacent positions)
           Ʋ      -   last four links as a monad:
       Z          -     transpose
        I         -     incremental differences
         Ị        -     insignificant? (abs(x) <= 1)
          Ȧ       -     all?
             Ẏ    - tighten (to a list of all adjacent 8's index-pairs, at least once each)
              ⁸   - chain's left argument (all the index-pairs again)
               ḟ  - filter discard (remove those found to be adjacent to another)
                L - length (of the remaining pairs of indices of single 8s)

3

J, 42 바이트

[:+/@,8=]+[:+/(<:3 3#:4-.~i.9)|.!.0(_*8&=)

온라인으로 사용해보십시오!

설명

: 여기에 높은 수준의 접근 방식은 생활의 게임에 고전 APL 솔루션에 사용되는 것과 유사 https://www.youtube.com/watch?v=a9xAKttWgP4 .

이 솔루션에서 우리는 가능한 8 개의 이웃 방향으로 행렬을 이동하여 8 개의 입력 복제본을 생성 한 다음 쌓아 올린 다음 "평면"을 추가하여 이웃 수를 얻습니다.

여기서는이 문제에 대한 솔루션을 조정하기 위해 "infinity by infinity"트릭을 사용합니다.

[: +/@, 8 = ] + [: +/ (neighbor deltas) (|.!.0) _ * 8&= NB. 
                                                        NB.
[: +/@,                                                 NB. the sum after flattening
        8 =                                             NB. a 0 1 matrix created by
                                                        NB. elmwise testing if 8
                                                        NB. equals the matrix
            (the matrix to test for equality with 8   ) NB. defined by...
            ] +                                         NB. the original input plus
                [: +/                                   NB. the elmwise sum of 8
                                                        NB. matrices defined by
                                                _ *     NB. the elmwise product of 
                                                        NB. infinity and
                                                    8&= NB. the matrix which is 1
                                                        NB. where the input is 8
                                                        NB. and 0 elsewhere, thus
                                                        NB. creating an infinity-0
                                                        NB. matrix
                                        (|.!.0)         NB. then 2d shifting that 
                                                        NB. matrix in the 8 possible
                                                        NB. "neighbor" directions
                      (neighbor deltas)                 NB. defined by the "neighbor
                                                        NB. deltas" (see below)
                                                        NB. QED.
                                                        NB. ***********************
                                                        NB. The rest of the
                                                        NB. explanation merely
                                                        NB. breaks down the neighbor
                                                        NB. delta construction.


                      (neighbor deltas  )               NB. the neighbor deltas are
                                                        NB. merely the cross product
                                                        NB. of _1 0 1 with itself,
                                                        NB. minus "0 0"
                      (<: 3 3 #: 4 -.~ i.9)             NB. to create that...
                       <:                               NB. subtract one from
                          3 3 #:                        NB. the base 3 rep of
                                       i.9              NB. the numbers 0 - 8
                                 4 -.~                  NB. minus the number 4
                                                        NB.
                                                        NB. All of which produces
                                                        NB. the eight "neighbor"
                                                        NB. deltas:
                                                        NB. 
                                                        NB.       _1 _1
                                                        NB.       _1  0
                                                        NB.       _1  1
                                                        NB.        0 _1
                                                        NB.        0  1
                                                        NB.        1 _1
                                                        NB.        1  0
                                                        NB.        1  1

1
당신은 사이에 공백을 제거 잊어 버린 ~>
갈렌 이바노프

@GalenIvanov 수정되었습니다. 고맙습니다.
요나

3

자바 (8), 181 (157) 156 바이트

(M,R,C)->{int z=0,c,f,t;for(;R-->0;)for(c=C;c-->0;z+=f>1?0:f)for(f=0,t=9;M[R][c]==8&t-->0;)try{f+=M[R+t/3-1][c+t%3-1]==8?1:0;}catch(Exception e){}return z;}

@ OlivierGrégoire 덕분에 -24 바이트 .

차원을 추가 매개 변수 R(행 수) 및 C(열 수)로 사용합니다.

내가 에서처럼 세포는 매우 유사한 체크 나의 프라이 시뮬레이터 대답 .

온라인으로 사용해보십시오.

설명:

(M,R,C)->{                    // Method with integer-matrix as parameter & integer return
  int z=0,                    //  Result-counter, starting at 0
      c,f,t;                  //  Temp-integers, starting uninitialized
  for(;R-->0;)                //  Loop over the rows:
    for(c=C;c-->0             //   Inner loop over the columns:
           ;                  //     After every iteration:
            z+=f==1?          //      If the flag-integer is larger than 1:
                0             //       Leave the result-counter the same by adding 0
               :              //      Else:
                f)            //       Add the flag-integer (either 0 or 1)
      for(f=0,                //    Reset the flag to 0
          t=9;M[R][c]==8&     //    If the current cell contains an 8:
              t-->0;)         //     Inner loop `t` in the range (9, 0]:
        try{f+=               //      Increase the flag by:
               M[R+t/3-1]     //       If `t` is 0, 1, or 2: Look at the previous row
                              //       Else-if `t` is 6, 7, or 8: Look at the next row
                              //       Else (`t` is 3, 4, or 5): Look at the current row
                [c+t%3-1]     //       If `t` is 0, 3, or 6: Look at the previous column
                              //       Else-if `t` is 2, 5, or 8: Look at the next column
                              //       Else (`t` is 1, 4, or 7): Look at the current column
                ==8?          //       And if the digit in this cell is 8:
                 1            //        Increase the flag-integer by 1
                :0;           //       Else: leave it the same
        }catch(Exception e){} //      Catch and ignore ArrayIndexOutOfBoundsExceptions
                              //      (try-catch saves bytes in comparison to if-checks)
  return z;}                  //  And finally return the counter


2

파워 쉘, 121 바이트

param($a)(($b='='*4*($l=($a|% Le*)[0]))+($a|%{"!$_!"})+$b|sls "(?<=[^8]{3}.{$l}[^8])8(?=[^8].{$l}[^8]{3})" -a|% m*).Count

덜 골프 테스트 스크립트 :

$f = {

param($a)

$length=($a|% Length)[0]
$border='='*4*$length
$pattern="(?<=[^8]{3}.{$length}[^8])8(?=[^8].{$length}[^8]{3})"
$matches=$border+($a|%{"!$_!"})+$border |sls $pattern -a|% Matches
$matches.count

}

@(

,(3,"84565","93848","08615","67982","88742")
,(0,"88","23")
,(0,"534","252")
,(2,"5838")
,(2,"8","0","8")
,(1,"4285","2618","8558")
,(3,"45438182","82778393","98785428","45021869","15434561")
,(1,"8")
,(4,"85816877","99282783","28497327","92971956","69873152","19971882","35681475")
,(3,"818","257","801")
,(0,"")

) | % {
    $expected,$a = $_
    $result = &$f $a
    "$($result-eq$expected): $result : $a"
}

산출:

True: 3 : 84565 93848 08615 67982 88742
True: 0 : 88 23
True: 0 : 534 252
True: 2 : 5838
True: 2 : 8 0 8
True: 1 : 4285 2618 8558
True: 3 : 45438182 82778393 98785428 45021869 15434561
True: 1 : 8
True: 4 : 85816877 99282783 28497327 92971956 69873152 19971882 35681475
True: 3 : 818 257 801
True: 0 : 

설명:

먼저, 스크립트는 첫 번째 문자열의 길이를 계산합니다.

둘째, 문자열에 테두리를 추가합니다. 증강 현실 문자열은 다음을 좋아합니다.

....=========!84565! !93848! !08615! !67982! !88742!===========....

여러 줄 문자열을 나타냅니다.

...=====
=======
!84565!
!93848!
!08615!
!67982!
!88742!
=======
========...

참고 1 : = 는 모든 길이의 문자열에 충분합니다.

참고 2 : 많은 수는 =8 개 검색에 영향을 미치지 않습니다.

다음으로, 정규 표현식 (?<=[^8]{3}.{$l}[^8])8(?=[^8].{$l}[^8]{3})숫자를 찾습니다 8앞의 비 형상을 가진 (?<=[^8]{3}.{$l}[^8])다음과 같은 비 형상을 (?=[^8].{$l}[^8]{3}):

.......
<<<....
<8>....
>>>....
.......

마지막으로 일치 횟수가 결과로 반환됩니다.


2

젤리 , 12 바이트

œẹ8ạṀ¥þ`’Ạ€S

온라인으로 사용해보십시오!

작동 원리

œẹ8ạṀ¥þ`’Ạ€S  Main link. Argument: M (matrix)

œẹ8           Find all multidimensional indices of 8, yielding an array A of pairs.
      þ`      Table self; for all pairs [i, j] and [k, l] in A, call the link to the
              left. Return the results as a matrix.
   ạ              Absolute difference; yield [|i - k|, |j - l|].
    Ṁ             Take the maximum.
        ’     Decrement all the maxmima, mapping 1 to 0.
         Ạ€   All each; yield 1 for each row that contains no zeroes.
           S  Take the sum.

1

자바 스크립트 (ES6), 106 바이트

a=>a.map((r,y)=>r.map((v,x)=>k+=v==8&[...'12221000'].every((d,i,v)=>(a[y+~-d]||0)[x+~-v[i+2&7]]^8)),k=0)|k

온라인으로 사용해보십시오!


비트 단위 접근, 110 바이트

a=>a.map(r=>r.map(v=>x=x*2|v==8,x=k=0)|x).map((n,y,b)=>a[0].map((_,x)=>(n^1<<x|b[y-1]|b[y+1])*2>>x&7||k++))&&k

온라인으로 사용해보십시오!


비트 단위 접근 방식은 실패[[7]]
l4m2

@ lm42 감사합니다. 이제 수정되었습니다.
Arnauld

1

클로저 , 227 198 바이트

(fn[t w h](let[c #(for[y(range %3 %4)x(range % %2)][x y])e #(= 8(get-in t(reverse %)0))m(fn[[o p]](count(filter e(c(dec o)(+ o 2)(dec p)(+ p 2)))))](count(filter #(= 1(m %))(filter e(c 0 w 0 h))))))

아야. 어떤 식 으로든 여기서 가장 짧지는 않습니다. 54 바이트의 괄호가 킬러입니다. 그래도 여전히 비교적 행복합니다.

-29 바이트 는 두 번 수행 한 후 범위를 생성하는 도우미 함수를 만들고 설정 reduce을 변경하고 (count (filter골프 후 스레딩 매크로를 제거 하여 -29 바이트 입니다.

(defn count-single-eights [td-array width height]
  ; Define three helper functions. One generates a list of coords for a given range of dimensions, another checks if an eight is
  ; at the given coord, and the other counts how many neighbors around a coord are an eight
  (letfn [(coords [x-min x-max y-min y-max]
            (for [y (range y-min y-max)
                  x (range x-min x-max)]
              [x y]))
          (eight? [[x y]] (= 8 (get-in td-array [y x] 0)))
          (n-eights-around [[cx cy]]
            (count (filter eight?
                           (coords (dec cx) (+ cx 2), (dec cy) (+ cy 2)))))]

    ; Gen a list of each coord of the matrix
    (->> (coords 0 width, 0 height)

         ; Remove any coords that don't contain an eight
         (filter eight?)

         ; Then count how many "neighborhoods" only contain 1 eight
         (filter #(= 1 (n-eights-around %)))
         (count))))

(mapv #(count-single-eights % (count (% 0)) (count %))
      test-cases)
=> [3 0 0 2 2 1 3 1 4 3]

어디에 test-cases모든 "Python 테스트 사례"를 포함하는 배열은 ?

온라인으로 사용해보십시오!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.