ค้นหาคำที่มีสระทุกตัว


28

โปรแกรมของคุณจะต้องค้นหาคำทั้งหมดในwordlist นี้ที่มีสระทั้งหมด ( a e i o u y) มีวิธีง่าย ๆ ในการทำเช่นนี้ แต่ฉันกำลังมองหาคำตอบที่สั้นที่สุด ฉันจะใช้ภาษาใดก็ได้ แต่ฉันต้องการเห็น Bash

นี่คือตัวอย่าง (อาจปรับปรุงได้มาก):

cat wordlist.txt | grep "a" | grep "e" | grep "i" | grep "o" | grep "u" | grep "y"

คะแนนของคุณคือความยาวของรหัส

-5 คะแนนสำหรับการนับคำทั้งหมดที่เกิดขึ้น

คะแนนต่ำสุดชนะ


11
รายละเอียดดังกล่าว ภาพมากมาย doge มาก ว้าว.
Doorknob

2
17 คำตอบและการนับ! ฉันต้องการดูคำถามเพิ่มเติมเช่นคุณใน cg, doc บ่อยครั้งฉันจะเห็นสิ่งที่น่าสนใจที่นี่ แต่ไม่ต้องใช้เวลาหลายชั่วโมงในการสร้างทางออกที่ดี ...
Cary Swoveland

2
ใช่ แต่มันไม่สามารถเป็นภาษาที่ใช้ในการค้นหาเสียงสระได้
TheDoctor

1
@TheDoctor Shakes กำปั้น
Jason C

2
หากมีโบนัสแสดงว่าไม่ใช่รหัส - กอล์ฟ ใช้รหัสท้าแทน
Tim Seguine

คำตอบ:


7

GolfScript 20 ตัวอักษร - 5 = 15 คะแนน

n%{'aeiouy'\-!},.,+`

ขึ้นอยู่กับวิธีการแก้ปัญหาของฮาวเวิร์ดแต่ใช้การทดสอบสั้น ( \-!บันทึกหนึ่งถ่านมากกว่า&,6=) สั้นยาวท้าย ( .,+= 3 ตัวอักษร) และผลผลิตที่สั้นกว่าการจัดรูปแบบ (ไม่มีใครกล่าวว่าการส่งออกจะต้องมีการขึ้นบรรทัดใหม่แยกออกจากกันเพื่อ`ช่วยประหยัดหนึ่งถ่านมากกว่าn*)

นี่คือผลลัพธ์ที่ได้รับรายการคำตัวพิมพ์เล็กเป็นอินพุต (linebreaks แทรกเพื่อให้สามารถอ่านได้):

["abstemiously" "authoritatively" "behaviourally" "consequentially" "counterrevolutionary"
"disadvantageously" "educationally" "encouragingly" "eukaryotic" "evolutionarily"
"evolutionary" "exclusionary" "facetiously" "gregariously" "heterosexuality" "homosexuality"
"importunately" "inconsequentially" "instantaneously" "insurrectionary" "intravenously"
"manoeuvrability" "neurologically" "neurotically" "ostentatiously" "pertinaciously"
"precariously" "precautionary" "questionably" "revolutionary" "simultaneously"
"supersonically" "tenaciously" "uncomplimentary" "uncontroversially" "unconventionally"
"undemocratically" "unemotionally" "unequivocally" "uninformatively" "unintentionally"
"unquestionably" "unrecognisably" 43]

(ป.ล. เทคนิคตามที่ระบุว่าความท้าทายเพียงบอกว่ารหัสจะต้องทำงานสำหรับการป้อนข้อมูลที่เฉพาะเจาะจงนี้n%{'aeiouy'\-!},`43จะเป็นตัวละครตัวหนึ่งที่สั้นลงฉันคิดว่าการโกงที่.)


คำอธิบาย:

  • n% แยกอินพุตบนบรรทัดใหม่เป็นอาร์เรย์
  • { }, เป็นโอเปอเรเตอร์ "grep" เรียกใช้งานโค้ดระหว่างเครื่องหมายปีกกาสำหรับแต่ละองค์ประกอบของอาร์เรย์และเลือกค่าที่ส่งคืนค่าจริง
    • ภายในลูป'aeiouy'\-ใช้สตริงตัวอักษรaeiouyและลบออกจากมันทุกตัวละครที่พบในคำที่ผู้สมัคร !แล้วเหตุผลขัดแย้งสตริงส่งผลให้ผลผลิต1(จริง) ถ้าสตริงว่างเปล่าและ0(เท็จ) หากยังไม่ได้
  • .,+ ทำสำเนาของอาร์เรย์ที่กรองแล้วนับจำนวนคำที่อยู่ในนั้นและผนวกผลลัพธ์ไปยังอาร์เรย์เดิม
  • ในที่สุด`ยกเลิกการ evals อาร์เรย์โดยแปลงเป็นสตริงที่เป็นตัวแทนของเนื้อหา (หากไม่มีคำศัพท์ในอาเรย์ก็จะถูกตัดแบ่งในเอาท์พุตก็จะทำให้เกิดความยุ่งเหยิงที่อ่านไม่ออก)

ยินดีด้วย!! คำตอบที่เล็กที่สุด !!!!
TheDoctor

เป็นคำเดียวที่มีสระทั้ง 6 สระตามลำดับ แค่คิดว่าฉันจะแบ่งปันกับคุณ ฉันพบว่ามันเท่ห์
dberm22

15

GolfScript 19 ตัวละคร

n%{'aeiouy'&,6=},n*

การใช้งาน:

golfscript vowels.gs < wordlist.txt

เอาท์พุท:

abstemiously
authoritatively
behaviourally
[...]
uninformatively
unintentionally
unquestionably
unrecognisably

หากคุณต้องการแสดงผลการนับในตอนท้ายคุณสามารถใช้

n%{'aeiouy'&,6=},.n*n@,

ซึ่งมีความยาวสี่อักขระ


1
ฉันชอบมัน! อาจนานกว่า 4 ตัวอักษร แต่นั่นจะทำให้คุณได้รับโบนัส -5 pt
TheDoctor

11

Python - 46 ตัวอักษร

filter(lambda x:set(x)>=set("AEIOUY"),open(f))

เวอร์ชันที่อ่านได้: มันอ่านแล้วสวยแล้ว :-)


8

APL, 21 - 5 = 16

(,≢)w/⍨∧⌿'aeiouy'∘.∊w

