Sử dụng nó không tốt meme


12

Hiện tại có một meme trên internet bao gồm lấy một câu, đảo ngược nghĩa và thêm n'tvào cuối. Ví dụ, I am smalltrở thànhI am talln't

Thử thách

Vì lợi ích của thách thức, chúng tôi sẽ đơn giản hóa điều này: Nhiệm vụ của bạn sẽ là phát hiện bất cứ khi nào có một phủ định trong câu và thay thế nó bằng câu 'tích cực' n'tđược thêm vào cuối. Sẽ có một số phần khó khăn sẽ được giải thích trong các quy tắc.

Quy tắc

  • Bạn phải lấy một chuỗi làm đầu vào và trả về một chuỗi làm đầu ra .
  • Đầu vào sẽ là một câu viết thường , chỉ .,dấu chấm câu.
  • Bạn phải thay thế bất kỳ no <any_word>hoặc not <any_word>với <any_word>n't.
  • no/ notphải là một từ và không phải là một chuỗi con: bạn không phải thay đổi bất cứ điều gì trongnone of those
  • Nếu từ đã kết thúc bằng a n, bạn phải thay thế n'tbằng 't: no plantrở thành plan'tkhông plann't
  • Khi nohoặc notkhông được theo sau bởi bất kỳ từ nào, dấu chấm câu hoặc dấu khác no/ not, bạn phải thay thế nó bằng yesn't.
  • từ ghép được tính là một từ. Vì vậy, ngay cả khi no-opcó chứa chuỗi con no, nó không chứa từ không. Vì vậy, kết quả sẽ được no-opkhông -opn't .
  • Bạn không phải lo lắng về lỗi ngữ pháp. Ví dụ, there is no waysẽ dẫn đến there is wayn't.
  • Không có sơ hở tiêu chuẩn được phép.
  • Đây là , vì vậy mã ngắn nhất sẽ thắng.

Có một số ví dụ, ngay cả khi thử thách này có vẻ không rõ ràng cho đến bây giờ.

Ví dụ

Đầu vào: tôi thích codegolfing, nhưng tôi không thích các chương trình ngắn. Liệu câu này có ý nghĩa ... tất nhiên là không.
Đầu ra: tôi thích codegolfing, nhưng tôi không thích các chương trình ngắn. câu này có ý nghĩa không ... tất nhiên là không.

Đầu vào : bạn không được mời. cút ra.
Đầu ra : bạn không được mời. cút ra.

Đầu vào : tôi không ổn, tôi không có kế hoạch và tôi không có súng
Đầu ra : tôi ổn, tôi không có kế hoạch và tôi không có súng

Đầu vào : oh không không không tôi từ chối.
Đầu ra : oh yes yes yes không từ chối.

Đầu vào : oh không không không, tôi từ chối.
Đầu ra : oh yes yes yes yes yes, tôi từ chối.

Đầu vào : tôi không thể tin điều này, bạn không thể codegolf.
Đầu ra : tôi không thể tin điều này, bạn không thể codegolf.

Đầu vào : oh không ... anh ấy đã làm lại.
Đầu ra : oh vâng, không ... anh ấy đã làm lại.

Đầu vào : không phải là một từ, kevin. Vì vậy, đây không phải là không.
Đầu ra : không phải là từ, kevin. Vì vậy, đây không phải là không.

Đầu vào : không phải là không phù hợp với tất cả mọi người
Đầu ra : là điều này không dành cho tất cả mọi người

Đầu vào : đây không phải là ý nghĩa ...
Đầu ra : đây không phải là ý nghĩa ...


1
Trong phần giới thiệu, không I am smallnên trở thành I am bign't?
RedClover

4
Một điểm cho biết "Đầu vào sẽ là [...] chỉ với. Và,". Một cách khác đề cập đến "không-op". Nhưng trong đó có dấu "-". Vậy "-" có được phép hay không?
đệ quy

Nên no nkết quả trong nn'thay n't?
Kevin Cruijssen

no nSould kết quả trong n'tvì 'từ' nkết thúc với a n.
chàng ngẫu nhiên

@Soaku nhỏ, cao, to, nhỏ, lớn, dài, ngắn v.v ... đều được sử dụng thay thế cho nhau. Nó không thực sự quan trọng vì lợi ích của câu hỏi. Nhưng từ trái nghĩa hợp lý nhất cho nhỏ sẽ là lớn, vâng.
Yates

Câu trả lời:


5

Võng mạc , 86 70 65 byte

T`-'`L
\bnot?\s+(?!not?\b)(\w+?)n?\b
$1n't
\bnot?\b
yesn't
T`L`-'

-16 byte nhờ @Neil .
-5 byte nhờ @ovs .

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

Giải trình:

T`-'`L             # Replace all "-" with "A" and all "'" with "B" to store them

\bnot?             # Then replace the word "no" or "not",
 \s+               #  followed by 1 or more whitespaces,
 (?!not?\b)(\w+?)  #  followed by a word/letter that is not "not" or "no"
 n?\b              #  minus a single trailing "n" if there are any
$1                 # with: the word/letter
 n't               #  appended with "n't"

\bnot?\b           # Then replace any remaining loose "no" or "not"
yesn't             # with "yesn't"

T`L`-'             # And finally replace all "A" with "-" and all "B" with "'" again

Tôi nghĩ điều này không nên xảy ra
Dead Possum

@DeadPossum Vâng, tôi đã nghĩ về điều đó bản thân mình và đã hỏi OP rằng "không" có thể có trong đầu vào không.
Kevin Cruijssen

1
Điều này cũng kỳ lạ
Dead Possum

1
Tôi nghĩ rằng tôi đã giảm xuống còn 70 byte .
Neil

1
Lđây là một tốc ký A-Z, tiết kiệm hơn 2 byte T`-'`ABvà ngược lại.
Neil

4

Python 2 , 208 123 113 146 byte

lambda s:re.sub(r"\bnot?\b(?!['-])(\s(?!not?(\b)(?!['-]))([\w'-]+))?",lambda m:(m.group(3)or"yes")+"n't"[(m.group(3)or'')[-1:]=='n':],s)
import re

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

Mất một loạt các byte vì các từ kết thúc bằng n'thoặc n. Hoặc là hoặc ngắn hơn, nhưng xử lý cả hai dài hơn.





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.