입력 ∩ 소스 코드


70

소개

문제는 자체 소스 코드와 주어진 문자열 입력의 교차점을 인쇄하는 프로그램 / 함수를 만드는 것입니다. 이것은 코드 골프이며 더 정확합니다.

  • I입력 세트로 하자
    • {"a","b","c"}
  • S소스 코드 세트를 보자
    • {"b","f"}
  • 그런 다음 교차점은 그들이 공유하는 것입니다.
    • I ∩ S = {"b"}

입력

입력이 유연합니다. 소스 코드에 사용 된 문자 인코딩을 처리 할 수 ​​있어야합니다.

산출

출력이 유연합니다. 입력 및 소스 코드가 공유하는 문자 세트 여야합니다. 또한 세트 는 순서가없는 고유 한 개체 모음입니다. 요약하자면:

  • 유연한 출력 :
    • 데이터 구조가 될 수 있습니다 (문자열 또는 기타)
    • 순서가 맞지 않을 수 있음
    • 후행이있을 수 있습니다 \n
    • 분명해야한다

제한

challenge와 유사하게 프로그램 / 기능은 자체 소스 코드를 읽지 못할 수 있으며 0 바이트 솔루션은 허용되지 않습니다.

  • #1
functor x(I){ return I ∩ self; }

Inputs                                Outputs
------                                -------
enter preformatted text here      ->  {"e","n","t","r","f","o","x"}

["Albrt"," Einstin"]              ->  {"l","r","t","n","s"}
  • # 2
(_)->_&"(_)->&\"\\"

Inputs                                Outputs
------                                -------
"Security at the expense of       ->  "
usability comes at the expense 
of security."

(0____0)                          ->  (_)
  • #삼
ಠa益длф


Inputs                                Outputs
------                                -------
Far out in the uncharted backwaters ->"a"    
of the unfashionable end of the 
Western Spiral arm of the Galaxy lies 
a small unregarded yellow sun. 
Orbiting this at a distance of roughly 
ninety-eight million miles is an 
utterly insignificant little blue-green 
planet whose ape-descended life forms 
are so amazingly primitive that they 
still think digital watches are a pretty 
neat idea.

(ノಠ益ಠ)ノ彡┻━┻                      ->"ಠ益"

테스트 사례

Albert Einstein

\__( O__O)_/

!@#$%^&*()_+{}|:"<>?

1234567890-=[]\;',./

(ノಠ益ಠ)ノ彡┻━┻

“¤>%,oỊȤʠ“ØụĊ5D³ṃṠɼQ»j;Ç;“;}¶”

┬──┬ ノ( ゜-゜ノ)

Far out in the uncharted backwaters of the unfashionable end of the Western Spiral arm of the Galaxy lies a small unregarded yellow sun. Orbiting this at a distance of roughly ninety-eight million miles is an utterly insignificant little blue-green planet whose ape-descended life forms are so amazingly primitive that they still think digital watches are a pretty neat idea.

최신 정보

  • [16-08-10] : 세트 는 순서가없는 고유 한 개체 모음입니다
  • [16-08-10] : 후행 줄 바꿈이 허용됩니다

2
출력에 중복 문자가 포함될 수 있습니까?
Digital Trauma

1
@DigitalTrauma 예제 # 1, # 2, # 3에서 그렇지 나타납니다
루이스 Mendo

@DigitalTrauma 모호한 점에 대해 유감스럽게 생각하며, (수학적 의미에서) 세트는 순서를 무시하고 반복되지 않습니다.
NonlinearFruit

22
최상의 솔루션이 언어의 표준 quine을 기반으로하지 않는 일반화 된 quine을 만들어 낸 것을 축하합니다 . :)
Martin Ender

1
세트에 반복이 없어야하는 경우 입력 세트에도 반복이 포함되어서는 안됩니까? 아니면 입력이 실제로 설정되어 있지 않습니까?
user81655

답변:



15

파이썬 3, 44 바이트

나에게 1 바이트를 저장해 주셔서 감사합니다 Karl :-) 저에게 2 바이트를 저장해 주셔서 감사합니다.

나는 이것이 효과가 있다고 생각하지만, 그것은 첫 번째 불쾌한 도전이므로 100 % 확실하지 않습니다. : \