wคาดว่าจะพบรายชื่อของคำเป็น ส่งคืนรายการคำที่มีสระทั้งหมดรวมถึงการนับ ทดสอบกับAPL NGN นี่คือตัวอย่าง

คำอธิบาย

         'aeiouy'∘.∊w   # generate a truth table for every vowel ∊ every word
       ∧⌿               # reduce with ∧ along the rows (vowels)
    w/⍨                 # select the words that contain all the vowels
(,≢)                    # hook: append to the list its own tally

8

ทับทิม 38

แก้ไข 34: ดีที่สุด (จาก @OI):

a.split.select{|w|'aeiouy'.count(w)>5} 

แก้ไข 1: ฉันเพิ่งสังเกตเห็นคำถามที่ขอให้ 'y' รวมอยู่ในสระดังนั้นฉันจึงแก้ไขคำถามของฉันตามนั้น @Nik ชี้ให้เห็นในความเห็นต่อคำตอบของเขา"aeiouy".charsเป็นตัวละครตัวหนึ่งที่น้อยกว่า%w[a e i o u y]แต่ฉันจะทิ้งเรื่องนี้ไว้เพื่อความหลากหลายแม้ว่าฉันจะเสี่ยงกับฝันร้ายมากกว่าโอกาสที่จะเกิดขึ้น

แก้ไข 2: ขอบคุณ @OI สำหรับการแนะนำการปรับปรุง:

s.split.select{|w|'aeiouy'.delete(w)==''}

ซึ่งช่วยประหยัด 11 ตัวละครจากสิ่งที่ฉันมีมาก่อน

แก้ไข 3 และ 3a: @OI ทำให้ล้มลงได้อีก:

s.split.select{|w|'aeiouy'.tr(w,'')==''}

แล้วก็

s.split.reject{|w|'aeiouy'.tr(w,'')[1]}

และอีกครั้ง (3b):

a.split.select{|w|'aeiouy'.count(w)>5} 

ฉันเป็นนักเขียนเพียงอย่างเดียว!

ต่อไปนี้เป็นโซลูชันที่ไม่แก้ปัญหาสองข้อเพิ่มเติม:

s.split.group_by{|w|'aeiouy'.delete(w)}['']       (43)
s.gsub(/(.+)\n/){|w|'aeiouy'.delete(w)==''?w:''} (48)

ตอนแรกฉันมี:

s.split.select{|w|(w.chars&%w[a e i o u y]).size==6}

sเป็นสตริงที่มีคำคั่นด้วยบรรทัดใหม่ อาร์เรย์ของคำจากsที่มีสระทั้งห้าจะถูกส่งกลับ สำหรับผู้อ่านที่ไม่คุ้นเคยกับ Ruby %w[a e i o u y] #=> ["a", "e", "i", "o", "u", "y"]และ&เป็นจุดตัดของอาร์เรย์

สมมติ

s = "abbreviations\nabduction\n"
s.split #=> ["abbreviations", "abduction"] 

ในช่วง{...}เริ่มต้นนั้น

w             #=> "abbreviations"
w.chars       #=> ["a", "b", "b", "r", "e", "v", "i", "a", "t", "i", "o", "n", "s"]
w.chars & %w[a e i o u y] #=> ["a", "e", "i", "o"]
(w.chars & %w[a e i o u y]).size == 6 #=> (4 == 6) => false,

ดังนั้นจึงไม่ได้เลือก "ตัวย่อ"

หากสตริงsอาจมีรายการที่ซ้ำกันคุณs.split.select...สามารถแทนที่ด้วยs.split.uniq.select...เพื่อลบรายการที่ซ้ำกัน

เพิ่งสังเกตเห็นฉันจะสามารถประหยัดถ่าน 1 โดยการแทนที่ด้วย size==6size>5


1
...size=5เป็นข้อผิดพลาด - ควร...size==5
Uri Agassi

ขอบคุณ @Uri สำหรับการชี้คำผิดในบรรทัดแรกซึ่งฉันได้แก้ไข (ไม่ใช่จุดบกพร่อง - ดูบรรทัดด้านบน 'ดังนั้น "ตัวย่อ" จึงไม่ถูกเลือก')
Cary Swoveland

@CarySwoveland คุณสามารถช่วยตัวเองได้ 11 ตัวโดยทำสิ่งนี้:s.split.select{|w|'aeiouy'.delete(w)==''}
OI

เยี่ยมมาก @OI ฉันแก้ไขเสร็จแล้วและพบสถานที่ที่อยู่ในเซลล์สีเทา
Cary Swoveland

@CarySwoveland นี้จะช่วยให้ตัวละครอีก s.split.select{|w|'aeiouy'.tr(w,'')==''}1: ฉันค่อนข้างแน่ใจว่าคุณจะได้รับภายใต้ 40 ตัวอักษรถ้าคุณใช้ตรรกะศูนย์และวิธีการสตริง 'ถูกต้อง' ยังคงมองหา ...
OI

6

Haskell - 67

main=interact$unlines.filter(and.flip map "aeiouy".flip elem).lines

2
นี่คือcode-golfคุณควรพยายามทำให้รหัสสั้นลงตัวอย่างเช่นโดยการลบ whitespace ...
mniip

6

Ruby - 28 ตัวอักษร (หรือ 27 หากyไม่รวมอยู่ในสระ)

("ieaouy".chars-s.chars)==[]

คำสั่งทั้งหมดที่จะเรียกใช้คือ (48 ตัวอักษร):

ruby -nle 'p $_ if ("ieaouy".chars-$_.chars)==[]'

แก้ไข: แทนที่putsด้วยpตามที่แนะนำโดย @CarySwoveland


นีซคนหนึ่ง @Nik %w[a e i o u]จะประหยัด 1 อักขระpสำหรับputsอีก 3
Cary Swoveland

Thanx, @CarySwoveland! ฉันลืมpฉันไม่ค่อยได้ใช้มัน สำหรับ% w [] หากรวม y ไว้ในชุดเสียงสระรุ่นที่มีตัวอักษรจะยังสั้นกว่า
Nik O'Lai

@ NikO'Lai "aeiouy".delete(s)==''อาจช่วยให้คุณประหยัดอักขระสักสองสามตัว
OI

ดีมาก! โพสต์เป็นโซลูชันของคุณเอง @OI ฉันจะ upvote มัน
Nik O'Lai

4

AWK - 29

/ a / && / E / && / ผม / && / o / && / u / && / Y /

