นับจำนวนสระในแต่ละคำของสตริง


13

นี่เป็นความท้าทายที่ค่อนข้างง่าย

ท้าทาย

ข้อมูลที่ป้อนจะมีสตริง (ไม่nullหรือว่างเปล่า) ที่มีความยาวสูงสุด 100 เอาท์พุทจำนวนเสียงในแต่ละคำของสตริงโดยคั่นด้วยช่องว่าง

กฎระเบียบ

  • สตริงจะมีความยาวไม่เกิน 100 อักขระ
  • สตริงจะมีตัวอักษรA-Zเท่านั้นa-zและยังสามารถมีช่องว่าง
  • อินพุตต้องถูกใช้จากstdinอาร์กิวเมนต์บรรทัดคำสั่งหรือ
  • stdoutการส่งออกจะต้องออกมาใน
  • คุณสามารถเขียนโปรแกรมแบบเต็มหรือฟังก์ชั่นที่รับอินพุตจากstdinและแสดงผลลัพธ์
  • สระว่าคุณต้องการโปรแกรม / ฟังก์ชั่นที่จะนับเป็นและaeiouAEIOU

กรณีทดสอบ

This is the first test case     --> 1 1 1 1 1 2
one plus two equals three       --> 2 1 1 3 2
aeiou AEIOU                     --> 5 5
psst                            --> 0
the quick brown fox jumped over the lazy dog --> 1 2 1 1 2 2 1 1 1

เกณฑ์การให้คะแนน

นี่คือดังนั้นการส่งที่สั้นที่สุด (เป็นไบต์) จะชนะ


6
มีเหตุผลที่คุณยืนยันในรูปแบบ I / O ที่ค่อนข้าง จำกัด หรือไม่? ไม่ใช่ทุกภาษาที่สามารถสื่อสารกับ STDIN และ STDOUT ได้อย่างสะดวก เรามีค่าเริ่มต้นสำหรับสิ่งนี้ (ซึ่งคุณมีอิสระที่จะลบล้างหากคุณต้องการ) ซึ่งอนุญาตให้ใช้อาร์กิวเมนต์บรรทัดคำสั่งอาร์กิวเมนต์ฟังก์ชันค่าส่งคืนเป็นต้น (สามารถพบได้ในแท็ก wiki )
Martin Ender

@ MartinBüttner " มีเหตุผลว่าทำไมคุณยืนยันในค่อนข้างเข้มงวดผมรูปแบบ / O หรือไม่? " - ครั้งที่ฉันเช่นเดียวกับstdin stdoutฉันไม่ชอบที่จะ "รับข้อมูล" ผ่านทางอาร์กิวเมนต์ของฟังก์ชัน อาร์กิวเมนต์บรรทัดคำสั่งดูเหมือนว่าตกลง ฉันได้เพิ่มมันลงในโพสต์
Spikatrix

4
วิกิพีเดีย: The name "vowel" is often used for the symbols that represent vowel sounds in a language's writing system, particularly if the language uses an alphabet. In writing systems based on the Latin alphabet, the letters A, E, I, O, U, and sometimes Y are all used to represent vowels. However, not all of these letters represent vowels in all languages.คุณหมายถึงสระอะไร?
edc65

พื้นที่ต่อท้ายเดี่ยวใช้ได้หรือไม่
Alex A.

3
ใช้ Sandbox เพื่อเสนอความท้าทาย
mbomb007

คำตอบ:


8

Pyth, 17 ไบต์

jdml@"aeiou"dcrzZ

ทางออกที่ตรงไปตรงมา ลองใช้ออนไลน์: การสาธิตหรือชุดควบคุมการทดสอบ

คำอธิบาย:

               z   input
              r Z  convert to lower-case
             c     split at spaces
  m                map each word d to:
    @"aeiou"d         filter d for chars in "aeiou"
   l                  length
jd                 join by spaces and implicitly print

