Nó đơn giản hay khó?


21

Đối với điều khó khăn của bạn để làm, bạn phải làm cho một máy tính để làm điều đó tìm ra nếu một số từ được giải thích một cách đơn giản. Một cái gì đó được giải thích một cách đơn giản nếu nó chỉ sử dụng mười trăm từ được sử dụng nhiều nhất. Nếu không, nó được giải thích một cách khó khăn. Đây có thể là một thứ máy tính đầy đủ hoặc một phần của một thứ máy tính. (chương trình đầy đủ hoặc chức năng)

Có một thứ cho một máy tính để đọc có tất cả mười trăm từ trong đó với một khoảng trắng giữa mỗi từ. Tên của thứ để máy tính đọc được gọi là 'most used.txt'. Bạn có thể lấy thứ này từ nơi máy tính này .

Người sử dụng máy tính sẽ nhập một số từ. (Điều này có thể từ STDIN, đối số chức năng hoặc đối số dòng lệnh) Máy tính phải nói điều gì đó giống như sự thật nếu các từ đơn giản và một cái gì đó không đúng nếu khó. ( thật-giả ) Người làm ra thứ ngắn nhất để máy tính làm là tốt nhất. Những điều mà mọi người đều biết là xấu. ( áp dụng sơ hở tiêu chuẩn )


Nhiều thứ hơn để biết về cách thức hoạt động của máy tính:

  • Nó không quan trọng nếu các từ là LỚN hoặc ít.

  • Những hình ảnh làm cho từ có nghĩa dễ biết hơn (dấu câu) không quan trọng. Vì vậy, nếu người sử dụng máy tính nói "không" thì đó không phải là một từ khác với từ "không". Số và hình ảnh khác cũng không quan trọng. Vì vậy, nếu người đó nói "HE $$ ll9o" thì máy tính nên đọc nó như "xin chào"

  • Các dòng nhỏ giữa các từ (dấu gạch ngang) hoạt động giống như dấu cách. Vì vậy, từ "up-goer-five" cũng giống như từ "up goer five".


Nhiều thứ hơn để biết về cách tạo từ như thế này:

https://xkcd.com/1133/

http://Stationo.com/upgoer5/#


7
Vì vậy, hãy kiểm tra các từ của máy tính đối với từ lớn để xem liệu tất cả các từ trong từ nhỏ có trong từ lớn không?
Geobits

24
Có lẽ đó chỉ là tôi, nhưng tôi thấy điều này đặc biệt khó đọc.
Alex A.

8
Có thể tốt hơn để đưa ra một bản tóm tắt bằng cách nói chuyện đơn giản, theo sau là một thông số thực tế bằng tiếng Anh "thực".
Geobits

2
Có phải từ điển phải được đọc từ một tập tin? Điều đó có thể hoàn toàn loại trừ một vài ngôn ngữ.
Dennis

1
Bạn nên có một hình phạt cho mỗi từ được sử dụng trong chương trình
Beta Decay

Câu trả lời:


6

CJam, 41 byte

q"file:///most used.txt"g]{el_euS--S%}/-!

Điều này làm cho giả định khá ô uế most used.txtnằm trong thư mục gốc, vì CJam không thể xử lý các đường dẫn tương đối.

Ngoài ra, chúng tôi có các giải pháp dựa trên web sau (78 và 29 byte):

q"https://docs.google.com/uc?id=0B2sM8IORrbL3RVpJWTZNUy1rOFU"g]{el_euS--S%}/-!
q"j.mp/-o_O"g]{el_euS--S%}/-!

Cách "thích hợp" để làm điều này trong CJam sẽ là đọc cả hai đầu vào từ STDIN (đầu vào trên dòng đầu tiên, từ điển trên thứ hai), có thể có 18 byte:

qN%{el_euS--S%}/-!

Bạn có thể thử phiên bản cuối cùng trong trình thông dịch CJam . (permalink đã thử nghiệm trong Chrome)

Ví dụ

$ cjam <(echo 'q"file:///most used.txt"g]{el_euS--S%}/-!') <<< 'ten hundred'; echo
1
$ cjam <(echo 'q"file:///most used.txt"g]{el_euS--S%}/-!') <<< 'thousand'; echo
0

2
Bạn có thể sử dụng tinyurl trên url Drive để rút ngắn hơn
DeadChex