เพื่อใช้งาน: wordlist.txtบันทึกรายการตัวพิมพ์เล็กคำ จากนั้นทำ:

mawk "/ a / && / e / && / i / && / o / && / u / && / y /" wordlist.txt

หากระบบของคุณไม่ได้mawk, awkสามารถนำมาใช้เช่นกัน

นอกจากนี้คุณยังสามารถเรียกใช้งานจากไฟล์โดยการบันทึกโปรแกรมไปprogram.awkและการทำหรือmawkawk -f program.awk


การเลือกลำดับที่ถูกต้องช่วยเร่งงาน: '/y/&&/u/&&/i/&&/o/&&/a/&&/e/'!!
F. Hauri


3

k [22-5 = 17 ตัวอักษร]

ฉันได้เปลี่ยนชื่อไฟล์ "corncob_lowercase.txt" เป็น "w"

นับจำนวนคำ [22 ตัวอักษร]

+/min'"aeiouy"in/:0:`w

เอาท์พุต

43

ค้นหาคำทั้งหมด [25 ตัวอักษร]

x@&min'"aeiouy"in/:x:0:`w

43 คำโดยรวมที่มีสระทั้งหมด (a e i o u y)

เอาท์พุต

"abstemiously"
"authoritatively"
"behaviourally"
..
..
"unintentionally"
"unquestionably"
"unrecognisably"

3

Javascript / JScript 147 (152-5), 158 (163-5) หรือ 184 (189-5) ไบต์:

นี่คือ Javascript และ JScript ของฉันเวอร์ชั่นน่ากลัว "ungolfyfied" (164 152 152-5 = 147 ไบต์):

function(s,k,z,x,i,c,r){c='aeiouy'.split('');r=[];for(k in s=(s+'').split(/\b/)){i=0;for(z in c)i+=s[k].indexOf(c[z])>=0;i==6&&(r[r.length]=s[k]);}return r;}

function(s,k,z,x,i,c,r){c='aeiouy'.split('');r=[];for(k in s=(s+'').split(/\b/)){i=6;for(z in c)i-=!!s[k].search(c[z]);i&&(r[r.length]=s[k]);}return r;}

ขอบคุณ @GaurangTandon สำหรับsearch()ฟังก์ชั่นซึ่งช่วยฉันไบต์!

RegExp ที่ขึ้นกับประสิทธิภาพHORRIBLEแต่รองรับได้ทั้งบนและล่าง (163-5 = 158 bytes):

function(s,k,z,x,i,c,r){c='aeiouy'.split('');r=[];for(k in s=(s+'').split(/\b/)){i=0;for(z in c)i+=RegExp(c[z],'i').test(s[k]);i==6&&(r[r.length]=s[k]);}return r;}

RegExp ที่ขึ้นกับประสิทธิภาพที่ดีกว่าBUT นั้นใช้เวลามากขึ้นในการไบต์ (189-5 = 184 ไบต์):

function(s,k,z,x,i,c,r,l){l=[];r=[];for(z in c='aeiouy'.split(''))l[z]=RegExp(c[z],'i');for(k in s=(s+'').split(/\b/)){i=0;for(z in c)i+=l[z].test(s[k]);i==6&&(r[r.length]=s[k]);}return r;}


อันนี้ถ้าเพียงเพื่อความสนุกสนาน (175-5 ไบต์) และจะไม่นับเป็นคำตอบ:

function(s,k,z,x,i,c,r){c='aeiouy'.split('');r=[];for(k in s=(s+'').split(/\b/)){i=0;for(z in c)i+=s[k].indexOf(c[z])>=0;i==6&&(r[r[r.length]=s[k]]=1+(r[s[k]]||0));}return r;}

มันขึ้นอยู่กับคำตอบที่ 1 แต่มี 'บิด': คุณสามารถรู้จำนวนคำที่พบ

คุณทำเช่นนี้:

var b=(function(s,k,z,x,i,c,r){c='aeiouy'.split('');r=[];for(k in s=(s+'').split(/\b/)){i=0;for(z in c)i+=s[k].indexOf(c[z])>=0;i==6&&(r[r[r.length]=s[k]]=1+(r[s[k]]||0));}return r;})('youaie youaie youaie youaie a word');

b.youaie //should be 4

เนื่องจากมันlengthไม่มีเสียงสระทั้งหมดมันจะไม่ถูกลบและยังคงเป็นคำตอบสำหรับโบนัส


คุณจะเรียกมันว่าอย่างไร?

"Simple": คุณห่อฟังก์ชั่นข้างใน()แล้วเพิ่ม('string goes here');ไปยังจุดสิ้นสุด

อย่างนี้: (function(s,k,z,x,i,c,r){c='aeiouy'.split('');r=[];for(k in s=(s+'').split(/\b/)){i=0;for(z in c)i+=s[k].indexOf(c[z])>=0;i==6&&(r[r.length]=s[k]);}return r;})('a sentence youyoy iyiuyoui yoiuae oiue oiuea');

ตัวอย่างนี้จะส่งคืนอาร์เรย์ที่มี 1 สตริงเท่านั้น: yoiuae

ฉันรู้ว่านี่เป็นทางออกที่เลวร้ายที่สุด แต่ได้ผล!


ทำไมฉันถึงนับ -5?

ดีอาร์เรย์ Javascript / JScript มีคุณสมบัติ ( length) ในอาร์เรย์ที่บอกจำนวนองค์ประกอบที่มี

หลังจากได้รับการยืนยันในคำถามโบนัส -5 สำหรับการบอกจำนวนคำ

เนื่องจากจำนวนคำอยู่ในคุณสมบัตินั้นฉันจึงมีคะแนน -5 โดยอัตโนมัติ


อาจสนใจsearch()แทนการindexOf()บันทึก 1 อักขระ
Gaurang Tandon

นอกจากนี้เท่าที่ผมสามารถมองเห็นในรุ่นที่สั้นที่สุดของคุณคุณไม่จำเป็นต้องเกี่ยวกับ.split() "aeiouy"JS วนซ้ำอาร์เรย์และสตริงในวิธีเดียวกัน (การลบจะช่วยให้คุณประหยัดได้ 10 ตัวอักษร)
Gaurang Tandon

2

ทับทิม39 38

ปัจจุบันรายการ Ruby ที่สั้นที่สุดเมื่อนับทั้งโปรแกรมรวมถึงอินพุตและเอาต์พุต