print(set("printseu()&'"+'+"')&set(input()))

43 바이트의 람다 버전 : lambda a:set(" lambdaset()&'"+':+"')&set(a)


8
'eroticpuns\()&\''문자열을 추가하는 것보다 짧습니다. (이스케이프 '되었지만 추가`\`가 필요합니다) 왜 점이 있습니까?
KarlKastor

woops의는 .덜 golfed 코드에서 유물이었다. 백 슬래시를 사용하면 \` is \\` 의 출력 과 입력 문자 복제가 허용되지 않기 때문에 작동하지 않습니다 .
Jeremy Jeremy

1
람다에 누락되었습니다 :.
Dennis

감사합니다 @Dennis. 프로그램에서 모든 문자를 찾으려고 시도한 후 눈이 흐려지기 시작합니다.;)
Jeremy

1
@Dada : 당신이 원하는 경우, 그것은 수 inspectour, nicestupor, poeticurns, nopictures, recountspi, 또는 inputscore. 또는 새로운 것을 위해 prunesit(코드 골퍼가하는 일에 대한 정확한 설명!) ipunster, 또는 nursepit다른 것들을 사용할 수 있습니다.
Deusovi

11

Dyalog APL , 8 바이트

'∩''⊢'∩⊢

is는 왼쪽 인수에서 오른쪽 인수에있는 문자를 반환합니다 (이 경우와 같이 왼쪽 인수에 중복이없는 경우 결과에도 중복이 없음)

논쟁이다

그런 다음 문자열에는 두 문자와 따옴표 문자가 있습니다 (문자열처럼 두 배가 됨).

TryAPL 온라인!



9

파이썬 2, 56 46 39 바이트

@Jeremy 덕분에 -1 바이트

lambda a:set(':&()smelt\ bad\'')&set(a)

익명 람다 함수, 문자열을 가져 와서 집합을 반환

구 버전:

lambda x,w=set('newmatrixbuspdl_:-)(=,\ \''):w-(w-set(x))

나는 이것을 좋아하지만 단 하나가 아닌`\\`에 두 개의 백 슬래시를 반환합니다.
Jeremy Jeremy

또한 람다의 이름을 다음과 같이 변경하여 바이트를 절약 할 수 있다고 생각합니다.a
Jeremy

1
@Jeremy 고마워, 팁 '\\'은 문자열 형식으로 백 슬래시를 표현하는 파이썬의 방법입니다. 단 하나의 따옴표는 끝 따옴표를 이스케이프하므로 백 슬래시로 백 슬래시를 이스케이프 처리해야 작동합니다. 입력 print '\\'하면 하나의 백 슬래시를 나타내는 것입니다.
KarlKastor

을 사용하여 36에 도달 할 수 있습니다 lambda a:{*''' lambda&':{}*'''}&{*a}.
Morgan Thrapp

1
@MorganThrapp 35lambda a:{*' lambda&\\\':{}*'}&{*a}
seequ

9

펄 6 , 56, 55 바이트

" 프랑스어 "/ 유니 코드 버전 (55 바이트)

say perl q.say perlq$*IN\\\.comb:..comb$*IN.comb:

" Texas "/ ASCII 버전 (56 바이트)

say (q.sayq(&) $*IN\\\.combperl..comb (&)$*IN.comb).perl
say perl q.sayq(&) $*IN\\\.comb:perl..comb (&)$*IN.comb:

골퍼가 아닌 :

my \Source = 'my \\Source = \'say ( $*IN.comb.Set ∩ Source.comb.Set ).perl\'';
say ( $*IN.comb.Set  Source.comb.Set ).perl

예 :

$ echo -n 'say perl q.say perlq∩$*IN\\\.comb:..comb∩$*IN.comb:' > test-unicode.p6

$ echo -n 'say (q.sayq(&) $*IN\\\.combperl..comb (&)$*IN.comb).perl' > test-ascii.p6

$ perl6 test-ascii.p6 <<< 'abcdefghijklmnopqrstuvwxyz'
set("p","a","l","r","c","q","b","s","e","m","y","o")

$ perl6 test-unicode.p6 < test-unicode.p6
set("\\","I","p"," ","a","c","l","r","q","b","∩","*","s","m","e",".","y",":","o","N","\$")

