되기 위해


28

가능한 최소 바이트에서 주어진 두 값이 각각 다음 중 하나와 일치하는지 확인하십시오.

첫 번째 가치

2      string or integer - whichever you prefer
to     case insensitive
too    case insensitive
two    case insensitive
t0     case insensitive (t zero)

두 번째 가치

b      case insensitive
be     case insensitive
bee    case insensitive
b3     case insensitive

2          'Bee'            true
'2'        'b'              true
'not to'   'be'             false
'that is'  'the question'   false

5
N0 l33t? “t0 b3”
manatwork

7
함수 여야 합니까?
Dennis

2
@ rybo111 음! 그것은 그들이 개념을 이해하지 못하는 것 같습니다 ;)
Draco18s

13
이것은 셰익스피어 솔루션을 요구합니다. 바이트 수는 의심 할 여지없이 ... 큰 것으로, 물론 비는 - 경쟁
대럴 호프만

1
@LuisMendo OK. 어느 쪽이든 괜찮습니다. 둘 다 지원할 필요는 없습니다.
rybo111

답변:


34

셰익스피어 , 4778 바이트

참고 :이 답변은 심각한 경쟁자가 아닙니다

To Be or Not To Be, This is the Answer.

Hamlet, the main player in our story.
Horatio, Hamlet's guide through his internal struggles.
The Ghost, a handsome honest bold fair gentle king.
Claudius, the worthless usurper of the throne.
Ophelia, who Hamlet always writes two.
Polonius, the unfortunate third man caught between Hamlet and Claudius.
Brabantio, the greater.
Banquo, the lesser.
Emilia, the greater.
Egeus, the lesser.
Othello, the greater.
Orsino, the lesser.
Tybalt, the greater.
Titania, the lesser.
Valentine, who doubled is greater.
Viola, who doubled is lesser.

Act I: A simple question in so many words.

Scene I: Hamlet passes judgment over the cast.

[Enter Hamlet and Horatio]
Hamlet:
    Thou art the sum of a good healthy sunny warrior and a lovely day.
[Exit Horatio]
[Enter Claudius]
Hamlet:
    Thou art the sum of The Ghost and warm cute brave trustworthy hero.
[Exit Claudius]
[Enter Ophelia]
Hamlet:
    Thou art the sum of Claudius and a smooth spaceman.
[Exit Ophelia]
[Enter Polonius]
Hamlet:
    Thou art the sum of Ophelia and a plum.
[Exit Polonius]
[Enter Brabantio]
Hamlet:
    Thou art the sum of The Ghost and the sum of The Ghost and a rich kingdom.
[Exit Brabantio]
[Enter Banquo]
Hamlet:
    Thou art the sum of Brabantio and The Ghost.
[Exit Banquo]
[Enter Emilia]
Hamlet:
    Thou art the sum of Brabantio and the sum of joy and a gentle girl.
[Exit Emilia]
[Enter Egeus]
Hamlet:
    Thou art the sum of Emilia and The Ghost.
[Exit Egeus]
[Enter Othello]
Hamlet:
    Thou art the sum of Emilia and the sum of a cunning lover and the sweetest golden embroidered rose.
[Exit Othello]
[Enter Orsino]
Hamlet:
    Thou art the sum of Othello and The Ghost.
[Exit Orsino]
[Enter Tybalt]
Hamlet:
    Thou art the sum of Othello and the sum of happiness and fair fine heaven.
[Exit Tybalt]
[Enter Titania]
Hamlet:
    Thou art the sum of Tybalt and The Ghost.
[Exit Titania]
[Enter Valentine]
Hamlet:
    Thou art the sum of Tybalt and the sum of a happy day and a pony.
[Exit Valentine]
[Enter Viola]
Hamlet:
    Thou art the sum of Valentine and The Ghost.
[Exeunt]

Scene II: The beginning of Horatio's interrogation.
[Enter Hamlet and Horatio]
Hamlet:
Horatio:
    Open your mind.
    Art thou as good as Tybalt?  If so, let us proceed to Scene IV.
    Art thou as good as Titania?  If so, let us proceed to Scene IV.
    Art thou as good as Ophelia?  If not, let us proceed to Scene XII.


