Sepuluh ratus kata yang paling umum

9

Pertanyaan ini ditulis karena "Penjelasan Hal" menyenangkan untuk dibaca, dan memberi saya ide.

Tulis "hal-hal yang membuat komputer melakukan hal-hal" yang membaca / mengambil set huruf, angka dan hal-hal seperti ini "#%|?dan kembali True / 1jika semua kata adalah bagian dari set ini .

Jika semua kata bukan bagian dari set itu, kembalikan kata-kata yang bukan bagian dari set itu.


Situs web ini dapat dianggap benar dalam semua kasus. Aturan ditulis untuk mengikuti spesifikasi di situs itu.


Contoh:

Benar :

Kode harus mengembalikan nilai kebenaran jika seluruh teks di atas garis horizontal pertama disisipkan sebagai input.

Baris berikut harus mengembalikan nilai kebenaran (input dipisahkan oleh ###)

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

Falsey :

Dalam contoh berikut, input dan output dipisahkan oleh ***. Kasus uji yang berbeda dipisahkan oleh ###.

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

Aturan lebih rinci:

  • Anda dapat menggunakan ini untuk menguji kode Anda.
  • Non-huruf ditafsirkan sebagai spasi oleh kode, kecuali untuk kata-kata seperti 'wasn't'. Kata-kata dengan apostrof yang mengembalikan truedimasukkan dalam daftar
    • Misalnya: foo123barharus kembali foodan bar, karena mereka bukan bagian dari daftar, dan 123dapat diartikan sebagai spasi
  • Input hanya akan berisi poin kode ASCII yang dapat dicetak [10, 32-126].
  • Kata-kata dapat berisi huruf campuran. Lihat uji kasus kedua.
  • Daftar kata-kata
    • harus diambil sebagai input (STDIN, argumen fungsi atau yang setara)
    • dapat dimodifikasi (kata-kata dapat dipisahkan dengan baris baru, koma dll., dan Anda dapat mengurutkan daftar)
    • Perhatikan bahwa Anda tidak dapat menggunakan daftar ini (tidak identik)
  • Outputnya bisa dalam format apa pun yang Anda suka
  • Outputnya dapat berupa huruf besar, kecil atau campuran (opsional)
  • Tidak akan ada simbol dalam output

Sebagai catatan, Jonathan Allan menemukan kasus sudut yang aneh: implementasi pada XKCD akan benar-benar mengabaikan huruf setelah apostrof hingga non- [AZ] [az] ['] - misalnya find's found, dan find'qazxswedc found'keduanya tidak find'qazx.swedc foundmenghasilkan apa-apa, sedangkan pengembalian swedc.

Anda dapat memilih jika Anda tidak ingin mengembalikan apa pun find'qazxswedc found', atau kembali qazxswedc. Kembali qazx, swedcuntuk find'qazx.swedcjuga OK.

Stewie Griffin
sumber
Sangat Terkait
Yakobus
Saya tidak yakin itu tipuan sekalipun. Tantangan Anda sedikit berbeda, karena Anda harus mengembalikan kata-kata yang tidak sederhana. Dan, demi Anda, Anda sebenarnya memiliki spesifikasi normal yang ditulis dalam bahasa Inggris sehari-hari. codegolf.stackexchange.com/questions/53323/…
James
Untuk bahasa yang diketik secara statis yang tidak dapat mengekspresikan jenis kembali Booleanatau Array<String>, apakah mengembalikan array / daftar kosong diizinkan?
CAD97
@ CAD97 untuk kasus di mana semua kata sederhana? Anda dapat memilih bagaimana Anda ingin menampilkan nilai kebenaran, itu bisa berupa integer / string 1. Output kosong tidak diizinkan.
Stewie Griffin
Saya bingung dengan penjelasan aturan baru untuk find'qazxswedcinput. Apakah kita atau tidak seharusnya kita berpisah pada apostrof? Misalnya, isn'tmengembalikan true(ada dalam daftar), tetapi isnkembali isn, karena itu tidak ada dalam daftar. Dari logika itu, saya pergi dengan "jangan berpisah pada apostrof" dan find'qazxswedc foundkembali find'qazxswedc.
AdmBorkBork

Jawaban:

2

PowerShell v3 +, 105 92 byte

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

Mengambil kata-kata sederhana seperti $a, dan kata-kata seperti $b. Membuat pembantu $x. Ambil setiap kata $bdan singkirkan huruf-huruf tidak buruk, lalu periksa masing-masing |{...}. Jika kata itu tidak ada $a, maka kami menambahkannya $x. Pada akhirnya, kita memilih $xatau 1tidak $x. Itu dikirim, baik wordsatau 1.

Beberapa kata untuk dicoba

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
AdmBorkBork
sumber
2

Python, 93 byte

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

Semua test case ada di ideone

Memproses ulang daftar adalah dengan membagi |dan memasukkannya ke dalam set(yang saya bayangkan baik-baik saja jika pre-sorting diperbolehkan). Masukkan kata sebagai wdan atur sebagai s.

Jika itu tidak diizinkan, ini menjadi 98 byte dengan not in smenjadi not in set(s).

Kita dapat memprosesnya untuk memiliki semua permutasi karakter huruf besar dan kecil juga dan menyimpan 8 byte, tapi saya pikir itu mungkin terlalu jauh (itu akan menjadi set besar).

Jonathan Allan
sumber