มันทำให้ฉันประหลาดใจเสมอเมื่อมีคนเขียนโซลูชัน Pyth และเรียกมันว่า "ตรงไปตรงมา" (แม้ว่าอันนี้ง่ายกว่าที่จะเข้าใจได้ง่ายกว่า) +1
Christopher Wirt

10

C, 113 108 103 96 ไบต์

ขอบคุณ@ andrea-biondoสำหรับการประหยัด 5 ไบต์ที่ดีโดยเฉพาะ

main(a,v,c)char**v;{do{for(a=0;c=*v[1]++%32;2016%(c+27)||a++);printf("%d ",a);}while(v[1][-1]);}

สิ่งนี้ยังคงรู้สึกป่องดังนั้นหวังว่าฉันจะเอามันลงได้ในไม่กี่ไบต์ในคืนนี้

ส่วนที่น่าสนใจก็คือ

!(124701951%((c-65&31)+33))

จะเป็น1ถ้าcเป็น (กรณีบนหรือต่ำกว่า) สระ ASCII และตัวละครอื่น0a-zA-Zsubexpression c-65&31แผนที่'a'และ'A'การ0, 'b'และ'B'เพื่อ2เป็นต้นเมื่อเราเพิ่ม33สระสอดคล้องกับตัวเลข33, 37, 41, 47, 53ตามลำดับทั้งหมดที่มี (สิ่งอำนวยความสะดวก) นายก ในช่วงของเราตัวเลขดังกล่าวเท่านั้นที่จะแบ่ง124701951 = 33*37*41*47*53คือเฉพาะสำหรับเสียงสระที่เหลือ124701951%(...)จะเป็นศูนย์

แก้ไข: ด้วยวิธีนี้เราสามารถพิจารณาการแสดงออก!(n%((c-65&31)+s))ที่(n,s) = (124701951, 33)กำหนดว่าตัวละครcเป็นสระ ในความคิดเห็น@ andrea-biondoชี้ให้เห็นว่าทั้งคู่(n,s) = (2016,28)ยังสามารถใช้ในการแสดงออกนี้เพื่อกำหนดเสียงสระ ฉันจะออกจากคำอธิบายปัจจุบันในแง่ของจำนวนเฉพาะด้านบน แต่เหตุผลที่งานจับคู่ที่สั้นกว่านี้เป็นอีกครั้งเพราะในช่วง 28-53 จำนวนเฉพาะกับปัจจัยสำคัญทั้งหมดในชุดของปัจจัยสำคัญของปี 2559 คือ 28, 32 36, 42, 48 ซึ่งสอดคล้องกับสระอย่างแม่นยำ

EDIT2: บันทึกอีก 5 ไบต์เนื่องจาก(c-65&31)+28สามารถย่อให้สั้นลงc%32+27ได้

EDIT3: แปลงเป็นลูป do-while เพื่อให้ได้ต่ำกว่า 100 ไบต์

กรณีทดสอบ:

$ ./vowelc "นี่เป็นกรณีทดสอบครั้งแรก"
1 1 1 1 1 2 2 
$ ./vowelc "หนึ่งบวกสองเท่ากับสาม"
2 1 1 3 2 
$ ./vowelc "aeiou AEIOU"
5 5 
$ ./vowelc "psst"                     
0

พระเจ้าช่วย! มันยอดเยี่ยมมาก! คุณสามารถบันทึกไบต์มากขึ้นโดยใช้นอกa; mainวิธีนี้คุณลดไบต์บางอย่างที่คุณไม่จำเป็นต้องประกาศaในmain(...)และยังไม่จำเป็นต้องเริ่มต้นaจากวง
Spikatrix