บันทึกถ่านโดยใช้mapแทนeach:

$<.map{|w|w*5=~/a.*e.*i.*o.*u/m&&p(w)}

อีกรุ่นหนึ่ง 39 ตัวอักษรพร้อมเอาต์พุตที่สวยกว่า:

puts$<.select{|w|w*5=~/a.*e.*i.*o.*u/m}

ทั้งสองโปรแกรมรับอินพุตจาก stdin หรือเป็นชื่อไฟล์ที่ส่งเป็นอาร์กิวเมนต์บรรทัดคำสั่ง:
$ ruby wovels.rb wordlist.txt

มีค่าใช้จ่ายเพิ่ม 3 ตัวอักษรเพื่อyรวมเป็น wovel


ยังไงก็ตามที่Enumerable#grepจะย่อให้สั้นลง? เช่นs.split.grep /a*e*i*o*u*y/สมมติว่าsเป็นสตริงของคำคั่นด้วยการขึ้นบรรทัดใหม่
OI

@OI ความคิดที่น่าสนใจ แต่มันต้องเล่นซอเพราะ regex มี wovels ตามลำดับที่ตายตัว นั่นเป็นเหตุผลที่ฉันทำซ้ำสตริง 5 ครั้งก่อนที่จะจับคู่กับ.*ระหว่าง wovels
daniero

คุณช่วยอธิบายได้ไหม s = "aeiouy\neiouay\nyuaioe\n"สมมติ จากนั้นs.split.grep /a*e*i*o*u*y/ส่งกลับ["aeiouy", "eiouay", "yuaioe"]สำหรับฉัน การทดสอบในpryRuby 2.0.0 ทางออกที่ดีโดยวิธีการ
OI

@OI โอ้ว้าว, ผมสันนิษฐานว่าgrepใช้=~ประกอบการ ===แต่เห็นได้ชัดว่ามันใช้ ความสงสัยของฉันคือมันจะจับคู่สตริงที่ไม่มี wovels ทั้งหมดด้วยเช่น/e*a*i*o*u*y/=~"eioy"กัน ฉันไม่เข้าใจจริงๆว่า===ระหว่าง regex กับโอเปอเรเตอร์ทำอะไร ค้นหาที่ดี; ฉันขอแนะนำให้คุณโพสต์มันเป็นคำตอบด้วยตัวคุณเอง แก้ไขผมเป็นขวา: "heya"ลองด้วยเช่น
daniero

ฉันคิดว่าคุณพูดถูกว่า regex ต้องการ tweaking ฉันกำลังค้นหากรณีขอบที่ไม่มีสระทั้งหมดที่รั่วผ่าน อาจจะดีเกินไปที่จะเป็นจริง
OI

2

Mathematica (65 หรือ 314)

สองวิธีที่แตกต่างกันมากวิธีที่ดีกว่าคือการเสนอโดยเบลิซาเรียสในความคิดเห็นต่อการตอบสนองเริ่มต้นของฉัน ก่อนอื่นความพยายามที่โหดเหี้ยมของฉันซึ่งสร้างอัลกอริธึมทุกการแสดงออกที่เป็นไปได้ที่ตรงกับการรวมกันของเสียงสระหกชุด (รวมถึง "y") จากนั้นตรวจสอบทุกคำในรายการคำเป้าหมายจากทุกการแสดงออกปกติ 720 รายการ มันใช้งานได้ แต่ก็ไม่รัดกุมและช้า

b = Permutations[{"a", "e", "i", "o", "u","y"}]; Table[
 Select[StringSplit[
  URLFetch["http://www.mieliestronk.com/corncob_lowercase.txt"]], 
  StringMatchQ[#, (___ ~~ b[[i]][[1]] ~~ ___ ~~ 
      b[[i]][[2]] ~~ ___ ~~ b[[i]][[3]] ~~ ___ ~~ 
      b[[i]][[4]] ~~ ___ ~~ b[[i]][[5]]~~ ___ ~~ b[[i]][[6]] ~~ ___)] &], {i, 1, 
  Length[b]}]

~ 320 ตัวอักษร สามารถบันทึกได้เพียงไม่กี่ตัวโดยใช้สัญลักษณ์ทางเลือกและอักขระเพิ่มเติมจะหายไปจากการเตรียมไฟล์พจนานุกรมเป็นรายการของสตริง (รูปแบบธรรมชาติสำหรับพจนานุกรมใน Mathematica ภาษาอื่นอาจไม่ต้องการการเตรียมการนี้ แต่ Mathematica จะทำ) ถ้าเราไม่ทำตามขั้นตอนนั้นให้สันนิษฐานว่าจัดการกับเราได้วิธีการเดียวกันสามารถทำได้ไม่เกิน 250 ตัวอักษรและหากเราใช้พจนานุกรมในตัวของ Mathematica เราจะประหยัดได้มากขึ้น

