簡単ですか、それとも難しいですか?


21

あなたの難しいことをするために、あなたはいくつかの単語が簡単な方法で説明されるかどうかを見つけることをするためにコンピュータのために何かを作らなければなりません。使用頻度の最も高い単語100語のみを使用する場合、何かが簡単に説明されます。そうでない場合は、難しい方法で説明されます。これは、完全なコンピューターのものでも、コンピューターのものの一部でもかまいません。(完全なプログラムまたは機能)

コンピューターには、各単語の間にスペースを入れて1万個の単語がすべて含まれているものを読む必要があります。コンピューターが読み取るものの名​​前は「most used.txt」と呼ばれます。このコンピューターの場所からこのことを取ることができます。

コンピューターを使用する人は、いくつかの単語を入力します。(これはSTDIN、関数の引数、またはコマンドラインの引数から取得できます)コンピューターは、単語が単純な場合はtrueのように、難しい場合はtrueではないようなものを言う必要があります。(真実-偽)コンピューターがすることを最短にする人が最高です。すべての人が悪いと知っていることは悪いことです。(標準の抜け穴が適用されます


コンピュータの仕組みがどのように機能するかについて知っておくべきこと:

  • 単語が大きいか小さいかは関係ありません。

  • 単語の意味をわかりやすくするための写真(句読点)は重要ではありません。そのため、コンピューターを使用する人が「しない」と言っても、「しない」という言葉と異なる言葉ではありません。数字やその他の写真も関係ありません。だから、人が「HE $$ ll9o」と言ったら、コンピュータは「hello」のように読むべきです

  • 単語(ダッシュ)間の小さな線は、スペースと同じように機能します。したがって、「up-goer-five」という単語は「up-goer five」という単語と同じです。


このような単語の作成について知っておくべきこと:

https://xkcd.com/1133/

http://splasho.com/upgoer5/#


7
それでは、コンピューターのことをユーザーの言葉からビッグワードの言葉までチェックして、小さな言葉の言葉がすべてビッグワードの言葉に含まれているかどうかを確認します。
ジオビット

24
たぶんそれは私だけかもしれませんが、これは非常に読みにくいと感じました。
アレックスA.

8
simple-talkで概要を説明し、その後に「実際の」英語で実際の仕様を説明する方が良いかもしれません。
ジオビット

2
辞書をファイルから読み取る必要がありますか?それはいくつかの言語を完全に除外するかもしれません。
デニス

1
プログラムで難しい単語を使用するたびにペナルティを科すべきでした
ベータ崩壊

回答:


6

CJam、41バイト

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

これは、most used.txtCJamが相対パスを処理できないため、ルートディレクトリにあるというかなりクリーンな仮定を行います。

または、次の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からの両方の入力(最初の行の入力、2番目の辞書)を読み取ることです。これは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
あなたはそれを短くするドライブのURLに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のような何かを返すコンピューターシングの名前のない部分を作成します。

Ungolfed +説明:

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){...}がボーナスポイントに値するはずです。
デニス

@デニス:これはどうですか?:)
アレックス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正しく処理しますか?
アレックスA.

@AlexA。を返しますTrue。あれは正しいですか?
ベータ崩壊

most used.txt新しい行で分割する理由は何ですか?私はこれがどのように機能するかについて100%確信していませんが、あなたはそれをファイル内の個々の単語に分割しようとしていると思いますか?
DeadChex

@DeadChex提供されるテキストファイルは何で区切られていますか?SSLエラーがスローされるため、アクセスできません。
ベータ崩壊

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置換のダッシュ/スペース→スペース、非単語文字→なし

∧/(…  正規化および分割された テキスト入力 が 、ファイルの(コンテンツ、エンコーディング、改行スタイル)の 正規化および分割された 最初の要素のメンバーである) こと
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,"")))))

作業用のスニペットを作成するために使用できるファイルのコピーをオンラインで取得した人はいますか?


削除するthenと22バイト、削除すると7バイト節約できると思いますalert
タイタス

@Titus、詳しく説明してもらえますか?これの各ステップはプロミスを返すので、thensは解決時に後続のコードを実行する必要があります。
シャギー

私はES7にそれほど詳しくありません。間違った方向に考えていました。しかし、リストにないすべての単語への入力を減らすと、もっと短いものを思いつくことができますか?PHPが実際にJSをほぼ40%上回るとは思えません。
タイタス

そうそう、間違いなく改善の余地があります。これがその日の最後の挑戦であり、頭痛の種があったので、明日再訪するために今まで持っていたものを投稿しました。残念ながら、ファイルの内容を取得するために必要な一連の約束は、PHPのようなものに対するこれらの課題でJSを不利にしていますが、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を返します。

そして:最もよく使われる単語の前後にそれぞれスペースがあれば、2ポイント節約できます。


-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私はいくつかのJavaのユーティリティクラスを使用します。この関数をインポートする必要があるプログラム(つまりjava.io.*and java.util.*)に入れる場合は、
pythons

3
これらのインポートをバイトカウントに含める必要があります。あなたはJavaでそれらを除外することはできませんので、あなたは、Pythonでimport文を除外することはできません
ベータ崩壊

@BetaDecayプログラムを微調整し、これ以上のインポートは必要ありません
DeadChex
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.