골프 나 An OOP!
객체 지향 프로그래밍의 두 가지 중요한 구성 요소는 상속과 구성입니다. 함께 사용하면 문제를 해결하기 위해 간단하면서도 강력한 클래스 계층을 만들 수 있습니다. 당신의 임무는 클래스 계층에 대한 일련의 진술을 분석하고 계층에 관한 질문에 답변하는 것입니다.
입력
파일이나 표준 입력에서 읽은 클래스 계층 구조에 대한 일련의 진술과 질문 중 언어에 가장 적합한 것입니다. 파일 옵션을 사용하면 파일 이름이 코드의 첫 번째 인수 (함수 인수 또는 명령 행 인수 중 하나)로 전달됩니다. 형식은 다음과 같습니다.
<statement> : <name> is a <name>. | <name> has a <name>.
<question> : Is <name> a <name>? | Does <name> have a <name>?
<name> : a-z | A-Z | sequence of alphanumerics or underscores, starting with a letter
입력은 항상 진술과 질문입니다. 모든 수업 이름은 대문자 영어 ( A-Z
)로 시작하고 모든 회원 이름은 영어 대문자 ( a-z
)로 시작합니다 . 모든 이름은 대소 문자를 구분합니다- ABC123
와 같은 클래스가 아닙니다 Abc123
.
경우 - 어떤 순환 상속이되지 않습니다 B
에서 상속이 A
, A
상속되지 않습니다 B
또는의 B
어린이들 '.
같은 문 - 만 클래스 이름은 계층 구조의 일부가 될 것입니다 foo is a bar.
또는 document has a name.
발생하지 않습니다.
산출
쿼리에 대한 답변, 표준 출력 또는 함수의 반환 값으로 작성된 일련의 진실 또는 거짓 값. 질문에 답변하기에 충분한 정보가없는 경우 (예 : 명세서에 표시되지 않은 이름이 포함 된 질문) 잘못된 값으로 답변하십시오.
테스트 사례
사례 1 :
입력:
B is a A.
C is a B.
A has a foo.
Does B have a foo?
Is C a A?
Is D a A?
산출:
True
True
False
사례 2 :
입력:
Cop is a Person.
Criminal is a Person.
Sheriff is a Cop.
Crooked_Cop is a Cop.
Crooked_Cop is a Criminal.
BankRobber is a Criminal.
Cop has a badge.
Criminal has a criminal_record.
Person has a name.
Is Crooked_Cop a Person?
Does Criminal have a name?
Is Crooked_Cop a BankRobber?
Does Person have a potato?
Is Cop a Cop?
산출:
True
True
False
False
True
규칙
- 기능이나 프로그램으로 대답 할 수 있습니다
- 표준 허점은 금지되어 있습니다
- 이것은 code-golf 이므로 바이트 단위의 가장 짧은 정답이 이깁니다.
- 당첨 답변은 일주일 이내에 선택됩니다
행운을 빕니다. 그리고 OOP가 당신과 함께 할 수 있습니다!
리더 보드
이 게시물의 하단에있는 스택 스 니펫은 답변 a) 언어별로 가장 짧은 솔루션 목록으로, b) 전체 리더 보드로 답변에서 리더 보드를 생성합니다.
답변이 표시되도록하려면 다음 마크 다운 템플릿을 사용하여 헤드 라인으로 답변을 시작하십시오.
## Language Name, N bytes
N
제출물의 크기는 어디에 있습니까 ? 당신은 당신의 점수를 향상시킬 경우에, 당신은 할 수 있습니다 를 통해 눈에 띄는에 의해, 헤드 라인에 오래된 점수를 유지한다. 예를 들어 :
## Ruby, <s>104</s> <s>101</s> 96 bytes
헤더에 여러 숫자를 포함하려는 경우 (예 : 점수가 두 파일의 합계이거나 인터프리터 플래그 페널티를 별도로 나열하려는 경우) 실제 점수가 헤더 의 마지막 숫자 인지 확인하십시오 .
## Perl, 43 + 2 (-p flag) = 45 bytes
언어 이름을 링크로 만들면 스 니펫에 표시됩니다.
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
Criminal is a Person
. Person has a name
.
Does Criminal have a name?
같True
습니까? 모든 개체에 이름이 있습니까?