1
@CoolGuy: aจะเริ่มต้นใหม่ในทุก ๆ วงดังนั้นคุณไม่สามารถเริ่มต้นได้ครั้งเดียวเป็นศูนย์โดยการประกาศทั่วโลก ฉันเขียนบรูฟอร์เรเซอร์ตัวเล็ก ๆ เพื่อหา(n, s)คู่ที่เล็กที่สุดซึ่งn%((c-65&31)+s)เป็นศูนย์สำหรับสระและไม่เป็นศูนย์สำหรับพยัญชนะ (az, AZ) ฉันพบ(2016, 28)และดูเหมือนว่าจะทำงานได้ดี: !(2016%((c-65&31)+28))มี 5 ตัวอักษรที่สั้นกว่า ยังไงก็ตามทางออกที่ดีมาก ๆ :)
Andrea Biondo

7

CJam, 21 19 ไบต์

r{el_"aeiou"--,Sr}h

มันทำงานอย่างไร :

r{               }h    e# Read the first word and enter a do-while loop
  el_                  e# Convert the word into lower case and take a copy of it
     "aeiou"           e# All small caps vowels
            -          e# Remove all vowels from the copied word
             -         e# Remove all non-vowels from the original word
              ,        e# At this point, we have a string with all vowels of the word
                       e# Simply take its length
               S       e# Put a space after the number of vowel
                r      e# Read the next word. This serves as the truthy condition for the
                       e# do-while loop for us as if there are no word left, this returns
                       e# null/falsy and the do-while loop is exited

ลองออนไลน์ได้ที่นี่


6

R, 44 43 ไบต์

cat(nchar(gsub("[^aeiou]","",scan(,""),T)))

คำอธิบาย Ungolfed +:

# Read a string from STDIN. scan() automatically constructs a vector
# from input that contains spaces. The what= argument specifies that
# a string will be read rather than a numeric value. Since it's the
# second specified argument to scan(), we can simply do scan(,"").

s <- scan(what = "")

# For each word of the input, remove all consonants using gsub(),
# which is vectorized over its input argument.

g <- gsub("[^aeiou]", "", s, ignore.case = TRUE)

# Print the number of remaining characters in each word to STDOUT
# using cat(), which automatically separates vector values with a
# single space.

cat(nchar(g))

5

Perl, 35 34 31

