是简单还是困难?


21

为了您的困难,您必须让计算机做一件事情,以找出是否以简单的方式解释了一些单词。如果仅使用一千个最常用的单词,就会以一种简单的方式进行解释。如果不是这样,将很难进行解释。这可以是完整的计算机内容,也可以是计算机内容的一部分。(完整的程序或功能)

对于计算机而言,有一个东西可以读取,其中包含所有的一千个单词,每个单词之间都有一个空格。供计算机读取的事物的名称称为“ most used.txt”。您可以从此计算机处取走这东西

使用计算机事物的人将输入一些单词。(这可以来自STDIN,函数自变量或命令行自变量)如果单词很简单,则计算机必须说出类似“真”的含义,如果很难,则必须说出不真实的含义。(诚实-虚假)为计算机做最短的事情的人是最好的。每个人都知道的坏事是坏事。(适用标准漏洞


有关计算机事物如何工作的更多信息:

  • 单词是大还是小都无所谓。

  • 使单词含义更容易理解(标点符号)的图片并不重要。因此,如果使用计算机的人说“不要”,那么它与“不要”这个词是不同的。数字和其他图片也没有关系。因此,如果该人说“ HE $$ ll9o”,则计算机应将其读为“ hello”

  • 单词(破折号)之间的细线与空格的工作方式相同。因此,“上五行”一词与“上五行”一词相同。


有关制作这样的单词的更多知识:

https://xkcd.com/1133/

http://splasho.com/upgoer5/#


7
因此,检查计算机事物用户的单词到大单词事物中,看看小单词事物中的所有单词是否都在大单词事物中?
Geobits 2015年

24
也许只有我一个人,但是我发现这很难读。
Alex A.

8
可能要先用简单的对话提要,然后再用“真实的”英语写出实际的规格。
Geobits 2015年

2
是否必须从文件中读取字典?这可能会彻底排除几种语言。
丹尼斯

1
你本来应该有对使用的每一个字一个点球,这是很难在节目
β衰变

Answers:


6

CJam,41个字节

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

most used.txt由于CJam无法处理相对路径,因此这使根目录中的假设变得非常不合理。

或者,我们有以下基于Web的解决方案(78和29字节):

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

在CJam中执行此操作的“正确”方法是从STDIN读取两个输入(第一行的输入,第二行的字典),这可以用18个字节表示:

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

您可以在CJam解释器中尝试最新版本。(永久链接已在Chrome中测试)

例子

$ 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
您可以在云端硬盘网址上使用tinyurl来使其更短
DeadChex

1
@MIWright弄清楚了。那并上传文件到Pastebin节省了12个字节。谢谢!
丹尼斯

7

R,106个字节

不确定是否因为难以阅读而理解挑战。

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

这将创建计算机对象的未命名部分,该部分接受字符串并返回诸如true或not true的内容。

取消+说明:

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

感谢丹尼斯的启发。


2
诸如此类的东西part-of-a-computer-thing(s){...}应该值得加分。
丹尼斯2015年

@丹尼斯:这好吗?:)
Alex A.

好多了!
丹尼斯

3

Python 3,148个字节

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

输出TrueFalse

例子

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

这将don't正确处理输入吗?
Alex A.

@AlexA。它返回True。那是对的吗?
Beta Decay's

有什么理由要换most used.txt行吗?我不确定它是如何工作的100%,但是我想您正在尝试将其拆分为文件中的每个单词?
DeadChex

@DeadChex提供的文本文件由什么分隔?我无法访问它,因为它不断抛出SSL错误。
Beta Decay's

1
问题指出:“有一台计算机可以读取的东西,其中包含所有的一百个单词,每个单词之间都有一个空格”
DeadChex

2

Pyth,35个字节

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

测试,上面是文件 common.pyth

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

说明:

!-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字节

假定文件在当前目录中。

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

在线尝试!

第一行定义了标准化和字符串分割帮助函数s

s←s是 以下函数
819⌶ 的小写
' '(结果,左侧参数为空格…
1↓¨ 从每个
, 参数的串联中减去一个,
⊂⍨ 在每个元素之前切下,其中
 左侧参数
= 等于 应用于 PCRE替换
, 的参数的破折号dash /空间→空间,非单词字符→无
)
'[- ]' '\W'⎕R' ' ''

∧/() 完全正确的是
s ,规范化和拆分
 文本输入
 是 文件(内容,编码,换行样式)
s 的规范化和拆分
 第一元素的成员
⎕NGET'most used.txt'


0

JavaScript(ES7),161字节

(由于存在竞争,该问题早于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,"")))))

有人在线获得了该文件的副本,可用于创建有效的代码段吗?


我猜您可以通过删除节省22个字节,通过删除节省then7个字节alert
泰特斯

你能详细说说吗,@ Titus?此操作的每个步骤都返回一个Promise,因此要求thens在解析后执行后续代码。
毛茸茸的

我对ES7不太熟悉。在错误的方向上思考。但是,如果您将输入减少到列表中以外的所有单词,那么也许可以想出更短的内容?我怀疑PHP是否真的能将JS击败40%。
泰特斯

哦,是的,那里肯定还有改进的空间。这是我今天的最后一个挑战,我当时很头疼,所以我贴出了我明天要回顾的内容。不幸的是,仅仅获得文件内容所需要的承诺链使JS在面对类似PHP之类的挑战时处于劣势,但它仍然比使用XHR更好。
毛茸茸的

0

PHP,101字节

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

接受STDIN的输入,并假设单行字典
退出,1(错误)代表错误,0(OK)代表真实。用运行-R

用非单词字符分割输入,循环遍历结果数组(单词):
如果单词在词典中,请继续;否则exit(1)
隐性的exit(0)

或者,简单地说:

一个单词接一个单词:如果单词是最常用的单词,请继续;否则返回1。返回0。

和:如果最常用的词在开头和结尾各留一个空格,我可以节省两点。


-1

Java,248个字节

用短语作为论点传递。

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);}

输入输出:

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

隔开并分页:

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);
}

您是什么意思,取决于您要导入什么
Beta Decay's

@Beta我使用了Java的一些实用程序类,如果要将此函数放在程序中,则必须导入(即java.io.*java.util.*),就像
python的

3
好吧,您必须在字节数中包括这些导入。您不允许在Python中排除导入语句,因此不能在Java中排除导入语句
Beta Decay

@BetaDecay调整了程序,无需再导入
DeadChex 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.