1
@MIWright Tìm ra nó. Điều đó và tải tệp lên Pastebin đã lưu 12 byte. Cảm ơn!
Dennis

7

R, 106 byte

Không chắc chắn nếu hiểu được thách thức bởi vì có thời gian khó đọc.

function(s){u=toupper;all(strsplit(gsub("[^A-Z -']","",u(s)),"[ -]")[[1]]%in%u(scan("most used.txt","")))}

Điều này tạo ra một phần không tên của một thứ máy tính chấp nhận một chuỗi và trả về một cái gì đó giống như thật hoặc giống như không đúng.

Ungolfed + giải thích:

partOfAComputerThing <- function(s) {
    # Remove everything but letters, spaces, dashes, and single quotes
    s <- gsub("[^A-Z -']", "", toupper(s))

    # Split s into a vector on spaces/dashes
    v <- strsplit(s, "[ -]")[[1]]

    # Read the file of words (assumed to reside in the current directory)
    m <- scan("most used.txt", "")

    # Determine if all words in the input are in the file
    all(v %in% toupper(m))
}

Cảm ơn Dennis cho điều truyền cảm hứng.


2
Một cái gì đó như part-of-a-computer-thing(s){...}nên có giá trị điểm thưởng.
Dennis

@Dennis: Thế nào? :)
Alex A.

Nhiều hơn!
Dennis

3

Python 3, 148 byte

import re
print(all(i in open("most used.txt").read().lower().split(' ')for i in re.sub("[^a-z ']+","",input().replace("-"," ").lower()).split(" ")))

Đầu ra TrueFalse

Ví dụ

Input:  Don't
Output: True

Input:  The poison air he's breathing has a dirty smell of dying
Output: False

Input:  Who let the dogs out?
Output: False

Điều này sẽ xử lý một đầu vào don'tchính xác?
Alex A.

@AlexA. Nó trở lại True. Đúng không?
Beta Decay

Bất kỳ lý do bạn chia most used.txttheo dòng mới? Tôi không chắc chắn 100% về cách thức hoạt động của nó, nhưng tôi tưởng tượng bạn đang cố tách nó thành từng từ riêng lẻ trong tệp?
DeadChex 19/07/2015

@DeadChex Tệp văn bản được cung cấp cách nhau là gì? Tôi không thể truy cập nó vì nó liên tục xuất hiện lỗi SSL.
Beta Decay

1
Câu hỏi nêu rõ "Có một thứ để máy tính đọc có tất cả mười trăm từ trong đó có khoảng
trắng

2

Bình thường, 35 byte

!-Fm@LGcrXd\-bZ),zs'"most used.txt

Các xét nghiệm, trong đó ở trên là tập tin common.pyth

$ pyth common.pyth <<< 'I can write this way too-hell99#0O.'
True
$ pyth common.pyth <<< 'But I get confused easily.'
False

Giải trình:

!-Fm@LGcrXd\-bZ),zs'"most used.txt
   m            ,zs'"most used.txt    Map over input and input file:
         Xd\-b                        Replace hyphens with newlines.
        r     Z                       Cast to lower case.
       c       )                      Split on whitespace.
    @LG                               Remove non-alphabetic characters.
 -F                                   Setwise difference - remove anything in
                                      the text file from the input.
!                                     Logical negation.

0

APL (Dyalog) , 69 byte

Giả sử rằng tập tin nằm trong thư mục hiện tại.

s819' '(1↓¨,⊂⍨⊣=,)'[- ]' '\W'R' ' ''
∧/(s⍞)∊s⊃⎕NGET'most used.txt'

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

Dòng đầu tiên xác định hàm trợ giúp chuẩn hóa và chia thành danh sách chuỗi, s :

s←s
819⌶ các lowercased
' '( kết quả của hàm sau, với một không gian như là đối số bên trái ...
1↓¨ thả một từ mỗi
, nối của các đối số
⊂⍨ cắt trước mỗi phần tử nơi
 các lập luận trái
= bằng
, nối của các đối số
) áp dụng cho
'[- ]' '\W'⎕R' ' '' các thay thế PCRE dash / không gian → không gian, không từ-char → không có gì

∧/(... ) là nó hoàn toàn đúng là
s sự chuẩn hóa và chia rẽ
 nhập văn bản
 là thành viên của
s các bình thường và chia
 phần tử đầu tiên của
