Mười trăm từ phổ biến nhất


9

Câu hỏi này được viết bởi vì "Thing Explainer" rất thú vị để đọc và cho tôi một ý tưởng.

Viết "công cụ khiến máy tính làm mọi thứ" đọc / lấy một tập hợp các chữ cái, số và những thứ như thế này "#%|?và trả về True / 1nếu tất cả các từ là một phần của bộ này .

Nếu tất cả các từ không phải là một phần của tập hợp đó, hãy trả lại các từ không phải là một phần của tập hợp đó.


Trang web này có thể được coi là chính xác trong mọi trường hợp. Các quy tắc được viết để làm theo thông số kỹ thuật trên trang web đó.


Ví dụ:

Sự thật :

Mã sẽ trả về một giá trị trung thực nếu toàn bộ văn bản trên dòng ngang đầu tiên được dán làm đầu vào.

Các dòng sau sẽ trả về giá trị trung thực (đầu vào được phân tách bằng ###)

This returns "Hello, World!"
###
tHiS rEtUrNs TrUe...
###
Thing Explainer is a book written by a man.
The man writes books with simple words.
###
This set of stuff "#!^{>7( must return true

Falsey :

Trong các ví dụ sau, đầu vào và đầu ra được phân tách bằng ***. Các trường hợp thử nghiệm khác nhau được phân tách bằng ###.

This code doesn't return "Hello, World!"
***
code
###
tHiS rEtUrN"s false...
***
s
false

Quy tắc chi tiết hơn:

  • Bạn có thể sử dụng điều này để kiểm tra mã của bạn.
  • Các chữ cái không được hiểu là khoảng trắng bởi mã, ngoại trừ các từ như 'wasn't'. Các từ có dấu nháy đơn trả về trueđược bao gồm trong danh sách
    • Ví dụ: foo123barnên trả về foobar, vì chúng không phải là một phần của danh sách và 123có thể được hiểu là khoảng trắng
  • Đầu vào sẽ chỉ chứa các điểm mã ASCII có thể in được [10, 32-126].
  • Từ có thể chứa các chữ cái trường hợp hỗn hợp. Xem trường hợp thử nghiệm thứ hai.
  • Danh sách các từ
    • nên được lấy làm đầu vào (STDIN, đối số hàm hoặc tương đương)
    • có thể được sửa đổi (các từ có thể được phân tách bằng dòng mới, dấu phẩy, v.v. và bạn có thể sắp xếp danh sách)
    • Lưu ý rằng bạn không thể sử dụng danh sách này (nó không giống nhau)
  • Đầu ra có thể ở bất kỳ định dạng nào bạn thích
  • Đầu ra có thể là trường hợp trên, dưới hoặc hỗn hợp (tùy chọn)
  • Không có ký hiệu nào ở đầu ra

Đối với hồ sơ, Jonathan Allan đã tìm thấy một trường hợp góc kỳ lạ: việc triển khai trên XKCD sẽ thực sự bỏ qua bất kỳ chữ cái nào sau dấu nháy đơn cho đến không [AZ] [az] ['] - chẳng hạn find's found, và find'qazxswedc found'cả hai đều không trả về, trong khi find'qazx.swedc foundtrả về swedc.

Bạn có thể chọn nếu bạn muốn trả lại bất cứ thứ gì cho find'qazxswedc found'hoặc trả lại qazxswedc. Quay trở lại qazx, swedccho find'qazx.swedccũng là OK.



Tôi không tích cực đó là một bản dupe mặc dù. Thử thách của bạn hơi khác một chút, vì bạn cần trả lại những từ không đơn giản. Và, có lợi cho bạn, bạn thực sự có một thông số bình thường được viết bằng tiếng Anh hàng ngày. codegolf.stackexchange.com/questions/53323/ từ
James

Đối với một ngôn ngữ được nhập tĩnh không thể biểu thị kiểu trả về Booleanhoặc Array<String>, việc trả về một mảng / danh sách trống có được phép không?
CAD97

@ CAD97 cho trường hợp tất cả các từ đều đơn giản? Bạn có thể chọn cách bạn muốn hiển thị giá trị trung thực, nó có thể là số nguyên / chuỗi 1. Một đầu ra trống không được phép.
Stewie Griffin

Tôi bối rối trước lời giải thích mới về các quy tắc cho find'qazxswedcđầu vào. Có phải chúng ta hay chúng ta không nên chia rẽ về dấu nháy đơn? Ví dụ: isn'ttrả về true(nó có trong danh sách), nhưng isntrả về isn, vì nó không có trong danh sách. Từ logic đó, tôi đã đi với "không phân chia dấu nháy đơn" và cứ thế find'qazxswedc foundtrả về find'qazxswedc.
admBorkBork

Câu trả lời:


2

PowerShell v3 +, 105 92 byte

param($a,$b)$x=@();-split($b-replace"[^a-zA-Z']",' ')|%{if($_-notin$a){$x+=$_}};($x,1)[!$x]

Có những từ đơn giản như $a, và từ thích $b. Làm cho người trợ giúp $x. Lấy từng từ trong $bvà loại bỏ bất kỳ chữ cái xấu nào, sau đó kiểm tra từng chữ |{...}. Nếu từ đó không có trong $ađó, thì chúng tôi thêm nó vào $x. Cuối cùng, chúng tôi chọn $xhoặc 1không $x. Điều đó được gửi đi, wordshoặc 1.

Một số từ để thử

PS C:\Tools\Scripts\golfing> ('This returns "Hello, World!"','tHiS rEtUrNs TrUe...','Thing Explainer is a book written by a man.
The man writes books with simple words.','This set of stuff "¤!^¤>7\ must return true'|%{"$_";(.\ten-hundred-most-common-words.ps1 (gc .\ten-hundred-most-common-words.txt) $_)})-join"`n###`n"
This returns "Hello, World!"
###
1
###
tHiS rEtUrNs TrUe...
###
1
###
Thing Explainer is a book written by a man.
The man writes books with simple words.
###
1
###
This set of stuff "¤!^¤>7\ must return true
###
1

PS C:\Tools\Scripts\golfing> ("This code doesn't returns Hello, World!",'tHiS rEtUrN"s false...'|%{"$_`n***`n"+(.\ten-hundred-most-common-words.ps1 (gc .\ten-hundred-most-common-words.txt) $_)})-join"`n###`n"
This code doesn't returns Hello, World!
***
code
###
tHiS rEtUrN"s false...
***
s false

2

Python, 93 byte

import re
lambda w,s:[w for w in re.sub("[^'\w]|\d|_",' ',w).split()if w.lower()not in s]or 1

Tất cả các trường hợp thử nghiệm là ở ideone

Tiền xử lý của danh sách là để phân tách |và đặt nó vào một set(mà tôi tưởng tượng là tốt nếu cho phép sắp xếp trước). Nhập từ như wvà đặt là s.

Nếu điều đó không được phép thì điều này trở thành 98 byte khi not in strở thành not in set(s).

Chúng ta có thể tiền xử lý nó để có tất cả các hoán vị của các ký tự chữ hoa và chữ thường và tiết kiệm 8 byte, nhưng tôi nghĩ rằng điều đó có thể đi quá xa (đó sẽ là một tập hợp lớ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.