Scene III: Are we to?
Horatio:
    Open your mind.
    Art thou as good as The Ghost?  If so, let us proceed to Scene VII.
    Let us proceed to Scene XII.

Scene IV: Can we go further than t?
Horatio:
    Open your mind.
    Art thou as good as Claudius?  If so, let us proceed to Scene III.
    Art thou as good as Valentine?  If so, let us proceed to Scene VI.
    Art thou as good as Viola?  If so, let us proceed to Scene VI.
    Art thou as good as Othello?  If so, let us proceed to Scene V.
    Art thou as good as Orsino?  If not, let us proceed to Scene XII.

Scene V: Oone oor twoo?
Horatio:
    Open your mind.
    Art thou as good as The Ghost?  If so, let us proceed to Scene VII.
    Art thou as good as Othello?  If so, let us proceed to Scene III.
    Art thou as good as Orsino?  If so, let us proceed to Scene III.
    Let us proceed to Scene XII.

Scene VI: Hamlet desperately searches for whOo?.
Horatio:
    Open your mind.
    Art thou as good as Othello?  If so, let us proceed to Scene III.
    Art thou as good as Orsino?  If so, let us proceed to Scene III.
    Let us proceed to Scene XII.

Scene VII: Knowing to, what to do?
Horatio:
    Open your mind.
    Art thou as good as Brabantio?  If so, let us proceed to Scene VIII.
    Art thou as good as Banquo?  If not, let us proceed to Scene XII.

Scene VIII: Learning what to Bleive.
Horatio:
    Open your mind.
    Art thou as good as me?  If so, let us proceed to Scene XI.
    Art thou as good as Emilia?  If so, let us proceed to Scene X.
    Art thou as good as Egeus?  If so, let us proceed to Scene X.
    Art thou as good as Polonius?  If not, let us proceed to Scene XII.

Scene IX: The Eend is nigh?
Horatio:
    Open your mind.
    Art thou as good as me?  If so, let us proceed to Scene XI.
    Let us proceed to Scene XII.

Scene X: Wee may havee succeeeedeed.
Horatio:
    Open your mind.
    Art thou as good as Emilia?  If so, let us proceed to Scene IX.
    Art thou as good as Egeus?  If so, let us proceed to Scene IX.
    Art thou as good as me?  If not, let us proceed to Scene XII.

Scene XI: Hamlet is at peace.
Horatio:
    Thou art a beacon of happiness. 
    Let us proceed to Scene XIII

Scene XII: The demons have won.
Horatio:
    Thou art nothing.

Scene XIII: Hamlet opens up.
Horatio:
    Hamlet! Open your heart.
[Exeunt]

거짓이면 0을, 참이면 1을 출력합니다.

이것은 쉽게 짧아 질 수 있습니다 (그리고 사람들이 정말로 원한다면 단어 길이를 줄일 수 있습니다). 그렇게하면 선의의 얼굴을 때리는 것입니다. 나는 항상 Horatio가 Hamlet의 이름없는 영웅이라고 느꼈습니다. 그래서 Hamlet이 Hamlet (줄 바꿈을 나타냄)만큼 훌륭하다는 것을 증명해야 할 Hamlet에게 강렬한 독백을 전할 수있는 사람임을 항상 확인했습니다.

코드 자체는 매우 간단합니다. 모든 문자 sans Hamlet은 ASCII 값 (순서 :) newline,space,0,2,3,B,b,E,e,O,o,T,t,V,v이고 코드는 수락 상태 및 거부 상태로 전환 되는 간단한 상태 시스템 (특히 DFA )입니다 .Scene XIScene XII

이것은 내가 일한 기본입니다..

이것을 만든 후에, 나는 그것이 숫자에 인접했을 때 다음 상태로 떨어질 수 있다는 사실을 사용하여 그것을 셰익스피어에 꽂았습니다. 제목에 링크 된 Shakespeare 버전으로 만 테스트했지만 iirc 구현으로 언어를 정의한다고 생각합니다.


