Tồn tại hay không tồn tại


28

Trong số ít byte nhất có thể, xác định xem hai giá trị được cung cấp có khớp với một trong các giá trị sau không:

Giá trị đầu tiên

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

Giá trị thứ hai

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

Ví dụ

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

5
N0 l33t?
Mùi

7
Tại sao nó phải là một chức năng ?
Dennis

2
@ rybo111 Vâng! Có vẻ như họ đã không hiểu khái niệm này rồi;)
Draco18s

13
Điều này cầu xin một giải pháp Shakespeare . Tất nhiên là không cạnh tranh, vì số lượng byte chắc chắn sẽ rất lớn ...
Darrel Hoffman

1
@LuisMendo OK. Hoặc là tốt. Hỗ trợ cả hai là không cần thiết.
rybo111

Câu trả lời:


34

Shakespeare , 4778 byte

Lưu ý: câu trả lời này không có nghĩa là một đối thủ cạnh tranh nghiêm trọng

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]

Kết quả 0 nếu sai, 1 nếu đúng.

Điều này có thể dễ dàng ngắn hơn (và nếu mọi người thực sự muốn tôi, độ dài từ có thể bị cắt giảm), nhưng để làm như vậy sẽ là một cái tát vào mặt của ý chí tốt. Tôi luôn cảm thấy Horatio là anh hùng vô danh của Hamlet, vì vậy tôi chắc chắn rằng anh ta là người đưa ra lời độc thoại mãnh liệt cho Hamlet nơi Hamlet cuối cùng phải chứng minh rằng anh ta cũng tốt như Horatio (người đại diện cho dòng mới).

Bản thân mã này khá đơn giản. Tất cả các ký tự sans Hamlet đều là giá trị ascii (Theo thứ tự newline,space,0,2,3,B,b,E,e,O,o,T,t,V,v:) và sau đó mã là một máy trạng thái đơn giản (cụ thể là DFA ) chuyển sang Scene XItrạng thái chấp nhận và Scene XIItrạng thái từ chối.

Đây là cái cơ bản tôi đã làm.

Sau khi thực hiện điều này, tôi chỉ cắm nó vào Shakespeare, sử dụng thực tế là tôi có thể thả xuống trạng thái tiếp theo khi chúng liền kề nhau về số. Tôi chỉ thử nghiệm nó với phiên bản Shakespeare mà tôi đã liên kết trong tiêu đề, nhưng tôi tin rằng chúng tôi xác định ngôn ngữ bằng một iirc thực hiện.


2
Khi tôi đăng câu hỏi này, tôi không bao giờ nghĩ rằng tôi sẽ nhận được một câu trả lời phức tạp và rất phù hợp như vậy!
rybo111

18

Võng mạc , 28

  • Lưu 1 byte nhờ @ MartinBüttner.

Rất có thể câu trả lời mã golf nhanh nhất từ ​​trước đến giờ của tôi - 9 phút sau OP.

Các tham số đầu vào được phân tách bằng dấu phẩy. Đầu ra là 1 cho sự thật và 0 cho falsey.

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

Hãy thử trực tuyến.


Tôi luôn luôn thích nó khi sửa lỗi tiết kiệm byte!
Neil

5
@Neil yep - mã đã xóa là mã gỡ lỗi :)
Chấn thương kỹ thuật số

1
@DigitalTrauma Thực sự, chỉ có thể cho phép mã sám hối đủ trong thế giới mới dũng cảm của chúng ta.
FryAmTheEggman

7

Bình thường, 34 byte

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

Dùng thử trực tuyến: Trình diễn

Giải trình:

          ."...   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

Bằng cách nào đó nếu tôi loại bỏ mã trước chuỗi đóng gói, chuỗi sẽ bị hỏng.
busukxuan

@FryAmTheEggman tôi đã làm. Đầu ra là "! $ 7C <Q / = / LF $ VF4K: .- E"
busukxuan

@FryAmTheEggman Tôi đã thử một vài lần và so sánh permalink, có một cái gì đó bị thiếu. Có vẻ như là do tôi đã sao chép và dán, thay vì sử dụng liên kết trong câu trả lời. Tôi không biết bạn sẽ bỏ lỡ một số byte khi dán các chuỗi được đóng gói vào SE.
busukxuan

