가장 보편적 인 단어


9

이 질문은 "Thing Explainer" 가 읽기 쉽고 재미 있기 때문에 작성되었습니다 .

문자, 숫자 및 이와 같은 것을 읽고 가져 와서 모든 단어 가이 세트의 일부인 경우 "#%|?반환 True / 1하는 "컴퓨터가하는 일"을 작성하십시오 .

모든 단어가 해당 세트의 일부가 아닌 경우 해당 단어의 일부가 아닌 단어를 리턴하십시오.


이 웹 사이트 는 모든 경우에 올바른 것으로 간주 될 수 있습니다. 해당 사이트의 사양을 따르도록 규칙이 작성되었습니다.


예 :

Truthy :

첫 번째 수평선 위의 전체 텍스트를 입력으로 붙여 넣은 경우 코드는 정확한 값을 반환해야합니다.

다음 줄은 정확한 값을 반환해야합니다 (입력은로 구분됨 ###).

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

팔시 :

다음 예에서 입력과 출력은로 구분됩니다 ***. 다른 테스트 사례는로 구분됩니다 ###.

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

더 자세한 규칙 :

  • 이것을 사용 하여 코드를 테스트 할 수 있습니다.
  • 문자 이외의 문자는와 같은 단어를 제외하고 코드에서 공백으로 해석됩니다 'wasn't'. 아포스트로피가있는 단어가 true목록에 포함됩니다.
    • 예를 들어 : foo123bar반환해야 foo하고 bar, 그들이 목록의 일부가 아니기 때문에, 그리고 123공간으로 해석 될 수
  • 입력에는 인쇄 가능한 ASCII 코드 포인트 만 포함됩니다 [10, 32-126].
  • 단어는 대소 문자를 혼합하여 사용할 수 있습니다. 두 번째 테스트 사례를 참조하십시오.
  • 단어 목록
    • 입력으로 사용되어야합니다 (STDIN, 함수 인수 또는 이와 동등한 것)
    • 수정 가능 (개행, 쉼표 등으로 단어를 구분할 수 있으며 목록을 정렬 할 수 있음)
    • 목록 은 사용할 수 없습니다 (동일하지 않음).
  • 원하는 형식으로 출력 할 수 있습니다
  • 출력은 대문자, 소문자 또는 대소 문자를 혼합 할 수 있습니다 (선택 사항).
  • 출력에 기호가 없어야한다

레코드의 경우 Jonathan Allan은 이상한 모퉁이 사례를 발견했습니다 .XKCD의 구현은 예를 들어 다음의 비 [AZ] [az] [ ']까지 아포스트로피 이후의 문자를 무시 find's found하고 find'qazxswedc found'둘 다 아무것도 반환하지 않지만 find'qazx.swedc found반환합니다. swedc.

에 대해 아무것도 반환하지 않으려는 find'qazxswedc found'경우 또는 return 을 선택할 수 있습니다 qazxswedc. 반환 qazx, swedc에 대한 것은 find'qazx.swedc도 OK입니다.



난 아니에요 긍정적 는 비록 속는 사람입니다. 단순하지 않은 단어를 반환해야하므로 도전 과제는 약간 다릅니다. 그리고 당신의 호의에 따르면, 당신은 실제로 일상 영어로 쓰여진 일반적인 사양을 가지고 있습니다. codegolf.stackexchange.com/questions/53323/…
제임스

Boolean또는 의 반환 유형을 표현할 수없는 정적으로 유형이 지정된 언어의 Array<String>경우 빈 배열 / 목록을 반환 할 수 있습니까?
CAD97

모든 단어가 간단한 경우 @ CAD97? 정확한 값을 표시하는 방법을 선택할 수 있으며 정수 / 문자열 일 수 있습니다 1. 빈 출력은 허용되지 않습니다.
Stewie Griffin

find'qazxswedc입력 규칙에 대한 새로운 설명이 혼란 스럽습니다 . 우리는 아포스트로피로 나뉘어 야합니까? 예를 들어 isn't반환 true(이 목록에의), 그러나 isn반환 isn이이 목록에없는 이후. 그 논리에서 나는 "아포스트로피에서 나누지 말아라"와 함께 find'qazxswedc found돌아 왔고 따라서를 반환한다 find'qazxswedc.
AdmBorkBork

답변:


2

PowerShell v3 +, 105 92 바이트

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

같은 간단한 단어와 같은 $a단어를 사용 $b합니다. 도우미를 만듭니다 $x. 각 단어를 가져 와서 $b문자가 아닌 문자를 제거하고 각 단어 를 확인하십시오 |{...}. 해당 단어가에 없으면에 $a추가합니다 $x. 마지막에, 우리는 선택 $x또는 1로하지 $x. words또는로 전송됩니다 1.

시도해 볼 단어

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

파이썬, 93 바이트

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

모든 테스트 사례는 아이디어가 있습니다

목록의 전처리는 분할 |하여 set(사전 정렬이 허용되는 경우 괜찮 습니다)에 넣는 것입니다 . 로 단어를 입력 w하고로 설정하십시오 s.

그것이 허용되지 않으면 이것은으로 98 바이트 not in snot in set(s)됩니다.

대문자와 소문자의 모든 순열을 유지하고 8 바이트를 절약하기 위해 전처리 할 수는 있지만 너무 멀리 갈 수 있다고 생각합니다 (거대한 세트 일 것입니다).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.