2
이 질문을 게시했을 때 나는 그렇게 복잡하면서도 매우 적합한 답변을 얻을 것이라고는 상상하지 못했습니다!
rybo111

18

망막 , 28

  • @ MartinBüttner 덕분에 1 바이트가 절약되었습니다.

아마도 가장 빠른 코드-골프 답변-OP 후 9 분.

입력 매개 변수는 쉼표로 구분됩니다. 출력은 진실의 경우 1이고 거짓의 경우 0입니다.

i`^(2|t[ow]?o|t0),b(e?e?|3)$

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


나는 버그를 수정하면 바이트를 절약 할 때 항상 그것을 좋아합니다!
Neil

5
@Neil 네 - 삭제 코드가 디버깅되는 코드 :
디지털 외상

1
@DigitalTrauma 진실로, 우리의 용감한 새로운 세계 에서는 충분히 참회하는 코드 만 허용 될 수 있습니다.
FryAmTheEggman

7

Pyth, 34 바이트

.A}Lrw1c2c." Wô-WûÄæ­§Òé
}

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

설명:

          ."...   packed string, gets decoded to: "2 TO TOO TWO T0 B BE BEE B3"
         c        split by spaces
       c2         split into 2 lists: [['2', 'TO', 'TOO', 'TWO', 'T0'], 
                                       ['B', 'BE', 'BEE', 'B3']]
   L              for each list:
     w               read a line
    r 1              convert it to uppercase
  }                  and test if it is part of this list list
.A                test if both return true

어떻게 든 압축 된 문자열 전에 코드를 제거하면 문자열이 끊어집니다.
busukxuan

@FryAmTheEggman 내가 했어. 출력은 "! $ 7C <Q / = / LF $ VF4K : .- E"입니다
busukxuan

@FryAmTheEggman 몇 번 시도하고 permalink를 비교했을 때 누락 된 것이 있습니다. 답변에 링크를 사용하는 대신 복사하여 붙여 넣은 것 같습니다. 압축 된 문자열을 SE에 붙여 넣을 때 약간의 바이트를 놓칠 것이라는 것을 몰랐습니다.
busukxuan

@ busukxuan 그래, 나는 방금 같은 것을 알아 차렸다 : P SE는 불행히도 인쇄 할 수없는 대부분의 문자를 숨 깁니다.
FryAmTheEggman

1
이것은 첫 번째 값에 대한 조건 (t 영) 통과하지 않는 것
닉 로버트슨에게

4

Pyth, 41 바이트

&xrw0c"2 to too two t0"dxrw0c"b be bee b3

여기 사용해보십시오!

간단한 목록 조회. 빈 목록을 잘못된 값으로 인쇄하고 비어 있지 않은 목록을 정확한 값으로 인쇄합니다.

보거나 더 나은 방법으로, 나는 이것을 정말로 좋아하지 않습니다.


4

Oracle SQL 11.2, 86 바이트

SELECT 1 FROM DUAL WHERE:1 IN('2','to','too','two','t0')AND:2 IN('b','be','bee','b3');

진실에 대해서는 행 하나를, 거짓에 대해서는 행을 반환하지 않습니다.


3

05AB1E , 39 45 바이트

암호:

“2€„…«Œ† t0“' ¡)Ilrk\U“b€ïÍÝ b3“' ¡)Ilrk\>X>*

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

CP-1252 인코딩을 사용합니다. 진실은 숫자가 출력 될 때이고 거짓은 아무것도 출력되지 않을 때입니다.

비경쟁 버전 (39 바이트) 은 최신 버전에서 작동합니다.

“2€„…«Œ† t0“ð¡)IlkU“b€ïÍÝ b3“ð¡)Ilk>X>*

3

ES6, 56 48 45 바이트

(...a)=>/^(2|t0|t[wo]?o),b(ee?|3)?$/i.test(a)

@ user81655 덕분에 5 바이트를 절약했습니다. 추가 최적화에서 3 바이트를 절약했습니다. @Patrick Roberts 덕분에 3 바이트를 더 절약했습니다.

t[wo]?o 세 개의 호모 폰과 모두 일치하는 가장 짧은 정규식입니다.

두 개의 값을 단일 매개 변수 배열로 전달할 수 있으면 나머지 매개 변수가 일반 매개 변수가되어 5 바이트를 더 절약 할 수 있습니다.


@ user81655 나쁘지는 않지만 더 개선했습니다.
Neil

1
입력에 rest 매개 변수를 사용하면 3 바이트가 절약됩니다.(...a)=>/^(2|t0|t[wo]?o),b(ee?|3)?$/.test(a)
Patrick Roberts

@ 패트릭 로버츠 허, 나는 그것에 대해 생각했지만 아무것도 저장하지 않았다고 생각했기 때문에 잘못 계산해야합니다.
Neil

i플래그가 없습니다.
Florent

@Florent 그것을 발견해 주셔서 감사합니다. (모두 예제가 모두 소문자가 아니어야합니다 ...)
Neil

3

펄 6, 45 44 바이트

골프를 도와 주신 IRC 사람들에게 감사합니다

{@_~~(~2|/:i^t[0|oo?|wo]$/,/:i^b[ee?|3]?$/)}

용법

> my &f = {@_~~(~2|/:i^t[0|oo?|wo]$/,/:i^b[ee?|3]?$/)}
-> *@_ { #`(Block|309960640) ... }
> f("2", "Bee")
True
> f("2", "b")
True
> f("not to", "be")
False
> f("that is", "the question")
False