@busukxuan Vâng, tôi chỉ nhận thấy một điều tương tự: P SE ẩn hầu hết các ký tự không thể in được.
FryAmTheEggman

1
Điều này dường như không vượt qua điều kiện (t zero) cho giá trị đầu tiên
Nic Robertson

4

Bình thường, 41 byte

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

Hãy thử nó ở đây!

Danh sách tra cứu đơn giản. In một danh sách trống dưới dạng giá trị giả và danh sách không trống là giá trị trung thực.

Nhìn hoặc một cách tốt hơn tho, tôi không thực sự thích cái này.


4

Oracle SQL 11.2, 86 byte

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

Trả về một hàng cho sự thật và không có hàng cho falsey.


3

05AB1E , 39 45 byte

Mã số:

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

Hãy thử trực tuyến!

Sử dụng mã hóa CP-1252. Sự thật là khi một số được xuất ra và giả là khi không có gì được xuất ra.

Phiên bản không cạnh tranh (39 byte) , hoạt động với phiên bản mới nhất:

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

3

ES6, 56 48 45 byte

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

Đã lưu 5 byte nhờ @ user81655. Đã lưu 3 byte từ một số tối ưu hóa hơn nữa. Đã lưu thêm 3 byte nhờ @Patrick Roberts.

t[wo]?o là regex ngắn nhất tôi có thể nghĩ ra để phù hợp với cả ba từ đồng âm.

Nếu nó được phép truyền hai giá trị dưới dạng một mảng tham số, thì tham số còn lại có thể trở thành tham số bình thường, tiết kiệm thêm 5 byte.


@ user81655 Không tệ, nhưng tôi đã cải thiện nó thêm.
Neil

1
nếu bạn sử dụng tham số phần còn lại cho đầu vào, nó sẽ giúp bạn tiết kiệm 3 byte:(...a)=>/^(2|t0|t[wo]?o),b(ee?|3)?$/.test(a)
Patrick Roberts

@PatrickRoberts Huh, tôi đã nghĩ về điều đó, nhưng tôi phải tính toán sai, vì tôi không nghĩ rằng mình đã tiết kiệm được gì.
Neil

Các ilá cờ là mất tích.
Florent

@Florent Cảm ơn bạn đã phát hiện ra điều đó. (Có lẽ các ví dụ không nên là chữ thường ...)
Neil

3

Perl 6, 45 44 byte

Cảm ơn những người ở IRC đã giúp tôi chơi golf này

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

sử dụng

> 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

Thay thế không cạnh tranh, 54 byte

Đây là một thay thế tốt đẹp ở trên nếu bạn nghĩ regexes là thô, nhưng nó dài hơn một chút. Nó có thể được đánh xuống một vài byte nhưng vì nó không cạnh tranh nên tôi sẽ để nó như vậy.

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

1
Đối với bất kỳ ai nhìn vào điều này, những người không biết Perl 6. []biểu thị một nhóm không bắt giữ trong regex, sẽ được viết dưới dạng (?:)trong Perl 5. Để có được một lớp nhân vật, bạn phải đặt chúng trong dấu ngoặc nhọn <[]>.
Brad Gilbert b2gills

b2gills ++, tôi thậm chí không nghĩ sẽ đề cập đến sự khác biệt trong các biểu thức Perl 6
Hotkey

Tôi đã bị downvote vì ai đó không biết điều đó, vì vậy tôi luôn chỉ ra điều đó.
Brad Gilbert b2gills

Có một quy tắc PP & CG ngăn bạn đăng bài golf thanh lịch hơn như câu trả lời của riêng mình không? Tôi nghĩ rằng một phiên bản dài hơn một chút sẽ là xứng đáng. * Tôi đồng ý rằng các thành ngữ golf thanh lịch bao gồm không quan tâm đến (không tính) khoảng trắng.
raiph

3

Python 2.7, 133 byte

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')

Không chắc chắn nếu chúng tôi phải đăng giải pháp nếu có phiên bản nhỏ hơn trong các nhận xét nhưng đây là phiên bản của tôi trong Python.

