간단하거나 어렵습니까?


21

어려운 일을하기 위해서는 컴퓨터가해야 할 일을해야합니다. 가장 많이 사용되는 단어 만 사용하면 간단한 방법으로 설명됩니다. 그렇지 않은 경우 어려운 방법으로 설명됩니다. 이것은 완전한 컴퓨터 일이거나 컴퓨터 일의 일부일 수 있습니다. (전체 프로그램 또는 기능)

컴퓨터가 읽을 수있는 것은 각 단어 사이에 공백이있는 천 단어를 모두 포함합니다. 컴퓨터가 읽는 것의 이름은 'most used.txt'입니다. 이 컴퓨터 장소 에서이 것을 가져갈 수 있습니다 .

컴퓨터를 사용하는 사람이 단어를 입력합니다. (이것은 STDIN, 함수 인수 또는 명령 행 인수에서 나올 수 있습니다.) 단어가 단순하면 컴퓨터는 참과 같고 어려울 경우에는 참과 같지 않아야합니다. ( truthy-falsy는 ) 컴퓨터가 수행하는 가장 짧은 일을 만드는 사람은 최고입니다. 모든 사람이 알고있는 것은 나쁘다. ( 표준 허점 적용 )


컴퓨터가 작동하는 방식에 대해 더 알아야 할 사항 :

  • 단어가 크든 작든 상관 없습니다.

  • 단어의 의미를 이해하기 쉽게 만드는 그림 (문장)은 중요하지 않습니다. 따라서 컴퓨터를 사용하는 사람이 "dont"라고 말하면 "do n't"와 다른 단어가 아닙니다. 숫자와 다른 그림도 중요하지 않습니다. 사람이 "HE $$ ll9o"라고 말하면 컴퓨터는 "hello"와 같이 읽습니다.

  • 단어 (대시) 사이의 작은 선은 공백과 같은 방식으로 작동합니다. "up-goer-five"라는 단어는 "up-goer five"와 동일합니다.


다음과 같이 단어를 만드는 것에 대해 더 알아야 할 것들 :

https://xkcd.com/1133/

http://splasho.com/upgoer5/#


7
컴퓨터 단어 사용자의 단어를 큰 단어로 확인하여 작은 단어의 모든 단어가 큰 단어의 단어인지 확인하십시오.
Geobits

24
어쩌면 그것은 나뿐이지만,이 책을 읽기가 매우 어렵다는 것을 알았습니다.
Alex A.

8
간단한 대화로 시놉시스를 제공하고 "실제"영어로 된 실제 사양을 따르는 것이 좋습니다.
Geobits

2
파일에서 사전을 읽어야합니까? 그것은 몇 가지 언어를 완전히 배제 할 수 있습니다.
Dennis

1
프로그램에서 사용하기 어려운 모든 단어에 대해 벌점을 받았어야합니다.
Beta Decay

답변:


6

CJam, 41 바이트

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

most used.txtCJam이 상대 경로를 처리 할 수 ​​없기 때문에 루트 디렉토리에있는 다소 부정확 한 가정 이됩니다.

또는 다음과 같은 웹 기반 솔루션 (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 인터프리터 에서 마지막 버전을 사용해 볼 수 있습니다 . (크롬에서 퍼머 링크 테스트)

$ 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
드라이브 URL에서 tinyurl을 사용하여 더 짧게 만들 수 있습니다
DeadChex

1
@MIWright 알아 냈습니다. 이 파일을 Pastebin에 업로드하면 12 바이트가 절약되었습니다. 감사!
Dennis

7

R, 106 바이트

읽기 어려움이 있기 때문에 도전을 이해하고 있는지 확실하지 않습니다.

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

이것은 문자열을 받아들이고 참 또는 참이 아닌 것을 반환하는 컴퓨터 사물의 명명되지 않은 부분을 만듭니다.

언 골프 + 설명 :

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

영감을 준 Dennis에게 감사합니다.


2
part-of-a-computer-thing(s){...}보너스 포인트 와 같은 것이 좋습니다.
Dennis

@ 데니스 : 이건 어때? :)
Alex A.

훨씬 나아!
데니스

3

파이썬 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

most used.txt새로운 줄로 나눈 이유는 무엇입니까? 이것이 어떻게 작동하는지 100 % 확신 할 수는 없지만 파일의 개별 단어로 나누려고한다고 상상하십니까?
DeadChex

@DeadChex 제공된 텍스트 파일은 무엇으로 구분됩니까? SSL 오류가 계속 발생하여 액세스 할 수 없습니다.
Beta Decay

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↓¨ 각각으로부터 적하
, 인수의 연결
⊂⍨ 각 요소 전에 절단
 왼쪽 인자가
= 동일하다
, 인수의 연결
) 에 적용
'[- ]' '\W'⎕R' ' '' PCRE 교체 대시 / space → space, non-word-char → nothing

∧/(…  정규화 및 분할  텍스트 입력  이  파일의 컨텐츠, 인코딩, 개행 스타일  의 정규화되고 분할 된  첫 번째 요소의 구성원 ) 이라는 것이 모두 사실 입니까?
s


s

⎕NGET'most used.txt'


0

자바 스크립트 (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

@Titus를 정교하게 할 수 있습니까? 이것의 각 단계는 약속을 반환하므로 thens는 해결 될 때 후속 코드를 실행해야합니다.
Shaggy

나는 ES7에 익숙하지 않다. 잘못된 방향으로 생각하고있었습니다. 그러나 목록에없는 모든 단어로 입력을 줄이면 더 짧은 것을 생각해 낼 수 있습니까? PHP가 JS를 거의 40 % 나 능가 할 수 있을지는 의문입니다.
Titus

예, 개선의 여지가 분명히 있습니다. 이것은 오늘의 나의 마지막 도전이었다. 그리고 나는 두통을 가지고 있었다. 그래서 나는 내가 지금까지 가지고 있었던 것을 내일 다시 방문하기 위해 게시했다. 불행히도, 파일의 내용을 얻는 데 필요한 약속 체인은 JS를 PHP와 같은 것에 대한 이러한 도전에 불리하게 만듭니다. 그러나 XHR을 사용하는 대안보다 여전히 낫습니다.
Shaggy

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(false), 오작동 0(ok)으로 가정합니다. 로 실행하십시오 -R.

비 단어 문자로 입력을 분할하고 결과 배열 (단어)을 반복합니다.
단어가 사전에 있으면 계속합니다. 다른 exit(1).
암시 적 exit(0).

또는 간단히 말하면 다음과 같습니다.

한 단어 씩 차례로 : 단어가 가장 많이 사용되는 단어에 있으면 계속하십시오. 그렇지 않으면 1을 리턴합니다. 0을 리턴하십시오.

그리고 가장 많이 사용되는 단어에 각각 앞과 끝에 공백이 있으면 두 점을 절약 할 수 있습니다.


-1

자바, 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

@Beta 나는 자바의 유틸리티 클래스를 사용하는데,이 함수를 프로그램에 넣으려면 java.io.*java.util.*
파이썬

3
이 수입을 바이트 수에 포함시켜야합니다. 파이썬에서는 import 문을 제외 할 수 없으므로 Java에서는 제외 할 수 없습니다.
Beta Decay

@BetaDecay 프로그램 수정, 더 이상 수입 필요 없음
DeadChex
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.