비경쟁 대안, 54 바이트

정규식이 거칠다고 생각되면 위의 좋은 대안이지만 조금 더 길다. 몇 바이트 더 떨어질 수 있지만 경쟁이 아니기 때문에 그대로 두겠습니다.

{@_».lc~~(qw<to too two t0 2>.any,<b be bee b3>.any)}

1
펄 6. 모르는이 보는 사람에게 []같이 작성 될 정규식에 비 캡처 그룹을 표시 (?:하고 )당신은 꺾쇠 괄호에 배치 할 필요가 문자 클래스 얻으려면 펄 5에서 <[]>.
Brad Gilbert b2gills

b2gills ++, Perl 6 정규 표현식의 차이점에 대해서는 언급조차하지 않았습니다.
Hotkeys

나는 누군가가 그것을 알지 못했기 때문에 공감대를 가지고 있었으므로 항상 지적합니다.
브래드 길버트 b2gills

보다 우아한 골프를 자체 답변으로 게시하지 못하게하는 PP & CG 규칙이 있습니까? 약간 더 긴 * 버전이 가치가 있다고 생각합니다. * 나는 우아한 골프 관용구에는 공백을 고려하지 않는 것을 포함한다고 선언합니다.
raiph

3

파이썬 2.7, 133 바이트

def e(a, b):
        c, d = """2,too,to,t0,two""","""be,b,bee,b3"""
        return a.lower() in c and b.lower() in d

print e('2', 'bee')

주석에 더 작은 버전이 있지만 여기에 Python 버전이있는 경우 솔루션을 게시 해야하는지 확실하지 않습니다.