$ perl6 test-ascii.p6 < test-ascii.p6
set("p","\\","I"," ","a","l","r","c","q","b",")","*","s","e","m","\&",".","(","y","o","N","\$")

$ perl6 test-ascii.p6 < test-unicode.p6
set("p","\\","I"," ","a","l","r","c","q","b","*","s","e","m",".","y","o","N","\$")

$ perl6 test-unicode.p6 <<< 'Albert Einstein'
set(" ","l","r","b","s","e")

$ perl6 test-unicode.p6 <<< '\__( O__O)_/'
set("\\"," ")

$ perl6 test-ascii.p6 <<< '!@#$%^&*()_+{}|:"<>?'
set(")","*","\&","(","\$")

$ perl6 test-unicode.p6 <<< "1234567890-=[]\\;',./"
set("\\",".")

$ perl6 test-unicode.p6 <<< '(ノಠ益ಠ)ノ彡┻━┻'
set()

“¤>%,oỊȤʠ“ØụĊ5D³ṃṠɼQ»j;Ç;“;}¶”
set("o")

$ perl6 test-unicode.p6 <<< '┬──┬ ノ( ゜-゜ノ)'
set(" ")


$ perl6 test-ascii.p6 <<< 'Far out in the uncharted backwaters of the unfashionable end of the Western Spiral arm of the Galaxy lies a small unregarded yellow sun. Orbiting this at a distance of roughly ninety-eight million miles is an utterly insignificant little blue-green planet whose ape-descended life forms are so amazingly primitive that they still think digital watches are a pretty neat idea.'
set("p"," ","a","l","r","c","b","s","e","m",".","y","o")

2
$*PROGRAM프로그램의 소스 코드에 액세스 하지 않아 규칙을 위반합니까?
celtschk

@celtschk 게시하기 전에 질문을 다시 읽고 수정했습니다. (기술적으로는 컴파일러는 볼 수 $*PROGRAM에서 읽어 회색 영역에 넣어 것이다 컴파일 된 프로그램의 문자열로 전체 소스를 저장)
브래드 길버트는 b2gills

8

MATL , 8 바이트

'X&'''X&

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

입력은 작은 따옴표로 묶인 문자열입니다. 문자열에 작은 따옴표가 포함되어 있으면 이스케이프하기 위해 복제해야합니다.

설명

'X&'''   % Push string with the three characters used by the program. The single-quote 
         % symbol needs to be escaped by duplicating it
X&       % Take input implicitly. Set intersection. Display implicitly

6

실제로 6 바이트

`∩è`è∩

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

설명:

`∩è`è∩
`∩è`    push the function `∩è` (which contains every character in the source code except '`')
    è   repr (same as Python repr - leaves "`∩è`", which contains every character in the source code)
      ∩ set intersection with input

5

하스켈 (30 바이트)