⎕NGET'most used.txt' sự (nội dung, mã hóa, xuống dòng kiểu) của tập tin


0

JavaScript (ES7), 161 byte

(Không cạnh tranh như câu hỏi đặt trước thông số ES7)

s=>fetch("most used.txt").then(t=>t.text()).then(d=>alert(s.split(/[ -]/g).every(l=>d.split` `.map(w=>w.replace(/[\.']/,"")).includes(l.replace(/[^a-z]/g,"")))))

Bất cứ ai cũng có một bản sao của tệp trực tuyến mà tôi có thể sử dụng để tạo Snippet hoạt động?


Tôi đoán rằng bạn có thể lưu 22 byte bằng cách xóa thenvà 7 byte bằng cách xóa alert.
Tít

Bạn có thể giải thích, @Titus? Mỗi bước của điều này trả về một lời hứa để các thens được yêu cầu thực thi mã tiếp theo khi chúng giải quyết.
Xù xì

Tôi không quen thuộc với ES7; đã suy nghĩ sai hướng. Nhưng có lẽ bạn có thể đưa ra một cái gì đó ngắn hơn nếu Bạn giảm đầu vào cho tất cả các từ không có trong danh sách? Tôi nghi ngờ rằng PHP thực sự có thể đánh bại JS gần 40%.
Tít

Ồ, vâng, chắc chắn có chỗ để cải thiện ở đó; đây là thử thách cuối cùng của tôi trong ngày và tôi bị đau não nên tôi đã đăng những gì tôi có cho đến ngày mai để xem lại. Thật không may, chuỗi các lời hứa được yêu cầu chỉ để có được nội dung của tệp khiến cho JS gặp bất lợi trong những thách thức này so với các ứng dụng như PHP nhưng vẫn tốt hơn so với việc sử dụng XHR.
Xù xì

0

PHP, 101 byte

foreach(preg_split("#[^\w']+#",$argn)as$w)preg_match("#\b$w\b#i",end(file("most used.txt")))?:die(1);

lấy đầu vào từ STDIN, giả sử
thoát từ điển dòng đơn với 1(lỗi) cho sai, 0(ok) cho sự thật. Chạy với -R.

Phân tách đầu vào bằng các ký tự không phải từ, lặp qua mảng kết quả (từ):
Nếu từ có trong từ điển, tiếp tục; khác exit(1).
tiềm ẩn exit(0).

hoặc, chỉ cần đặt:

hết từ này đến từ khác: Nếu từ đó là từ được sử dụng nhiều nhất, hãy tiếp tục; khác trả về 1. trả về 0.

và: Tôi có thể lưu hai điểm nếu các từ được sử dụng nhiều nhất có khoảng trắng ở trước và cuối.


-1

Java, 248 byte

Với cụm từ được thông qua như là một đối số.

void g(String s) throws Exception{String c=new java.util.Scanner(new java.io.File("most used.txt")).useDelimiter("\\Z").next(),x="false";for(String l:s.split(" "))if(c.contains(l.toLowerCase().replaceAll("![a-z]","")))x="true";System.out.print(x);}

đầu ra đầu vào:

g("was he")         --> "true"
g("was h!e")         --> "true"
g("delicious cake") --> "false"

Khoảng cách và tab ra:

void g(String s) throws Exception{
    String c=new java.util.Scanner(new java.io.File("most used.txt")).useDelimiter("\\Z").next()
      ,x="false";
    for(String l:s.split(" "))
      if(c.contains(l.toLowerCase().replaceAll("![a-z]","")))
          x="true";
    System.out.print(x);
}

Bạn muốn nói gì là tùy thuộc vào bạn để nhập những gì cần thiết ?
Beta Decay

@Beta tôi sử dụng một số tiện ích lớp Java đó, nếu bạn đã đặt chức năng này trong một chương trình mà bạn sẽ phải nhập khẩu (cụ thể là java.io.*java.util.*), giống như con trăn nhập khẩu tuyên bố
DeadChex

3
Vâng, bạn phải bao gồm các nhập khẩu này trong số byte của bạn. Bạn không được phép loại trừ các báo cáo nhập khẩu trong Python, vì vậy bạn không thể loại trừ chúng trong Java
Beta Decay

@BetaDecay Tinh chỉnh chương trình, không cần nhập thêm
DeadChex 19/07/2015
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.