편집 : 함수가 없으면 73 바이트에 불과합니다 (그리고 그것은 최고의 답변에도 가깝지 않습니다. 용서하십시오.

a, b = "to", "bee"
print a in "2 too to t0 two" and b in "be b bee b3"

2
PPCG에 오신 것을 환영합니다! 답변을 작성하고 골프를 타는데 시간을 보냈고 귀속되지 않은 경우 (속성없이) 답변을 게시 할 수 있습니다.
Digital Trauma

아 그리고 대부분의 언어에는 골프 팁 스타일 질문이 있습니다. 파이썬 도 예외
Digital Trauma

참고이 입력으로 작업을 수행하는 것이 2(정수)
wnnmaw

3
이것도 e('oo', '3')비슷한 하위 문자열에 대해서도 True를 반환합니다 .
manatwork

1
@TheLateOne, Python은 골프를 타기 어렵 ​​기 때문에 pyth 또는 cjam과 같은 골프 언어를 거의 능가하지는 않지만 50, 60 또는 70 범위에 들어가는 것은 대부분의 과제에서 우리에게 아주 좋습니다. 낙심하지 마십시오!
wnnmaw

2

루비, 53 55 52 바이트

f=->(a,b){/^(2|t[wo]?o|t0)$/i=~a&&/^b(e?e?|3)$/i=~b}

솔직히 말해서 이것이 골프를 치기위한 첫 번째 시도입니다.

형태의 함수 호출 f.call(firstValue, secondValue)

0Truthy, nilFalsy입니다.

여기에서 테스트




1

파이썬, 85 83 바이트

@Manatwork는 2 바이트를 절약했습니다.

이것은 매우 무차별적인 힘입니다. 다음에는 정규식 솔루션을 살펴 보겠습니다.

lambda a,b:a.lower()in'2 to too two t0'.split()and b.lower()in['b','be','bee','b3']

1
첫 번째 배열의 경우 : '2 to too two t0'.split()두 번째 배열의 경우 차이가 없습니다.
manatwork

젠장, 예, 시도했습니다 '2,to,too,two,t0'.split(','). 바보 나.
Ogaday

1

PowerShell v3 +, 74 70 바이트

param($a,$b)+($a-in-split'2 to too two t0')*($b-in-split'b be bee b3')

정규식을 사용하지 않습니다. 두 개의 입력을 취하고 첫 번째 입력 -in-split연산자에 의해 동적으로 생성 된 배열 인지 확인 하고 그 부울을로 int로 변환 +한 다음 *두 번째가 -in두 번째 배열 인지 확인하여 곱합니다 (부울을 자동으로 int로 캐스팅합니다) ). x*y == x&yif xand y1or 만 가능 하기 때문에 작동합니다 0.

PowerShell은 기본적으로 대소 문자를 구분하지 않으므로 무료로 제공합니다. 출력 0또는 1거짓 / 거짓을 각각 나타냅니다. -in연산자에 v3 이상이 필요합니다 .

편집-단항 분할을 사용하여 4 바이트 저장


0

그루비, 52 바이트

f={x,y->"$x $y"==~"(?i)(2|t([wo]o?|0)) (b(ee?|3)?)"}

==~ 그루비의 멋진 정규 표현식 연산자는 평등을 확인합니다.

테스트 :

정규식 테스트.

assert f('2', 'Bee') == true
assert f('2', 'b') == true
assert f('not to', 'be') == false
assert f('that is', 'the question') == false

어떤 경우 x이다 t하고 y있다 0b?
Neil

무슨 소리 야?
J Atkin

나는 f('t', '0b')틀릴 것으로 예상 되지만 코드가 true를 반환 할까 걱정됩니다.
Neil

오, 알았어 그러나 그것은 잘못된 것을 돌려 줄 것입니다.
J Atkin

0

MATL , 32 41 43 바이트

jk'^(2|t[ow]?o|t0),b(e?e?|3)$'XX

@DigitalTrauma의 Retina answer 와 동일한 접근 방식 . 입력은 쉼표로 구분됩니다. Truthy 출력은 두 개의 입력이 소문자로 된 문자열입니다. 허위 출력이 없습니다.

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

j                                % input as a string
k                                % convert to lowercase
'^(2|t[ow]?o|t0),b(e?e?|3)$'     % regular expression to match the two inputs
XX                               % match regular expression

0

C # 6, 132 바이트

bool t(string x,string y)=>new[]{"2","to","too","two","t0"}.Contains(x.ToLower())&&new[]{"b","be","bee","b3"}.Contains(y.ToLower());

Ungolfed 버전 (약간 더 읽기 쉬움) :

bool t(string x, string y) => new[] { "2", "to", "too", "two", "t0" }.Contains(x.ToLower()) && new[] { "b", "be", "bee", "b3" }.Contains(y.ToLower());

0

파이썬 2, 67 바이트

Digital Trauma의 정규식을 사용합니다. 입력은 쉼표로 구분 된 단일 문자열입니다. 해당 형식이 입력에 허용되는지 확실하지 않습니다 ...

import re
f=lambda x:bool(re.match('^(2|t[ow]?o|t0),b(e?e?|3)$',x))
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.