Chỉnh sửa: Không có chức năng, nó chỉ có 73 byte (và đó thậm chí không phải là câu trả lời hay nhất. Hãy tha thứ cho tôi Tôi mới

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

2
Chào mừng đến với PPCG! Nếu bạn dành thời gian viết và đánh golf một câu trả lời và không đạo văn (không có sự ghi nhận), thì bạn có thể đăng câu trả lời của mình!
Chấn thương kỹ thuật số

Oh và hầu hết các ngôn ngữ có một câu hỏi phong cách chơi golf ở đây. Python cũng không ngoại lệ
Chấn thương kỹ thuật số

Lưu ý rằng điều này không hoạt động với đầu vào của 2(số nguyên)
wnnmaw

3
Điều này trả về True cũng cho e('oo', '3')và các chuỗi con tương tự .
manatwork

1
@TheLateOne, Python không thể chơi gôn được, vì vậy bạn sẽ hầu như không bao giờ đánh bại các ngôn ngữ chơi gôn như pyth hoặc cjam, nhưng trong phạm vi 50, 60 hoặc 70 là khá tốt cho chúng tôi trong hầu hết các thử thách. Đừng nản lòng!
wnnmaw

2

Ruby, 53 55 52 byte

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

Tôi sẽ thành thật, đây là nỗ lực đầu tiên của tôi trong việc cố gắng đánh gôn.

Chức năng gọi dưới dạng f.call(firstValue, secondValue)

0là Chân lý, nillà giả dối.

Kiểm tra nó ở đây



1

Bình thường, 39 byte

-3 byte bởi @FryAmtheEggman

.A.b}rN1cY\@Q,."0Wѳ5YYÅJB"."3EW´l¢ï

Hãy thử nó ở đây .


Tôi sẽ sửa nó khi tôi đến máy tính.
lirtosiast

1

Python, 85 83 byte

@Quản lý đã tiết kiệm cho tôi hai byte.

Đây là lực lượng khá tàn bạo, tôi sẽ xem xét các giải pháp regex tiếp theo.

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

1
Đối với mảng thứ nhất: '2 to too two t0'.split()Đối với mảng thứ hai không có sự khác biệt.
manatwork

Chết tiệt, vâng, tôi đã thử '2,to,too,two,t0'.split(','). Tôi ngớ ngẩn quá.
Ogaday

1

PowerShell v3 +, 74 70 byte

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

Không sử dụng regex. Lấy hai đầu vào, kiểm tra xem cái đầu tiên có phải là -inmảng do -splittoán tử tạo động hay không , chuyển đổi Boolean thành int với +, sau đó nhân *với việc kiểm tra xem thứ hai có phải là -inmảng thứ hai không (sẽ tự động chuyển Boolean thành int ). Điều này hoạt động vì x*y == x&ynếu xy chỉ có thể 1hoặc 0.

PowerShell theo mặc định là không phân biệt chữ hoa chữ thường, vì vậy chúng tôi nhận được miễn phí. Sẽ đầu ra 0hoặc1 cho falsey / thật, tương ứng. Yêu cầu v3 hoặc mới hơn cho -intoán tử.

Chỉnh sửa - Đã lưu 4 byte bằng cách sử dụng unary -split


0

Groovy, 52 byte

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

==~ là một toán tử regex mát mẻ trong Groovy kiểm tra sự bằng nhau.

Các xét nghiệm:

Kiểm tra Regex101 .

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

Điều gì nếu xty0b?
Neil

Ý anh là gì?
J Atkin

Tôi hy vọng f('t', '0b')là sai, nhưng tôi lo ngại rằng mã của bạn sẽ trở lại đúng.
Neil

Ohhhh, Ok, tôi hiểu rồi. Đúng, nó sẽ trả lại điều sai.
J Atkin

0

MATL , 32 41 43 byte

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

Cách tiếp cận tương tự như câu trả lời Retina của @ DigitalTrauma . Các đầu vào được phân tách bằng dấu phẩy. Đầu ra thật là một chuỗi có hai đầu vào hạ thấp; giả là không có đầu ra.

Hãy thử trực tuyến!

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 byte

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

Phiên bản Ungolfed (Chỉ dễ đọc hơn một chút):

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

0

Python 2, 67 byte

Sử dụng regex kỹ thuật số chấn thương. Đầu vào là một chuỗi đơn được phân tách bằng dấu phẩy. Không chắc chắn nếu định dạng đó được cho phép để nhập liệu ...

import re
f=lambda x:bool(re.match('^(2|t[ow]?o|t0),b(e?e?|3)$',x))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.