이것은 지루한 해결책입니다 ... 그러나 나는 더 잘 할 수 없었습니다. :(

filter(`elem`"f(term)\"i`l\\")



4

C, 142 바이트

main(i){char*p,a[]="remain([*]){fought?>:01;,\\\"=capsv+-l}";for(;(i=getchar())>=0;p?putchar(i),memmove(p,p+1,a+strlen(a)-p):0)p=strchr(a,i);}

ideone에서 사용해보십시오 .


2
ungolfed 버전 및 / 또는 설명은 좋을 것입니다!
YSC

저장된 1 바이트 sizeof a대신에 사용할 수 strlen(a)있지만 어레이에 알려진 크기 :를 제공하고 5 바이트를 a[99]="..."대체 strlen(a)하여 대체 하는 것이 더 좋습니다 99.
G. Sliepen

로 교체 (i=getchar())>=0하여 다른 3 또는 4 바이트를 저장할 수 있습니다 read(0,&i,1). 이것은 리틀 엔디안 머신에서 작동합니다. i인수와 함께 프로그램을 실행하지 않으면 1로 초기화됩니다. 빅 엔디안 컴퓨터에서도 작동하려면 인수 목록에서 i를 제거 main()하고 본문에서 char로 선언하십시오 (그러나 3 바이트 만 저장하십시오). read()EOF에서 0을 편리하게 반환합니다.
G. Sliepen

4

CJam, 8 바이트

"`q&"`q&

여기에서 시도하십시오.

설명:

"`q&"    e# Push that string to the stack
     `   e# Stringify, pops the string and pushes "\"`r&\"" to the stack
      q  e# Pushes the input to the stack
       & e# Union, pops two elements and pushes a list of every element that is contained in both.


4

망막, 21 20 바이트

소스 코드에없는 문자를 제거한 다음 중복 문자를 제거합니다.

[^Ds.n\n[-a_-]

Ds`.

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


소스 코드에 줄 바꿈이 포함되어 있습니다 (출력은 그렇지 않습니다).
Martin Ender

나는 기본적으로 동일한 해결책을 일찍 가지고 있었지만 게시하는 것을 잊었다. 범위를 사용하여 몇 바이트를 절약 할 수 있습니다 [-a(그리고 밑줄과 하이픈을 포함하고 두 번째 줄에 백틱을 드롭하십시오). 그러나 나중에 참조 ]할 수 있도록 첫 번째 문자로 입력하면 이스케이프 처리가 필요하지 않습니다. 아, 그리고 선의를 위해 후행 줄 바꿈을 피하기 위해 두 단계를 바꿀 수 있습니다.
Martin Ender

@MartinEnder 이것은 여전히 ​​줄 바꿈을 중복 제거하지 않습니다. 문제입니까?
mbomb007

아 맞아, 나는 그것을 알아 차리지 못했다. 그러면 s옵션 D과 캐릭터 클래스에 옵션 을 추가 해야합니다 .
Martin Ender

4

Mathematica, 35 바이트

Characters@"\"#&@C\acehrst⋂"⋂#&

익명의 기능. 생성 된 메시지를 무시하십시오. 문자 목록을 입력으로 취하고 문자 목록을 출력으로 리턴합니다. 유니 코드 문자는 U + 22C2입니다 \[Intersection].



4

Vim, 78 68 78 79 61 키 스트로크

내 접근 방식을 완전히 변경했습니다.

oo/\$kjxd<esc>/o<cr>xj$/\/<cr>xj$/\\<cr>xj$/$<cr>xj$/k<cr>xj$/x<cr>xj$/j<cr>xj$/d<cr>xkdd

작동 방식 :

먼저 모든 프로그램 문자로 줄을 만든 다음 입력 및 출력이 교차하는 경우 입력에 있거나 그렇지 않으면 출력을 삭제하는 각 프로그램 문자의 첫 번째 인스턴스를 찾습니다. 그것은 파일의 마지막 문자로 이동하고 (포장) d를 제외하고 소스의 각 고유 문자에 대해 수행합니다 .d는 파일의 끝으로 이동하는 대신 입력을 삭제하여 완료됩니다.


백 슬래시는 코드에 있지만 문자열에는없는 것 같습니다.
Titus

세번째 아닌가요?
Destructible Lemon

4

배쉬 , 45 50 41 39 37 34 29 바이트

Geoff Reedy 덕분에 -9 바이트,
Dennis 덕분에 -4 바이트
Nahuel Fouilleul 덕분에 -5 바이트

grep -o '[] [|\'\'grepouniq-]

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


grep 명령이 하나만 필요하지 않습니까?
Geoff Reedy

@GeoffReedy 첫 번째 grep 명령은 입력을 한 줄에 한 문자로 나눕니다.
Dennis

맞지만 -o를 두 번째 grep에 넣을 수 없었습니다
Geoff Reedy

당신 말이 맞아서 '.'을 확인해야합니다. 감사!
Riley

1
BASH는이 일이 수행 한 후 @Titus, GREP 가져 -o[] [|\'grepouniq-]. 따라서 다음 중 하나를 찾고 있습니다.[ ] {space} [ | {slash} ' g r e p o u n i q - ] 있습니다.
Riley

3

PowerShell v4 +, 122104 바이트

([char[]]($args[0]+'acegfhmnoprstu012|][()"?+_,.$-{0}{1}{2}'-f("'","}","{"))|group|?{$_.count-gt1}).name

어. 문자열 대체 형식이 너무 복잡하기 때문에 PowerShell의 Quines 또는 Quiine과 유사한 코드가 짜증납니다.

ace...{2}중간에있는 문자열 은 나머지 코드에있는 모든 문자입니다. 는 {0}{1}{2}와 함께 사용되어 -f풀 ORMAT하는 연산자 '{}문자열에 문자.

입력과 숯불 배열로 결합 된 $args다음 파이프 라인에 공급됩니다. 첫 번째 중지 점은 Group-Object입력 객체의 해시 테이블을 만들고 (필수적으로) 입력에서 발생하는 횟수입니다. 즉에 파이프 것 만이 해당 항목을 선택 보다 더 큰를 . 우리는 이것을 parens로 캡슐화 하고 해시 테이블 의 일부를 뜯어냅니다 (v4 + 요구 사항이 적용되는 곳, 그렇지 않으면 추가가 필요합니다)|?{...}Where-Object.count1.Name|Select Name 경우 파이프 라인에 단계가 ).

이러한 요소는 파이프 라인에 (배열로) 남아 있으며 인쇄는 암시 적입니다.


3

파이썬 2, 44 바이트

x='c=set;print c(`x`)&c(raw_input())';exec x

재미를 위해 여기에 퀴네 같은 전체 프로그램 제출이 있습니다. Python 2 세트의 문자열 표현을 출력합니다.


3

자바 스크립트 (ES6), 59 57 바이트

f=
t=>[..."\"().=>O[\\]defilnrtx~"].filter(e=>~t.indexOf(e))
;
<input placeholder=Input oninput=o.value=f(this.value).join``><input placeholder=Output id=o>

원본 문자열 / 문자 배열과 소스 코드 모두에 존재하는 문자 배열을 반환합니다. 편집 : @ user81655 덕분에 2 바이트가 절약되었습니다.


f=s=>[...new Set(f+'')]...바이트를 절약 할 수 있습니다.
user81655

또는 더 짧음 :f=s=>[...s].filter(c=>(new Set(f+'')).has(c))
user81655

@ user81655 최소한 Firefox에서는 소스 코드를 f+''읽어서 작동 f합니다. (어떤 경우에는 소스 파일을 변경 한 다음로드 된 함수를 문자열 화하여 Firefox가 충돌 할 수 있습니다.)
Neil

@ user81655 두 번째 예제 s는 요소가 반복되어 실패 하고 어쨌든 indexOfnew Set습니다.
Neil

이 경우 문자를 저장해보십시오 (예 c: 이미 목록에있는 문자로 매개 변수 변경 ).
user81655

3

Matlab, 37 바이트

아주 간단합니다 :

내장 intersect을 사용하여 교차점을 찾습니다. 소스 코드는 하드 코딩되어 있습니다. 따옴표 안에 입력해야합니다''

intersect(input(''),'''intersc(pu),')

당신은 익명의 기능을 사용해야했습니다 ... 5 바이트 당신을 이길
Sanchises

Hehe, 나는 그것이 내 최고의 골프가 아닌 것 같아요 ...
Stewie Griffin

3

JavaScript (OS X 10의 Chrome 58), 12654 12426 11992 바이트

https://paste.ubuntu.com/25593218/

https://paste.ubuntu.com/25595798/

https://paste.ubuntu.com/25595831/

원래 코드 :

var t=prompt();"!+()[]".split("").forEach(function(f){if(t.includes(f))alert(f)})

그런 다음이 여섯 문자 만 사용하는 jsfk라는 프로그래밍 스타일로 변환되었습니다.

(+)[!] 

온라인 컴파일러를 사용합니다.


jsfk 가 언어 인 경우 Javascript 대신 헤더에서 해당 언어를 사용해야합니다.
NonlinearFruit

1
@NonlinearFruit jsfk는 프로그래밍 스타일 입니다. 그것은 유효한 자바 스크립트입니다
Tornado547

2

R, 129 바이트

f=function(s){b=strsplit("f=unctio(s){arpl;,[1]b\\\"qemh0T}",c())[[1]];cat(b[unique(pmatch(strsplit(s,c())[[1]],b,0,T))],sep="")}

내가 풀면 문자열의 줄 바꿈처럼 이상한 일이 바뀌어야합니다 b. 어쨌든 매우 간단합니다. 함수에 모든 문자가 포함 된 벡터를 만듭니다. 그런 다음 입력을 벡터로 가져와 멤버십을 확인합니다.


당신은 거의 1 년 동안이 사이트를 방문하지 않았지만 f=function(s)cat(instersect(strsplit(s,"")[[1]],strsplit("f=unctio(s)aerpl,\\\"[1]","")[[1]]),sep="")101 바이트이며, I / O 형식이 더 단순 할 수 있다고 생각합니다 cat.
Giuseppe

2

루비, 34 + n플래그 = 35 바이트

-n프로그램이 STDIN을 라인 단위로 처리하기 때문에 멀티 라인 입력에서 정확하게 작동하지 않습니다 . 이 코드에는 줄 바꿈이 없지만 이와 같은 입력을 시도하면 하나 대신 여러 배열이 출력됩니다. 사양에 따라 좋지 않은 경우 알려 주시면 해결하겠습니다.

p $_.chars&"\\\"p $_.chars&".chars

2

ListSharp , 222 바이트

STRG S=READ[<here>+"\\S.txt"]
ROWS T=ROWSPLIT S BY [""]
ROWS R=ROWSPLIT "STRG =EAD[<her>+\".tx]OWPLIBYCFMHVNc#isn()oay\r\n" BY [""]
ROWS R=SELECT FROM T WHERE[EVERY STRG IS ANY STRG IN R]
SHOW=<c#R.Distinct().ToArray()c#>

말도 안되지만 즐겁게


2

sed, 47 자

:s;st[^])(*\1.s2t:[;^]tt;st\(.\)\(.*\1\)t\2t;ts

나는 이것이 얼마나 오랫동안 등장했는지, 특히 반복되는 문자를 제거하는 데 조금 실망했습니다.


이 버전의 sed는 무엇입니까? GNU sed는 말합니다 sed: -e expression #1, char 47: unterminated `s' command.
Dennis

-r 1을 포함하여 43 바이트 : sed -r ':;ss[^][str().*\12;:^]ss;ss(.)(.*\1)s\2s;t' 나는 당신을 알아 차리지 전에 쓴 그리고 그것은 매우 유사한 것으로 밝혀졌다
izabera

@ 데니스 고정; [후에 캐릭터 클래스를 파싱하려고 시도한 결과 :
Geoff Reedy

@izabera nice, : : 명령에는 실제로 레이블이 필요하지 않으며 레이블이없는 t의 의미가 바뀌는 것에 놀랐습니다.
Geoff Reedy

그래, 그것은 gnuism이다
izabera

2

자바 8 람다, 152 142 140 자

꽤 짧은:

s->s.chars().mapToObj(i->(char)i).filter(c->"COSTab\"\\cefh(i)j+l-mn.oprstuv>".contains(""+c)).collect(java.util.stream.Collectors.toSet())

또는 여기에 ungolfed :

public class Q89400 {

    static Set<Character> inAndQuine(String in) {
        return in.chars()
                .mapToObj(i->(char)i)
                .filter(c->"COSTab\"\\cefh(i)j+l-mn.oprstuv>".contains(""+c))
                .collect(java.util.stream.Collectors.toSet());

    }
}

물론 ungolfed 솔루션은 중괄호와 일부 문자와 일치하지 않으므로 완전성을 위해 잘못되었습니다.

이 함수는 입력을 a로 사용 String하고 java.util.Set<Character>입력과 소스 모두에있는 문자를 포함 하는를 반환합니다 .

업데이트

솔루션이 작동하지 않는 것으로 나타났습니다. String#contains정규식 일치에 대한 테스트를 생각 했지만 리터럴 일치입니다. 나는 문자를 인용하기 위해 탈출을 추가 .했지만 이것이 필요하지는 않았지만 대신 모든 것을 망쳤습니다. 이제 이스케이프가 없으면 일부 문자를 저장하고 실제로 작동합니다. :)

한 문자 변수 사용을 상기시켜 준 @NonlinearFruit에게 감사합니다.


이름 바꾸기 in와 같은 단일 문자로a
NonlinearFruit

3
@NonlinearFruit 당신 말이 맞아 : O 어떻게 잊을 수 있을까?!
Frozn

2

SQF , 71 69 64 바이트

기능 파일 형식 사용 :

i="-_h ;""=()sSplitrng"splitString"";i-(i-(_this splitString""))

전화 "STRING" call NAME_OF_COMPILED_FUNCTION

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