Map[DictionaryLookup[(___ ~~ #[[1]] ~~ ___ ~~ #[[2]] ~~ ___ ~~ #[[3]] 
~~ ___ ~~ #[[4]] ~~ ___ ~~ #[[5]]~~ ___ ~~ #[[6]] ~~ ___) .., IgnoreCase -> True] &, 
 Permutations[{"a", "e", "i", "o", "u","y"}]]

น้อยกว่า 200 ตัวอักษร การนับจำนวนคำที่พบต้องใช้เพียงผ่านผลให้ซึ่งสามารถเพิ่มรอบบล็อกของรหัสดังกล่าวข้างต้นอย่างใดอย่างหนึ่งหรือสามารถทำได้หลังจากนั้นยกตัวอย่างเช่นLength[Flatten[]] Length@Flatten@%รายการคำที่ระบุสำหรับความท้าทายนี้ให้การแข่งขัน 43 รายการและพจนานุกรม Mathematica ให้ 64 (และเร็วกว่ามาก) พจนานุกรมแต่ละคำมีคำที่ไม่ตรงกัน Mathematica ค้นหา "unprofessionally" ซึ่งไม่ได้อยู่ในรายการที่แบ่งปันและรายการที่ใช้ร่วมกันจะพบ "eukaryotic" ซึ่งไม่ได้อยู่ในพจนานุกรมของ Mathematica

เบลิซาเรียสได้เสนอทางออกที่ดีกว่าอย่างมากมาย สมมติว่า wordlist ได้ถูกเตรียมและกำหนดให้กับตัวแปรlแล้วเขาจะกำหนดการทดสอบเดี่ยวตามStringFreeQ[]ฟังก์ชั่นของ Mathematica จากนั้นใช้การทดสอบนี้กับรายการคำโดยใช้Pick[]ฟังก์ชัน 65 ตัวอักษรและเร็วกว่าวิธีของฉันประมาณ 400 เท่า

f@u_ := And @@ (! StringFreeQ[u, #] & /@ Characters@"aeiouy"); Pick[l,f /@ l]

ใน 65 ตัวอักษร: รายการคำf@u_:=And@@(!StringFreeQ[u,#]&/@Characters@"aeiouy");Pick[l,f/@l]อยู่ที่ไหนl
ดร. เบลิซาเรียส

นั่นเป็นเพราะคุณลืมที่จะพิจารณาyเสียงสระ (ตามความต้องการของ OP!)
ดร. เบลิซาเรียส

@ belisarius ใช่ฉันสังเกตเห็นว่าหลังจากที่แสดงความคิดเห็นของฉัน ฉันกำลังตรวจสอบผลลัพธ์ของฉันด้วยการแก้ไขนั้น
Michael Stern

@belisarius ได้รับการยืนยัน - ทางออกของคุณกระชับกว่าและรวดเร็วกว่าของฉันมาก ทำไมคุณไม่โพสต์มันเป็นวิธีการแก้ปัญหาของตัวเอง? ฉันจะโหวตมัน
ไมเคิลสเติร์น

ขอบคุณ! ถ้าคุณชอบแก้ไขคำตอบของคุณรวมถึงมัน สำหรับฉันมันคือทั้งหมดที่เกี่ยวกับการหาคำตอบสั้น ๆ กับภาษาไม่สะสมตัวแทน :)
ดร. เบลิซาเรียส

2

Perl 6 - 35 ตัวอักษร

แรงบันดาลใจจากโซลูชัน Ruby ของ @CarySwoveland:

say grep <a e i o u y>⊆*.comb,lines

ตัวเลือกนี้ (grep s) แต่ละบรรทัดที่ผลตอบแทนTrueสำหรับ<a e i o u y> ⊆ *.combซึ่งเป็นเพียงวิธีแฟนซีของถามว่า "เป็นชุด('a','e','i','o','u','y')ชุดย่อย ( ) ของชุดที่สร้างขึ้นจากตัวอักษรของการป้อนข้อมูล ( *.comb)?"

จริงๆแล้วทั้งคู่ <a e i o u y>และ*.combเพียง แต่สร้างListS: (หรือ(<=)หากคุณติดอยู่ใน ASCII) เปลี่ยนไปเป็นSetสำหรับคุณ

ในการรับจำนวนบรรทัดที่พิมพ์อักขระ 42 ตัวนี้- 5 = 37 จุดสคริปต์จะแสดงผลลัพธ์เช่นกัน:

say +lines.grep(<a e i o u y>⊆*.comb)».say

2

C - 96 ไบต์

 char*gets(),*i,j[42];main(p){while(p=0,i=gets(j)){while(*i)p|=1<<*i++-96;~p&35684898||puts(j);}}

ฉันบันทึกวงเล็บไว้หลายไบต์ด้วยความบังเอิญที่โชคดีของผู้ควบคุมเครื่อง


2

Javascript - คะแนน = 124 - 5 = 119 !!!

แก้ไข: 17/02/14

function(l){z=[],l=l.split("\n"),t=0;while(r=l[t++]){o=0;for(i in k="aeiouy")o+=!~r.search(k[i]);if(o==0)z.push(r)}return z}

ขอขอบคุณ @Ismael Miguel ที่ช่วยฉันตัดออก~ 12 chars !

ฉันลบรูปแบบฟังก์ชั่นเครื่องหมายลูกศรไขมันเพราะแม้ว่าฉันได้เห็นมันเริ่มใช้แล้ว แต่มันไม่ทำงาน ไม่รู้เลยว่าทำไม ...


เพื่อให้มันทำงาน:

ส่งคำทั้งหมดที่คั่นด้วยบรรทัดใหม่เป็นอาร์กิวเมนต์ไปยังฟังก์ชันตามที่แสดงด้านล่าง


ทดสอบ:

// string is "facetiously\nabstemiously\nhello\nauthoritatively\nbye"

var answer = (function(l){z=[],l=l.split("\n"),t=0;while(r=l[t++]){o=0;for(i in k="aeiouy")o+=!~r.search(k[i]);if(o==0)z.push(r)}return z})("facetiously\nabstemiously\nhello\nauthoritatively\nbye")

console.log(answer);
console.log(answer.length);

/* output ->    
    ["facetiously", "abstemiously", "authoritatively"]
    3 // count
*/


ข้อผิดพลาดทางไวยากรณ์ที่บรรทัด 1: นิพจน์ที่คาดหวังได้รับ '>' c = (s, j) => {k = "aeiouy" .split ("
Ismael Miguel

1
คุณสามารถลดได้ถ้าโดยการย้ายk="aeiouy".split("")ไปอยู่ภายในfor(i in k)ลูป การใช้;แทนบรรทัดใหม่จะบันทึกบางไบต์ใน Windows ถึงกระนั้นฉันก็ยังไม่เห็นว่ามันจะจัดการกับรายการของคำได้อย่างไร และวิธีทำให้มันใช้งานได้
Ismael Miguel

@ IsmaelMiguel ฉันรู้ว่า (สัญลักษณ์ลูกศรไขมัน) ไม่ทำงาน แต่เนื่องจากฉันเห็นว่ามันถูกใช้ที่นี่ดังนั้นฉันจึงใช้มันเพราะมันช่วยประหยัดตัวอักษร แต่ฉันลบมันออก และฉันไม่เข้าใจเคล็ดลับของคุณขอบคุณสำหรับการตรวจสอบรหัส รวมเอาคำแนะนำไบต์ของคุณ และโปรแกรมใหม่ของฉันควรจะเคลียร์ข้อสงสัยของคุณทั้งสอง ขอบคุณที่อ่าน. :)
Gaurang Tandon

แทนที่จะพยายามk="aeiouy";o=0;for(i in k) o=0;for(i in k='aeiouy')และการใช้ไบต์ที่บันทึกคุณสามารถใช้เพื่อเปลี่ยนo+=RegExp(k[i]).test(s)เป็นo+=RegExp(k[i],'i').test(s)เพิ่มไบต์อีกหนึ่ง แต่ทำงานกับทั้งบนและล่าง
Ismael Miguel

อัปเดตด้วยอัลกอริทึมที่ดีกว่า แม้ว่าตอนนี้ผมเข้าใจความคิดของคุณ แต่ผมไม่เข้าใจว่าทำไมมันทำงานที่นี่และไม่ได้ที่นี่ กรุณาช่วย! ขอบคุณ :)
Gaurang Tandon

2

Bash + coreutils, 39

eval cat`printf "|grep %s" a e i o u y`

รับอินพุตจาก stdin


ดูเหมือนว่าจะมีสิทธิ์ได้รับโบนัส 5 คะแนน
Glenn Randers-Pehrson

@ GlennRanders-Pehrson โบนัสนั้นไม่สมเหตุสมผลกับฉันเลย ;-)
Digital Trauma

ไม่ว่าจะเหมาะสมหรือไม่คุณปล่อย 86 บรรทัดอย่างถูกต้องเมื่อประมวลผลไฟล์ที่มี wordlist สองชุด โซลูชั่นที่เรียงลำดับและรายงานเพียง 43 จะไม่ได้รับโบนัสดังที่ฉันเข้าใจ
Glenn Randers-Pehrson

2

sed 29 ตัวอักษร

/y/{/u/{/o/{/i/{/a/{/e/p}}}}}

สั่งซื้อเลือกจากความถี่จดหมายในวิกิพีเดียเพื่อตรวจสอบความเร็ว

ในโฮสต์ของฉัน:

time sed -ne '/a/{/e/{/i/{/o/{/u/{/y/p}}}}}' </usr/share/dict/american-english >/dev/null 
real    0m0.046s

และ

time sed -ne '/y/{/u/{/i/{/o/{/a/{/e/p}}}}}'</usr/share/dict/american-english >/dev/null 
real    0m0.030s

1
ดี (+1) แต่ฉันคิดว่าคุณต้องรวม "sed -n" ในสคริปต์เป็นจำนวน 36 ไบต์
Glenn Randers-Pehrson

2

Bash (grep) - 36 ไบต์

g=grep;$g y|$g u|$g o|$g i|$g a|$g e

สังเกตคำสั่งของสระที่ผ่านการทดสอบอย่างน้อยบ่อยครั้งแรก สำหรับกรณีทดสอบสิ่งนี้จะทำงานเร็วกว่าการทดสอบประมาณ 3 เท่าในลำดับ aeiou y ด้วยวิธีนี้การทดสอบครั้งแรกจะเป็นการลบคำที่มีขนาดใหญ่กว่าดังนั้นการทดสอบที่ตามมาจะมีงานทำน้อยกว่า เห็นได้ชัดว่าสิ่งนี้ไม่มีผลต่อความยาวของรหัส โซลูชันอื่น ๆ ที่โพสต์ที่นี่จะได้รับประโยชน์เช่นเดียวกันจากการทดสอบตามลำดับนี้


ทำไมเราไม่พบเราไม่นับ นอกจากนี้เราจะนับรหัสการป้อนเข้าเป็นการนับตัวอักษรหรือไม่
orion

ฉันไม่เข้าใจโบนัสจริง ๆ "-5 คะแนนสำหรับการนับคำทั้งหมดที่เกิดขึ้น" ถ้ามันหมายถึง "การรายงานสิ่งที่เกิดขึ้นทั้งหมด" นั่นคือสิ่งที่สคริปต์ของฉันทำโดยไม่มี "| wc" ฉันไม่ได้ใช้ "รหัสอินพุต" เพราะ grep อ่านอินพุตมาตรฐานดังนั้น "grep" จึงเป็น "รหัสอินพุต" และฉันนับมัน ฉันจะลบ "| wc" ทันที
Glenn Randers-Pehrson

ฉันขอปฏิเสธโบนัส
Glenn Randers-Pehrson

1

D - 196

import std.regex,std.stream;void main(string[]a){auto f=new File(a[1]);while(!f.eof)if(!(a[0]=f.readLine.idup).match("(?=.*a)(?=.*e)(?=.*i)(?=.*o)(?=.*u)(?=.*y).*").empty)std.stdio.writeln(a[0]);}

เลิกเล่น :

import std.regex, std.stream;

void main( string[] a )
{
    auto f = new File( a[1] );

    while( !f.eof )
        if( !( a[0] = f.readLine.idup ).match( "(?=.*a)(?=.*e)(?=.*i)(?=.*o)(?=.*u)(?=.*y).*" ).empty )
            std.stdio.writeln( a[0] );
}

การใช้งาน :C:\>rdmd vowels.d wordlist.txt

wordlist.txt ต้องมีคำในรายการตัวพิมพ์เล็ก


1

Rebol (104 ตัวอักษร)

remove-each w d: read/lines %wordlist.txt[6 != length? collect[foreach n"aeiouy"[if find w n[keep n]]]]

ยกเลิกแข็งแรงเล่นกอล์ฟ:

remove-each w d: read/lines %wordlist.txt [
    6 != length? collect [foreach n "aeiouy" [if find w n [keep n]]]
]

dตอนนี้มีรายการคำที่พบ นี่คือตัวอย่างจาก Rebol console:

>> ; paste in golf line.  This (REMOVE-EACH) returns the numbers of words removed from list

>> remove-each w d: read/lines %wordlist.txt[6 != length? collect[foreach n"aeiouy"[if find w n[keep n]]]]
== 58067

>> length? d
== 43

1

Smalltalk (36/57 ตัวอักษร)

'corncob_lowercase.txt' asFilename contents select:[:w | w includesAll:'aeiouy']

เพื่อรับการนับส่ง #size ไปยังการรวบรวมที่เกิดขึ้น การรวบรวมผลลัพธ์มี 43 คำ ('abstemiously' 'authoritatively' ... 'unquestionably' 'unrecognisably')

รหัสด้านบนมี 77 ตัวอักษร แต่ฉันสามารถเปลี่ยนชื่อไฟล์คำเป็น 'w' ได้ดังนั้นฉันจึงนับชื่อไฟล์เป็น 1 ซึ่งให้คะแนน 57

การอ่านไฟล์เป็นส่วนหนึ่งของปัญหาหรือไม่? หากไม่ใช่ (ดูตัวอย่างอื่น ๆ ) และรายการคำที่มีอยู่ในกลุ่ม c แล้วรหัสจะลดลงเป็น:

c select:[:w | w includesAll:'aeiouy']

ซึ่งคือ 36 ตัวอักษร (โดยลบช่องว่างออกได้)


1

อัปเดต: ลบช่องว่างที่ไม่จำเป็นออก

ช้ามาก แต่อยู่ในทุบตี (81 ตัวอักษร):

while read l;do [ `fold -w1<<<$l|sort -u|tr -dc ieaouy|wc -m` = 6 ]&&echo $l;done

แก้ไข: echo $l|fold -w1แทนที่ด้วยfold -w1<<<$lตามที่แนะนำโดย @ nyuszika7h


นี่คือรหัสกอล์ฟคุณอาจต้องการลดขนาดรหัสของคุณอีกเล็กน้อย เริ่มต้นด้วยการลบช่องว่างที่ไม่จำเป็น ;)
nyuszika7h

นอกจากนี้คุณยังสามารถลดขนาดโค้ดโดยใช้แทนfold -w1<<<$l หมายเหตุ:รหัสปัจจุบันคือ 84 ตัวอักษรคุณไม่ควรนับการขึ้นบรรทัดใหม่ echo $l|fold -w1
nyuszika7h

จนกระทั่งวันนี้ฉันไม่รู้อะไรเกี่ยวกับ <<< ขอบคุณอีกครั้ง @ nyuszika7h คุณช่วยบอกฉันทีว่ามันอธิบายไว้ที่ไหน
Nik O'Lai


1

JavaScript - 95 ไบต์

นี่คือสนามกอล์ฟของฉัน

function f(s){return[var a=s.match(/^(?=.*a)(?=.*e)(?=.*i)(?=.*o)(?=.*u)(?=.*y).*/),a.length];}

และฉันอยากจะชี้ให้เห็นว่ากอล์ฟของคุณดูเหมือนจะไม่พบสระทั้งหมด

Ungolfed:

function countVowels(string) {
  var regex   = /^(?=.*a)(?=.*e)(?=.*i)(?=.*o)(?=.*u)(?=.*y).*/;
  var matches = string.match(regex);
  var length  = matches.length;
  return [matches, length];

1
อ่านข้อมูลจำเพาะอย่างละเอียดยิ่งขึ้น เขากำลังมองหาคำที่เหมือน --- อย่างใจจดใจจ่อ --- ประกอบด้วยเสียงสระทั้งหมดในคำเดียว แม้ว่าเขาจะไม่ได้ยืนยันว่าพวกเขามีอยู่ในระเบียบเช่นเดียวกับในแง่ร้าย
dmckee

1
regex ของคุณผิด การตรวจสอบล่วงหน้าทั้งหมดเป็นการตรวจสอบอย่างมีประสิทธิภาพว่าอักขระตัวแรกเป็นเสียงสระ คุณต้อง(?=.*a)ตรวจสอบว่าaมีอยู่ในสตริงหรือไม่
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

@dmckee นั่นทำไมผมใช้lookaheads พวกเขาไม่ต้องการคำสั่งซื้อใด ๆ
Isiah Meadows

@nhahtdh ขอบคุณสำหรับการจับ
อิสยาห์มีโดวส์

1

sort + uniq + sed

อันนี้ไม่ตรงกับคำที่เกิดขึ้นซ้ำแล้วซ้ำอีก นอกจากนี้ยังไม่ตรงกับตัวอักษร 'y' หากเกิดขึ้นที่จุดเริ่มต้นของคำ

sort wordlist.txt | uniq | sed -n '/a/p' | sed -n '/e/p' | sed -n '/i/p' | sed -n '/o/p' | sed -n '/u/p' | sed -nr '/^[^y]+y/p' 

เช่นเดียวกับคำตอบอื่น ๆ ของคุณให้แทนที่ "sort wordlist.txt | uniq" ด้วย "sort -u wordlist.txt" เพื่อบันทึก 4 ไบต์
Glenn Randers-Pehrson

1

ทุบตี

ไม่สั้นเท่ากับ OP แต่มีหนึ่งบรรทัดใน Bash:

while read p; do if [ $(sed 's/[^aeiouy]//g' <<< $p | fold -w1 | sort | uniq | wc -l) -eq 6 ] ; then echo $p; fi; done < wordlist.txt

คุณสามารถบันทึกสี่ไบต์ด้วยการแทนที่ "sort | uniq" ด้วย "sort -u"
Glenn Randers-Pehrson

นอกจากนี้คุณสามารถลบช่องว่างออกจาก "|" และ ";" เพื่อบันทึกอีกสองสามไบต์
Glenn Randers-Pehrson

1

C # - 170

using System.Linq;class P{static void Main(string[]a){System.Console.Write(string.Join(",",System.IO.File.ReadAllLines(a[0]).Where(w=>"aeiouy".All(c=>w.Contains(c)))));}}

จัดรูปแบบ:

using System.Linq;
class P
{
    static void Main(string[] a) { 
        System.Console.Write(
            string.Join(",", System.IO.File.ReadAllLines(a[0])
                .Where(w => "aeiouy".All(c => w.Contains(c))))); 
    }
}

ไม่ได้อยู่ในอารมณ์ที่จะทำการนับpuhแต่ควรจะง่าย พา ธ ไปยัง wordlist (เวอร์ชันที่เป็นตัวพิมพ์เล็ก) ควรถูกส่งไปยังโปรแกรมเป็นอาร์กิวเมนต์แรก:

program.exe D:\foo\bar\corncob_lowercase.txt

เอาท์พุท:

abstemiously,authoritatively,behaviourally,consequentially,counterrevolutionary,
disadvantageously,educationally,encouragingly,eukaryotic,evolutionarily,evolutio
nary,exclusionary,facetiously,gregariously,heterosexuality,homosexuality,importu
nately,inconsequentially,instantaneously,insurrectionary,intravenously,manoeuvra
bility,neurologically,neurotically,ostentatiously,pertinaciously,precariously,pr
ecautionary,questionably,revolutionary,simultaneously,supersonically,tenaciously
,uncomplimentary,uncontroversially,unconventionally,undemocratically,unemotional
ly,unequivocally,uninformatively,unintentionally,unquestionably,unrecognisably

ฉันใช้เสรีภาพในการแสดงผลและคั่นด้วยเครื่องหมายจุลภาค ซึ่งไม่ได้ระบุไว้ในกฎ (ซึ่งต้องระบุว่า "ต้องค้นหาคำทั้งหมด" ไม่ใช่วิธี (และ IF) เพื่อส่งออก)

รวมถึงการนับ (+ เอาต์พุต): 192 - 5 = 187

using System.Linq;class P{static void Main(string[]a){var r=System.IO.File.ReadAllLines(a[0]).Where(w=>"aeiouy".All(c=>w.Contains(c)));System.Console.Write(string.Join(",",r)+" "+r.Count());}}

เอาท์พุท:

abstemiously,authoritatively,behaviourally,consequentially,counterrevolutionary,
disadvantageously,educationally,encouragingly,eukaryotic,evolutionarily,evolutio
nary,exclusionary,facetiously,gregariously,heterosexuality,homosexuality,importu
nately,inconsequentially,instantaneously,insurrectionary,intravenously,manoeuvra
bility,neurologically,neurotically,ostentatiously,pertinaciously,precariously,pr
ecautionary,questionably,revolutionary,simultaneously,supersonically,tenaciously
,uncomplimentary,uncontroversially,unconventionally,undemocratically,unemotional
ly,unequivocally,uninformatively,unintentionally,unquestionably,unrecognisably 4
3

(สังเกตการนับเมื่อสิ้นสุด: 43)

ไม่มีผลลัพธ์ ("ต้องค้นหาทุกคำ"): 137 - 5 = 132

using System.Linq;class P{static void Main(string[]a){var r=System.IO.File.ReadAllLines(a[0]).Where(w=>"aeiouy".All(c=>w.Contains(c)));}}

(ดัดกฎ bitm แล้วอีกครั้ง: ไม่ได้จริงๆ) นี้พบr.Count()ทุกคำและนับใช้ได้โดยการดำเนินการ


1

C-Sharp

ฉันไม่เคยทำแบบนี้มาก่อนและฉันไม่แน่ใจว่าขั้นตอนการโพสต์คืออะไร แต่นี่คือสิ่งที่ฉันมาด้วย:

185 ไบต์

Action<string>x=(s=>s.Split('\n').ToList().ForEach(w=>{if("aeiouy".All(v=>w.Contains(v)))Console.Write(w);}));using(var s=new StreamReader(@"C:\corncob_lowercase.txt"))x(s.ReadToEnd());

wordList = a List<string>ของคำทั้งหมด

หากคุณต้องการแสดงผลรวม:

219 - 5 = 214 ไบต์

Action<string>x=(s=>{var t=0;s.Split('\n').ToList().ForEach(w=>{if("aeiouy".All(v=>w.Contains(v))){Console.Write(w);t++;}});Console.Write(t);});using(var s=new StreamReader(@"C:\corncob_lowercase.txt"))x(s.ReadToEnd());


ขยาย

// init
var words = "";
var vowels = "aeiouy";
var total = 0;

using (var stream = new StreamReader(@"C:\corncob_lowercase.txt"))
{
    // read file
    words = stream.ReadToEnd();

    // convert word to List<string>
    var wordList = words.Split('\n').ToList();

    // loop through each word in the list
    foreach (var word in wordList)

        // check if the current word contains all the vowels
        if(vowels.All (w => word.ToCharArray().Contains(w)))
        {
            // Count total
            total += 1;
            // Output word
            Console.Write(word);
        }

    // Display total
    Console.WriteLine(total);
}

โดยทั่วไปหากคำถามถามหา "โปรแกรม" คุณควรโพสต์โปรแกรมทั้งหมดของคุณรวมถึงการโหลด / การเริ่มต้น ฯลฯ ทำงานได้ดีมาก!
ProgrammerDan

โอวตกลง. ดังนั้นในเวอร์ชั่นย่อฉันควรรวมทุกอย่างไม่ใช่แค่เส้นที่บรรลุความต้องการ? ฉันคิดว่ามันเป็นการตัดสินครั้งสุดท้ายโดยคำตอบอื่น ๆ เนื่องจากพวกเขาไม่มีรหัสให้โหลด / อ่านไฟล์ txt
jzm

คุณจะเห็นความแตกต่างของวิธีการและเมื่ออายุของคำตอบนั้นน่าจะไม่ดีกับคำตอบใหม่ แต่โดยทั่วไปถ้าคำถามขอให้ "โปรแกรม" มันควรจะคอมไพล์และรันได้เหมือนโพสต์ ยกตัวอย่างในคำถามด้วยตัวเอง - นั่นเป็นโซลูชันที่สมบูรณ์และปฏิบัติการได้ที่โดดเดี่ยว
ProgrammerDan

อ่าใช่มั้ย ในกรณีนี้ฉันได้อัปเดต 2 เวอร์ชันที่ย่อให้เป็นสแตนด์อโลน
jzm

ที่ดี! อย่าลืมอัปเดตข้อความคำตอบของคุณ (คุณพูดถึง "ไม่ต้องโหลด / อ่าน") และคำนวณคะแนนของคุณ
ProgrammerDan

1

vb.net (คะแนน 91 = 96c - 5) * 0

* 0 + 49c นาที

สิ่งนี้สร้างการแจงนับประกอบด้วยคำทั้งหมดที่มีสระทั้งหมด

Dim r=IO.File.ReadLines(a(0)).Where(Function(w)"aeiou".Intersect(w).Count=5)
Dim c=r.Count

Your program must find all the words in this wordlist. นี่คือ a) ไม่ใช่โปรแกรม แต่ตัวอย่างของโปรแกรมและ b) ไม่ได้อ่าน / ใช้ wordlist
RobIII

@RobIII vb.net มีขั้นต่ำ 49c สำหรับโปรแกรมคอนโซลพื้นฐาน ข้อโต้แย้งในการเขียนโปรแกรม (ในกรณีนี้ WordList) เป็นอาร์เรย์ นอกจากนี้บางคนได้ชี้ให้เห็นว่ามันเป็นโปรแกรมที่ถูกต้องใน LinqPad
Adam Speight

1

Mathematica - 136 102

Fold[Flatten@StringCases@## &, 
Flatten@Import@"http://bit.ly/1iZE9kY",
___ ~~ # ~~ ___ & /@ Characters@"aeiouy"]

ลิงก์ที่ย่อให้ไปที่http://www.mieliestronk.com/corncob_lowercase.txt


ประหยัด 28 http://bit.ly/1iZE9kYตัวอักษรที่มี
wchargin

บันทึกตัวละครทั้งสองด้วยหรือมากกว่าถ้าคุณรวมCharacters["aeiou"] y
wchargin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.