1000の最も一般的な単語


9

この質問は、「物事の説明者」が楽しく読めるから書いてありました。

文字、数字、およびこのようなもののセットを読み取り/受け取り、すべての単語がこのセットの一部である場合に"#%|?戻る「コンピュータに物事を実行させるもの」を記述します。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返す必要がありますfoobar、彼らはリストの一部ではないため、および123スペースとして解釈することができます
  • 入力には、印刷可能なASCIIコードポイント[10、32〜126]のみが含まれます。
  • 単語には大文字と小文字が混在する場合があります。2番目のテストケースを参照してください。
  • 言葉のリスト
    • 入力として使用する必要があります(STDIN、関数引数または同等のもの)
    • 変更可能(単語は改行、コンマなどで区切ることができ、リストをソートすることができます)
    • このリストは使用できません(同一ではありません)。
  • 出力は任意の形式にすることができます
  • 出力は大文字、小文字、または大文字と小文字の混合(オプション)にすることができます
  • 出力にシンボルがあってはならない

記録のために、ジョナサン・アランは、奇妙なコーナーケースを見つけました:XKCDの実装は、実際には次の非にアポストロフィアップ後の任意の文字を無視します[AZ] [AZ] [ '] -例えばfind's found、およびfind'qazxswedc found'リターンは何も両方のに対し、find'qazx.swedc foundリターンswedc

何も返さないfind'qazxswedc found'か、返すかを選択できますqazxswedc。戻るqazx, swedcためには、find'qazx.swedcもOKです。



私はないんだけど、正、それはしかしだまされやすい人です。単純でない単語を返す必要があるため、課題は少し異なります。そして、あなたのおかげで、あなたは実際に日常の英語で書かれた通常の仕様を持っています。codegolf.stackexchange.com/questions/53323/...
ジェームズ・

Booleanorの戻り値の型を表現できない静的型付き言語の場合Array<String>、空の配列/リストを返すことは許可されますか?
CAD 97

@ CAD97は、すべての単語が単純な場合に使用しますか?真の値を表示する方法を選択できます1。整数/文字列を指定できます。空の出力は許可されていません。
Stewie Griffin

find'qazxswedc入力のルールの新しい説明に戸惑っています。アポストロフィで分割することになっているのか、そうでないのか?たとえば、isn'tリターンtrue(それはリストにあります)が、isn戻ってisn、それがリストにありませんので、。その論理から、私は「アポストロフィで分割しない」で行ったのでfind'qazxswedc found戻りますfind'qazxswedc
AdmBorkBork 2016

回答:


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取り、悪いnot notの文字を取り除いてから、それぞれをチェックします|{...}。その単語がにない場合は$a、に追加し$xます。最後に、選択する$x1しないかを選択します$xwordsまたはのいずれかで送信されます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

Python、93バイト

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

すべてのテストケースはideoneにあります

リストの前処理は、分割し|てaに配置することですset(事前ソートが許可されている場合は問題ないと思います)。として単語を入力wし、としてセットを入力しますs

それが許可されない場合、これはになると98バイトにnot in sなりnot in set(s)ます。

それを前処理して大文字と小文字のすべての順列を持たせ、8バイトを節約することもできますが、それは行き過ぎかもしれません(それは巨大なセットになるでしょう)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.