say map{lc=~y/aeiou//.$"}split

30ตัวอักษรสำหรับ+1-n

เช่นเดียวกับรหัส Perl จำนวนมากซึ่งทำงานจากขวาไปซ้าย splitจะแบ่งบรรทัดอินพุตบนช่องว่าง mapจะเรียกใช้รหัสระหว่าง{}แต่ละคำที่แยก lcทำให้คำตัวพิมพ์เล็ก =~y/aeiou//จะทำให้เรานับสระ .$"จะเพิ่มช่องว่างต่อท้ายคำ sayจากนั้นพิมพ์คำทั้งหมด!

ทำงานด้วย:

echo 'aeiou AEIOU' | perl -nE'say map{lc=~y/aeiou//.$"}split'

4

Python 3, 65 ไบต์

print(*[sum(c in'aeiouAEIOU'for c in w)for w in input().split()])

ตรงไปตรงมามากอ่านง่าย wย่อมาจากคำcย่อมาจากตัวละคร


4

Perl: 30 ตัวอักษร

(ชนิดบังคับกฎ: ตัวเลขในเอาต์พุตจะถูกคั่นด้วยช่องว่างให้มากที่สุดเท่าที่คำอินพุต)

s|\w+|@{[$&=~/[aeiou]/gi]}|ge

วิ่งตัวอย่าง:

bash-4.3$ while read s; do printf '%-30s --> ' "$s"; perl -pe 's|\w+|@{[$&=~/[aeiou]/gi]}|ge' <<< "$s"; done < test-case.txt
This is the first test case    --> 1 1 1 1 1 2
one plus two equals three      --> 2 1 1 3 2
aeiou AEIOU                    --> 5 5
psst                           --> 0

Perl: 27 ตัวอักษร

(เพื่อแสดงให้เห็นว่าจะสั้นแค่ไหนถ้าฉันไม่ลืมy///ค่าตอบแทนของมันอีกแล้วตอนนี้ลองตอบคำตอบของchilemagicซึ่งทำให้ฉันนึกถึงy///คุณค่าการกลับมาอีกครั้ง)

s|\w+|lc($&)=~y/aeiou//|ge

แดงนี้จะเต้นคำตอบของฉัน นี่s!\w+!lc($&)=~y/aeiou//!geทำให้เป็น27ไบต์ (26 ตัวอักษร +1 สำหรับ-p.
hmatt1

ใช่ขอบคุณ. ฉันไม่สามารถเชื่อใจในมือของฉันได้อีกต่อไปว่าฉันลืมไปกี่ครั้งy///แล้ว :(
จัดการ

3

Ruby, 38 ไบต์

$><<$*.map{|x|x.count'AIUEOaiueo'}*' '

การใช้งาน:

mad_gaksha@madlab /tmp/ $ ruby t.rb This is the first test case
1 1 1 1 1 2

3

JavaScript ( ES6 ), 68

I / O ผ่านป๊อปอัป เรียกใช้ตัวอย่างใน Firefox เพื่อทดสอบ

// As requested by OP

alert(prompt().replace(/\w+/g,w=>w.replace(/[^aeiou]/ig,'').length))

// Testable
f=s=>s.replace(/\w+/g,w=>w.replace(/[^aeiou]/ig,'').length)

test=[
 ['This is the first test case','1 1 1 1 1 2']
,['one plus two equals three','2 1 1 3 2']
,['aeiou AEIOU', '5 5']
]  

out=x=>O.innerHTML+=x+'\n'

test.forEach(t=>{
  r=f(t[0])
  out('Test '+ ['Fail','OK'][0|r==t[1]]
      +'\nInput:  '+ t[0]
      +'\nOutput: '+r
      +'\nCheck:  '+t[1]+'\n')
})
<pre id=O></pre>



3

PowerShell, 35 ไบต์

%{($_-replace"[^aeiou]",'').length}

ค่อนข้างน่าเบื่อ แต่จริง ๆ แล้วการแข่งขันครั้งเดียว (PowerShell เป็นแบบ insentitive โดยค่าเริ่มต้น woo)


FYI คุณต้องเรียกสิ่งนี้echo <word> | codeว่า <word> เป็นคำหรือวลีของคุณ
Pureferret

3

Bash - 85

while read l;do for w in $l;do x=${w//[^aouieAOUIE]};echo -n ${#x}\ ;done;echo;done

คำอธิบาย

  • read l อ่านหนึ่งบรรทัดจากอินพุต
  • for w in l แยกบรรทัดออกเป็นคำโดยใช้ตัวคั่นช่องว่าง
  • x=${w//[^aouieAOUIE]/} ลบทั้งหมดยกเว้นสระจากคำ
  • ${#x} คือความยาวของสตริงผลลัพธ์ === จำนวนของเสียงสระ

รู้สึกมากเกินไป ข้อกำหนดระบุว่าอินพุตจะมีเฉพาะตัวอักษรและช่องว่างเท่านั้น เหตุใดคุณจึงเตรียมให้ประมวลผลอินพุตหลายบรรทัด หากไม่มีwhile.. do.. doneก็จะสั้นลง ยังไม่จำเป็นต้องใช้ล่าสุด/ในการทดแทนรูปแบบ และพื้นที่ตัวอักษรเดียวจะสั้นกว่าการหลบหนีที่ยกมา read l;for w in $l;do x=${w//[^aouieAOUIE]};echo -n ${#x}\ ;done;echo
จัดการ

ฉันเห็นด้วย แต่กฎบอกว่า 'คุณสามารถเขียนโปรแกรมแบบเต็มหรือฟังก์ชั่นที่รับอินพุตจาก stdin และส่งผลลัพธ์ออกมา' ดังนั้นฉันจึงตัดสินใจทำโปรแกรมเต็มรูปแบบ ฉันจะแก้ไขวิธีการบันทึกสองไบต์)) ขอบคุณ!
xuesheng

3

Julia, 76 72 69 65 ไบต์

for w=split(readline()) print(count(i->i"aeiouAEIOU",w)," ")end

คำอธิบาย Ungolfed +:

# Read a string from STDIN and split it into words
s = split(readline())

# For each word in the string...
for w in s
    # Get the number of vowels of any case in the word
    c = count(i -> i  "aeiouAEIOU", w)

    # Print the number of vowels identified
    print(c, " ")
end

ซึ่งจะรวมถึงพื้นที่ต่อท้ายเดียวซึ่งฉันบอกว่าถูกต้อง


2

Mathematica, 95 ไบต์

จะไม่ชนะการแข่งขันใด ๆ แต่ ...

Print@StringRiffle[ToString[#~StringCount~Characters@"aeiouAEIOU"]&/@StringSplit@InputString[]]

คุณรู้จักคอมไพเลอร์ออนไลน์ที่ฉันสามารถทดสอบได้ไหม?
Spikatrix

มีไม่ใด ๆ แต่คุณจะได้รับการทดลองใช้ฟรีที่นี่
LegionMammal978

@CoolGuy คุณสามารถเรียกใช้ Mathematica (วุลแฟรม Language) ออนไลน์รหัสถ้าคุณได้รับบัญชีฟรีที่นี่ (ไม่แน่ใจว่าInputStringมีอยู่ในเว็บอินเตอร์เฟส แต่เป็นกล่องโต้ตอบใน Mathematica)

@Calle ในสคริปต์ Mathematica InputStringรับอินพุตบรรทัดถัดไป
LegionMammal978

โอเคฉันเข้าใจแล้ว ยังไม่แน่ใจว่ามันจะใช้งานได้ในโน้ตบุ๊กคลาวด์หรือไม่ แต่อย่างน้อยตอนนี้ฉันรู้ว่าทำไมมันถึงถูกใช้สำหรับ stdin

2

golflua, 55 ไบต์

~@W I.r():l():gm("%w+")_,c=W:g("[aeiou]",'')I.w(c,' ')$

การจับคู่รูปแบบพื้นฐานของสระหลังจากบังคับให้ตัวพิมพ์เล็กถูกบังคับ Lua ที่เทียบเท่า

line=io.read()
for word in line:lower():gmatch("%w+") do
   _,c=word:gsub("[aeiou]",'')
   io.write(c," ")
end

เช่นกันสำหรับรุ่น Lua ก็ต้องการจริงจะสั้น 2 ตัวอักษรที่จะใช้และข้ามออกบนgsub('[aeiouAEIOU]','') lower()
Kyle Kanos

2

R , 139 ไบต์

อ่าน / เขียน stdout () แย่มาก

s=function(x,y)strsplit(x,y)[[1]]
write(unlist(Map(function(x)sum(x%in%s("AIUEOaiueo","")),Map(s,s(readLines("stdin")," "),"")),),stdout())

R ก็ไม่ได้แย่ขนาดนั้น ;) คุณสามารถใช้มากกว่าcat() write(..., stdout())
Alex A.

2

Python 3, 72 ไบต์

แรงบันดาลใจจาก@randomra 's คำตอบ มันมีความยาวเท่ากัน แต่ใช้ regex แทน list comprehension นอกจากนี้ยังสามารถอ่านได้น้อยกว่า

import re
print(*map(len,re.sub("[^aeiou ]","",input(),0,2).split(" ")))

บันทึก 7 import re;print(*map(len,re.sub("[^aeiou ]","",input()).split()))ไบต์: (ใช้ newline แทน;ถ้าคุณต้องการ)
mbomb007

@ mbomb007 ต้องเป็นแบบตัวพิมพ์เล็กและตัวพิมพ์2เล็ก" "ดังนั้นจึงสามารถมีความยาวเป็น 0 ได้

อ๊ะการทดสอบของฉันไม่กว้างขวางพอที่จะสังเกตได้
mbomb007

2

PHP - 94

foreach(explode(' ',$argv[1]) as$d){preg_match_all('/[aeiou]/i',$d,$v);echo count($v[0]).' ';}

เวอร์ชันที่ไม่ดี

$a = explode(' ',$argv[1]);
foreach($a as $d) {
    preg_match_all('/[aeiou]/i', $d, $v);
    echo count($v[0]).' ';
}

2

วัตถุประสงค์ -C, 223 ไบต์

-(void)p:(NSString*)s{NSArray*a=[s componentsSeparatedByString:@" "];for(NSString*w in a){int c=0;for(int i=0;i<w.length;i++){if([@"aeiouAEIOU"containsString:[w substringWithRange:NSMakeRange(i,1)]]){c++;}}NSLog(@"%d",c);}}

ไม่ใช่ภาษาที่กะทัดรัดที่สุด แต่ใช้งานได้

เวอร์ชันที่ไม่บีบอัด:

- (void)p:(NSString*)s{
    NSArray*a=[s componentsSeparatedByString:@" "];
    for (NSString*w in a) {
        int c=0;
        for (int i=0;i<w.length;i++) {
            if ([@"aeiouAEIOU" containsString:
                 [w substringWithRange:NSMakeRange(i, 1)]]) {
                c++;
            }
        }
        NSLog(@"%d",c);
    }
}

2

Matlab, 73 ไบต์

ความท้าทายของคุณไม่ชัดเจน (แต่มันน่าสนใจ) ฉันสมมติว่า

  • โดย "สระ" คุณหมายถึงa, e, i, ,ou
  • สตริงไม่มีช่องว่างนำหน้าหรือต่อท้าย

รหัส:

diff(find(regexprep([' ' input('','s') ' '],'[^aeiouAEIOU ]','')==' '))-1

2

rs , 50 ไบต์

สิ่งนี้ไม่นับ rs ถูกอัปโหลดประมาณ 2 สัปดาห์หลังจากโพสต์สิ่งนี้ อย่างไรก็ตามเห็นได้ชัดว่านี่จะไม่ชนะอะไรเลยดังนั้นมันจึงยังเจ๋ง

*[aeiou]/_
(^| )[^_\s]+ |$/ 0
[^_\s0]/
(_+)/(^^\1)

การสาธิตสด

การใช้งานค่อนข้างตรงไปตรงมา:

*[aeiou]/_            Replace all vowels with underscores.
(^| )[^_\s]+ |$/ 0    Replace words that have no vowels with a zero.
[^_\s0]/              Remove all other letters.
(_+)/(^^\1)           Convert the underscore sequences into numbers (e.g. '___' to 3).

2

Perl, 60 45

$/=" ";while(<>){$n=()=/[aeiou]/gi;print"$n "

ขอบคุณ kirbyfan64sos ที่ช่วยฉัน 15 ไบต์ - นั่นช่วยได้จริงๆ!
โปรดทราบว่ามีพื้นที่เพิ่มเติมในตอนท้ายของเอาต์พุต


คุณสามารถลบการเรียกร้องให้splitโดยการตั้งค่าการเพิ่ม$/=" ";และคุณสามารถ shorted while(<>)ห่วงคำนำหน้า เมื่อมีการเปลี่ยนแปลงทั้งสองรหัสจะกลายเป็น$/=" ";while(<>){$n=()=/[aeiou]/gi;print"$n "}ประหยัด 14 ไบต์!
kirbyfan64sos

2

Haskell, 76 68 ไบต์

f=interact$unwords.map(show.length).filter(`elem`"aeiouAEIOU").words

การใช้งานที่ตรงไปตรงมาไม่แน่ใจว่ามีอะไรที่จะเล่นกอล์ฟที่นี่


1

KDB (Q), 30 ไบต์

{sum@'lower[" "vs x]in"aeiou"}

คำอธิบาย

            " "vs x              / split x string by space
      lower[       ]             / lower case
                    in"aeiou"    / check vowel
 sum@'                           / sum each booleans
{                            }   / lambda

ทดสอบ

q){sum@'lower[" "vs x]in"aeiou"}"This is the first test case"
1 1 1 1 1 2i

1

สมอลล์ทอล์ค - 66 72

นี่คือใน Smalltalk / X; ชื่อสำหรับ stdin และ stdout อาจแตกต่างกันใน squeak / pharo

Stdin nextLine subStrings do:[:w|(w count:[:c|c isVowel])print.' 'print]

ใน Smalltalk / X (และภาษาถิ่นอื่น ๆ ) สัญลักษณ์เข้าใจ #value: ดังนั้นมันจึงสามารถย่อได้ถึง 66 ตัวอักษร:

 Stdin nextLine subStrings do:[:w|(w count:#isVowel)print.' 'print]

หากเขียนเป็นฟังก์ชั่นซึ่งรับสตริงเป็นอาร์กิวเมนต์ "s":

[:s|s subStrings do:[:w|(w count:#isVowel)print.' 'print]]

แน่นอนในรหัสจริงเราจะใช้ฟังก์ชันยูทิลิตี้ "f" ซึ่งจะคืนค่าเวกเตอร์ของจำนวนและพิมพ์นั้น อย่างไรก็ตามรูปแบบผลลัพธ์ไม่ใช่สิ่งที่ท้าทายตรงตามที่ขอ:

f := [:s|s subStrings collect:[:w|(w count:#isVowel)]].
(f value: Stdin nextLine) print.

1

Python 2, 76 ไบต์

ฉันทำสิ่งนี้ก่อนที่ฉันจะเห็นโซลูชันอื่น ๆ จากนั้นตรวจสอบเพื่อค้นหาโซลูชัน P3 สองตัวที่สั้นกว่า :( ข้อ จำกัด Darn P2

print' '.join(`sum(y in'aeiouAEIOU'for y in x)`for x in raw_input().split())

1

PowerShell ขนาด 65 ไบต์

($input-split'\s'|%{($_-split''-match'a|e|i|o|u').count})-join' '

ทดสอบโดยใช้รูปแบบด้านล่างหลังจากบันทึกเป็น vowels.ps1

"the quick brown fox" | vowels.ps1

วิธีนี้เป็นสคริปต์จริงและไม่ใช่เพียงข้อมูลโค้ดซึ่งเป็นที่น่าพอใจในข้อ จำกัด :

"อินพุตต้องถูกใช้จาก stdin หรืออาร์กิวเมนต์บรรทัดคำสั่ง"


1

เยลลี่ขนาด 7 ไบต์

Ḳf€ØcL€

ลองออนไลน์!

พบกับความช่วยเหลือจากMr. Xcoderในการแชท

คำอธิบาย

Ḳf€ØcL€ - Main link. Argument: s (a string)  e.g. "aeiou AEIOU"
Ḳ       - Split the input on spaces               ["aeiou", "AEIOU"]
   Øc   - Generate the string "AEIOUaeiou" 
 f€     - Filter out consonants from €ach         ["aeiou", "AEIOU"]
     L€ - Length of €ach                          [5, 5]

หากเอาต์พุตต้องคั่นด้วยช่องว่างให้ผนวก a Kต่อท้าย


0

SAS, 72

data;infile stdin;file stdout;input c$@@;x=countc(c,'aeiou','i');put x@;

รูปแบบ I / O ที่ จำกัด สำหรับอันนี้เจ็บจริง ๆ อันนี้เนื่องจากรับผิดชอบ 25 ของไบต์ที่นี่


0

C # 186

public class a{public static void Main(string[] a){Console.Write(string.Join(" ",Console.ReadLine().Split(' ').Select(x=>x.ToCharArray().Count(y=>"aeoui".ToCharArray().Contains(y)))));}}

สิ่งนี้ล้มเหลวสำหรับกรณีทดสอบครั้งที่สาม AEIOUโปรแกรมของคุณดูเหมือนจะไม่นับ
Spikatrix
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.