ลบสระโดยไม่ใช้อักขระที่แตกต่างกันมากเกินไป


10

ความท้าทายคือการลบเสียงสระ (a, e, i, o, u) ออกจากสตริงจาก STDIN (ใช่ฉันรู้ง่าย) คุณสามารถคาดหวังว่าโปรแกรมที่คุณจะไม่ได้วิ่งไปกับข้อโต้แย้งใด ๆ argvใน

ตัวอย่าง:

This program will remove VOWELS.
So we can now speak without them.

เปลี่ยนเป็น:

Ths prgrm wll rmv VWLS.
S w cn nw spk wtht thm.

มีการจับ รายการที่ชนะจะตัดสินจากจำนวนไบต์ที่แตกต่างกัน ตัวอย่างเช่นa abมีสามไบต์ที่แตกต่างกัน ( a, bและพื้นที่) หากมีอย่างน้อยสองรายการที่จะมีจำนวนของไบต์ที่แตกต่างกันนี้จะใช้ทางเลือกแทนจำนวนไบต์สำหรับรายการเหล่านั้น


9
งานสำหรับภาษา Whitespace
jfs

อินพุทเป็นRenée’s naïvetéอย่างไร แน่นอนว่าควรจะ Rn’s nvtเป็นสระเอาท์พุท ดูเหมือนวิธีการเหล่านี้มีทั้งหมดอะแฮ่มสวยไร้เดียงสาถ้าคุณถามฉัน :)
tchrist

หากคุณลบéคุณอาจต้องการลบ y ด้วย
ผู้ใช้ที่ไม่รู้จัก

4
@ คริสอ่านคำถาม บอกว่าจะลบ a, i, i, o, u คุณอยู่นอกหัวข้อโปรดวาง
บูธตาม

1
@trist: โดยเฉพาะอย่างยิ่งความท้าทายไม่ได้พูดว่า "สระทั้งหมด" และระบุสิ่งที่เราควรพิจารณาว่าเป็นแบบถอดได้
ผู้ใช้ไม่ทราบ

คำตอบ:


2

Bites Whitespace (2 ตัวอักษรที่แตกต่าง, 324 ตัวอักษรทั้งหมด)

TTSSSTTSSSSTTTSTTTSSSSSSTTSSSTSSSSSSTSTTSSSTSSSSTSSTSTTSSSTSSSTSSSTSTTSSSTSSSTSTSTSTSTTSSSTSSTSSTSSTSTTSSSTSTSSSSSTSTTSSSTSTSSSTSSTSTTSSSTSTSSTSSSTSTTSSSTSTSSTSTSTSTSTTSSSTSTSTSSTSSTSTTTTSSSTSTTSTTSTTTSSTSTTSSSSTTTSTSTSTSSSTSTTTSSTTTTSTTSTSTTTTSSTTTTTSSSTTTTSTTTTTTSSTSTTSSSSTTTSTSTSSTTSTTTSSSSTTTSTTSSTTSTTSTTTTSSSSTTTTTTTT

โดยที่ S, T, L หมายถึง Space, Tab, Linefeed ตามลำดับ (ได้มาอย่างไร้ที่ติโดยการแปลงคำตอบของช่องว่างด้วย "breadbox"เป็น Binary Whitespace - การโพสต์นี้น่าจะเป็นความเห็นต่อคำตอบของเขา แต่มันยาวเกินไป)

Binary Whitespace คือWhitespace ที่แปลงเป็นภาษารหัสนำหน้าด้วยทุกที่โดยใช้ TS แทน T และใช้ TT แทน L; เช่นการเรียนการสอนที่จะผลักดัน BWS -5 บนสแต็คเป็น SSTSTSSTSTT แทน SSTTSTL ฯลฯ Link: ทั้งวิธีการล่ามให้พลภาษา 3 สัญลักษณ์และไบนารีรุ่นคำนำหน้ารหัสของมัน

หมายเหตุ: มันจะตรงไปตรงมาในการออกแบบตัวแปลระดับบิตทรูที่แท้จริงสำหรับโปรแกรม Binary Whitespace ซึ่งถือว่าเป็นผลสืบเนื่องแบบบิตแทนที่จะเป็นลำดับอักขระ (เช่นการใช้บิตค่า 0,1 แทนอักขระ S, T ตามลำดับ) ด้านบนจะเป็นโปรแกรม324- บิตที่ต้องใช้พื้นที่เก็บข้อมูล 41 ไบต์


13

Brainfuck, 8 ชัดเจน (ทั้งหมด 2121)

>,+[-<>>>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>[-]++<[-<+>>>>->>>->>>->>>->>>->>>->>>->>>->>>->>>-<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[<<<]+>-[<-<.>>-]<[<<<]<[-]>,+]

ตัวละครที่บิดเบือน: <>+-[],.. ทำงานร่วมกับล่ามที่ใช้สำหรับ-1EOF

$ echo '
โปรแกรมนี้จะลบ VOWELS
ดังนั้นตอนนี้เราสามารถพูดได้โดยไม่มีพวกเขา
'| bf vowel-rm.bf

Ths prgrm wll rmv VWLS
S w cn nw spk กับ thm


1
ตามข้อกำหนดที่ระบุไว้นี่เป็นคำตอบที่ดีที่สุด แต่ OTOH มันเป็นที่เลวร้ายที่สุดในการที่จะใช้ทุกตัวอักษรไวยากรณ์อย่างมีนัยสำคัญในภาษาของตน
dan04

3
@tchrist: ถือว่าเป็น ASCII อย่างไรก็ตามมีเพียง {a, e, i, o, u} เท่านั้น
Jon Purdy

1
ดังนั้นก็โอเคที่จะกลายRenée’s naïvetéเป็นRń’s n̈vt́แล้ว? ดูเหมือนจะไม่ถูกต้องสำหรับฉัน แต่ถ้าคุณพูดอย่างนั้น เนื่องจากคุณไม่สามารถใช้การปรับมาตรฐานใด ๆ ได้จึงเป็นเหตุผลที่สมบูรณ์แบบRenée’s naïvetéจริง ๆ"Rene\N{COMBINING ACUTE ACCENT}e\N{RIGHT SINGLE QUOTATION MARK}s nai\N{COMBINING DIAERESIS}vete\N{COMBINING ACUTE ACCENT}"หรือถ้าคุณชอบตัวเลขเวทย์มนตร์, "Rene\x{301}e\x{2019}s nai\x{308}vete\x{301}". หากคุณลบเสียงสระโดยไม่มีการกำกับดูแลคุณจะได้รับความบ้าคลั่งมาก ยินดีต้อนรับสู่สหัสวรรษใหม่ที่กล้าหาญ! :)
tchrist

1
ใช้ Unary คุณมีตัวละครที่แตกต่างกันเพียงตัวเดียว! :-P esolangs.org/wiki/Unary
marinus

3
@marinus ฉันได้แปลงสิ่งนี้เป็น Unary และฉันต้องการ1.166921663690E+1824ไบต์เพื่อเก็บไว้ (ฉันได้อัปโหลดหมายเลขที่แน่นอนไปยัง pastebin แล้วมันไม่พอดีกับความคิดเห็นนี้) ฉันสงสัยว่าจะต้องใช้เวลานานเท่าใดในการส่งไปที่ไซต์นี้
Konrad Borowski

10

ช่องว่าง 3 จุด (218 ตัวอักษร)

คุณรู้ว่ามันกำลังจะมา

↲___↲____↲⇥↲⇥_____↲___⇥_____⇥↲___⇥___⇥_⇥↲___⇥__⇥__⇥↲___⇥__⇥⇥⇥⇥↲___⇥_⇥_⇥_⇥
↲___⇥⇥____⇥↲___⇥⇥__⇥_⇥↲___⇥⇥_⇥__⇥↲___⇥⇥_⇥⇥⇥⇥↲___⇥⇥⇥_⇥_⇥↲↲___⇥↲_↲_↲⇥_⇥↲___
_↲⇥⇥⇥⇥__⇥↲⇥_↲↲_↲_⇥↲↲__↲↲⇥__↲↲_↲↲↲__⇥↲____↲⇥⇥⇥_↲_↲⇥___↲⇥↲__↲_↲_↲↲____↲↲↲↲

(_ = ช่องว่าง, ⇥ = แท็บ, ↲ = บรรทัดใหม่)

นี่คือสคริปต์ที่เข้ารหัสใน base64:

CiAgIAogICAgCgkKCSAgICAgCiAgIAkgICAgIAkKICAgCSAgIAkgCQogICAJICAJICAJCiAgIAkg
IAkJCQkKICAgCSAJIAkgCQogICAJCSAgICAJCiAgIAkJICAJIAkKICAgCQkgCSAgCQogICAJCSAJ
CQkJCiAgIAkJCSAJIAkKCiAgIAkKIAogCgkgCQogICAgCgkJCQkgIAkKCSAKCiAKIAkKCiAgCgoJ
ICAKCiAKCgogIAkKICAgIAoJCQkgCiAKCSAgIAoJCiAgCiAKIAoKICAgIAoKCgo=

และนี่คือโปรแกรมที่เขียนในรูปแบบแอสเซมเบลอร์ที่มองเห็นได้:

ioloop: charin  0
        push    0, 'A', 'E', 'I', 'O', 'U', 'a', 'e', 'i', 'o', 'u'
ckloop: dup
        jz      out
        get     0
        sub
        jz      skip
        jump    ckloop
skip:   jz      ioloop
        jump    skip
out:    get     0
        dup
        jz      done
        charout
        jump    ioloop
done:   exit

กลิ่นเหมือนแอคมี :: ฟอกขาวให้ฉัน :)
tchrist

เมื่อฉันแปลงโปรแกรม "symbolic" ของคุณเป็น Whitespace จะมีข้อผิดพลาดทางไวยากรณ์ร้ายแรง
res

มันแปลกมาก คุณจำได้หรือไม่ว่าจะลบบรรทัดใหม่ที่แท้จริงก่อนทำการแปลง ฉันควรรวมการเข้ารหัส base64 ของสคริปต์จริง
breadbox

1
ใช่ฉันทำอย่างนั้น - เวอร์ชัน base64 ของคุณถอดรหัสเป็นสิ่งที่ฉันใช้ นี่คือ "STL" รุ่น (มี S, T, L LSSSLSSSLTLTSSSSLSSSTSSSSSTLSSSTSSSTSTLSSSTSSTSSTLSSSTSSTTTTLSSSTSTSTSTLSSSTTSS‌​SSTLSSSTTSSTSTLSSSTTSTSSTLSSSTTSTTTTLSSSTTTSTSTLLSSSTLSLSLTSTLSSSLTTTTSSTLTSLLSLS‌​TLLSSLLTSSLLSLLLSSTLSSSLTTTSLSLTSSSLTLSSLSLSLLSSSSLLLLเข้ารหัสอวกาศแท็บเลื่อนบรรทัดตามลำดับ): ปรากฏว่าสองปัญหา (อื่น) ที่คุณกำลังพยายามที่จะผลักดัน 0 บนสแต็คที่ใช้SSSLแทนSSSSLและยังพยายามที่จะกำหนด "ว่างเปล่า" ฉลากโดยใช้สำหรับLSSL skip
res

1
ขออภัยในความล่าช้า ... ฉันเพิ่งยืนยันว่าจริง ๆ แล้วเวอร์ชันของ Edwin Brady เวอร์ชัน 0.3 (Linux ไบนารี) ของล่าม Whitespace จะรันโปรแกรมของคุณโดยไม่มีการร้องเรียน ฉันใช้การติดตั้ง Ruby (มีอยู่ในหน้าเดียวกัน) ซึ่งไม่อนุญาตให้ใช้ไวยากรณ์ที่คุณใช้
res

8

SED (10 ไบต์ที่แตกต่างกันรวม 13 อย่าง)

s/[aeIou]//gI

ตัวอย่างการใช้งาน:

echo The quick brown fox jumps over the lazy dOg. | sed -e s/[aeIou]//gI

เอาท์พุท:

Th qck brwn fx jmps vr th lzy dg.

แค่สงสัยว่าทำไมIเป็นตัวพิมพ์ใหญ่? มันทำงานได้ดีเมื่อIตัวละครเป็นตัวพิมพ์เล็ก
Konrad Borowski

2
@GlitchMr ฉันเพิ่งทำเช่นนั้นเพื่อเน้นว่าIตัวละครนั้นถูกนำมาใช้ซ้ำ
Cristian Lupascu

1
@christ ฉันไม่คิดว่า OP พูดถึงสระภาษาฝรั่งเศสในโพสต์ของเขา นอกจากนี้ฉันชอบเขียนโปรแกรมไร้เดียงสา :-)
Cristian Lupascu

3
ฉันค่อนข้างแน่ใจöและïใช้ผิดในตัวอย่างของคุณและอีกสองคนเป็นพยัญชนะ ถึงกระนั้นฉันคิดว่าคุณมีจุด แต่วิธีนี้เราอาจลงเอยด้วยการสนับสนุน ò̟̣̱͉̙t̝͔͖͇͙̦̝h̵̩e͎r͓̥ ̱̼̞̰̠͔k̞̝̮̕i̴̘̟̬̠n̻͜d̦̰̼̰͔s͈̺̝̭ ̫̺͔̠̭̖o̼f̲͘ ͓̮v̳̙͔̝o͖̭̮e̻͔̺̬̣ĺs͖̭̮เช่นกัน บางทีแม้แต่ ,, slǝʍoʌuʍopǝpısdn ,, :-)
Cristian Lupascu

1
@ w0lf การใช้เหล่านั้นöและïถูกพบครั้งหนึ่งในภาษาอังกฤษแม้ว่าพวกเขาจะหายไปเกือบแล้วในตอนนี้
Joe

7

C, 22 20 19 อักขระที่แตกต่าง

ตัวอักษรที่จำเป็นสำหรับmain, putchar, getchar= 12
วรรคตอน - (){};= 5.
ผู้ประกอบการ - &-= 2

i;ii;
p(c){
    (c&ii-(-ii-ii))-(i-ii-ii-ii-ii-ii-ii)&&
    (c&ii-(-ii-ii))-(i-ii-ii-ii-ii-ii-ii-i-i-i-i)&&
    (c&ii-(-ii-ii))-(i-ii-ii-ii-ii-ii-ii-ii-(-i-i-i))&&
    (c&ii-(-ii-ii))-(-ii-ii-ii-ii-ii-ii-ii-i-i)&&
    (c&ii-(-ii-ii))-(i-ii-ii-ii-ii-ii-ii-ii-ii-(-i-i))&&
    putchar(c);
}
a(c){c-i&&n(p(c));}
n(c){a(getchar());}
main(){
    n(i---ii---ii---ii---ii---ii---ii---ii---ii---ii---ii---ii---i);
}

mainเรียกใช้พฤติกรรมที่ไม่ได้กำหนด (มากเกินไป--ในหนึ่งบรรทัด)
ฉันไม่สนใจค่านิพจน์และมันลดiiจำนวนครั้งที่ถูกต้อง สามารถแก้ไขได้อย่างง่ายดายโดยการแยกการลดลงด้วย
;แต่มันก็ดีกว่ามากเหมือนเดิม

เวอร์ชันเก่า, 20 ตัวอักษร:
จริง ๆ แล้ว 21 เพราะฉันไม่ได้สังเกตว่าช่องว่างบางช่องมีความสำคัญและต้องนับ แต่มันสามารถถูกแทนที่ด้วยวงเล็บได้อย่างง่ายดาย

ii;iii;c;a;
main(i){
    i=c;i-=--c;
    ii=-i-i-i-i-i-i-i-i-i-i-i;
    iii=i-ii-ii-ii-ii-ii-ii-ii-ii-ii-ii;
    -(c=a=getchar())-i&&main(
        (c&=ii- -ii- -ii)- -            a&&
        -ii-ii-ii-ii-ii-ii-  i-         c&&
        -ii-ii-ii-ii-ii-ii- -i- -i- -i- c&&
        iii- -ii- -ii- -ii-  i-i-i-i-i- c&&
        iii- -ii- -ii- -ii- -i-         c&&
        iii- -ii- -ii-       i-i-i-i-   c&&
        putchar(a));
}

บางทีอาจจะสามารถปรับปรุงเพิ่มเติมโดยการรวบรวมด้วยgcc -nostartfilesและเปลี่ยนชื่อไปmain ถูกลบออก (หลังจากเปลี่ยนชื่อตัวแปรบางตัว) เพิ่ม แต่ฉันต้องใช้ซึ่งเพิ่ม 3 ตัวอักษร แทนที่จะใช้ชื่อใดก็ได้และใช้งานได้ใน Linux วิธีนี้ช่วยลดลงได้ถึง 18 ตัวอักษร แต่ไม่ได้มาตรฐานมาก_startmin_sexit()
_start


6

Perl: อักขระ 8 หรือ 10 ตัว

s/// ทางออก: 10 ชัดเจนรวม 13

(อ้างว่า; ดูด้านล่าง) เทคนิค sed ทำงานเสมอใน Perl เช่นกันและให้ผลผลิตจำนวนชื่อของตัวละครที่แตกต่าง (10):

s/[aeiou]//gi

ตัวอย่างเช่น:

$ echo 'This program will remove VOWELS. So we can speak without them.' | 
  perl -ple 's/[aeiou]//gi'
Ths prgrm wll rmv VWLS. S w cn spk wtht thm.

นั่นคือ 10 ตัวอักษรที่แตกต่างเช่นนี้พิสูจน์:

$ echo 's/[aeiou]//gi' | perl -nle '@s{split//}=(); print scalar keys %s'
10

ปัญหาเกี่ยวกับการแก้ปัญหา sed ก็คือว่ามัน/iเป็นไม่ได้เป็นส่วนหนึ่งของ POSIX sed และจึงไม่ได้เป็นแบบพกพา:

$ echo 'This program will remove VOWELS. So we can speak without them.' | 
  sed -e 's/[aeiou]//gi'
sed: 1: "s/[aeiou]//gi": bad flag in substitute command: 'i'

ที่ทำงานบนระบบ OpenBSD ในทางตรงกันข้ามเนื่องจาก/iเป็นส่วนหนึ่งของ perl มาตรฐานเสมอคุณสามารถไว้วางใจได้เสมอ ไม่เหมือนใคร

หากคุณต้องการรวม“ y” ไว้ในรายการของเสียงสระแน่นอนว่าถ้าคุณใช้เทคนิคเดียวกัน:

$ echo 'This nifty program remove any VOWELS. So we easily can speak without them.' | 
  perl -ple 's/[aeiouy]//gi'
Ths nft prgrm rmv n VWLS. S w sl cn spk wtht thm.

$ echo 's/[aeiouy]//gi' | perl -nle '@s{split//}=(); print scalar keys %s'
11

และตอนนี้ก็คือ 14 ตัวอักษรทั้งหมด

tr[][] วิธีการแก้ปัญหา: 8 รวม 10 ที่แตกต่าง

คุณสามารถใช้tr///เพื่อลบสิ่งที่ตรงกัน Perl ยังสามารถใช้y///นามแฝงของ sed สำหรับtr:

y/aeiou//d

ซึ่งตอนนี้คือ 8 อักขระที่แตกต่างกัน แต่ไม่สามารถใช้ตัวพิมพ์ใหญ่ได้ คุณต้องเพิ่มตัวละครอีก 5 ตัวเพื่อรับมือกับ casemaps:

$ echo 'y/aeiouAEIOU//d' | perl -nle '@s{split//}=(); print scalar keys %s'
13

และแน่นอนว่าตอนนี้ทั้งหมด 15

อย่างไรก็ตามการเพิ่ม“ y” ลงในมิกซ์เสียงสระนั้นไม่ได้เพิ่มจำนวนของอักขระที่แตกต่างเหมือนในs///เวอร์ชั่น:

$ echo 'This nifty program remove any VOWELS. So we easily can speak without them.' | 
  perl -ple 'y/aeiouy//d'
Ths nft prgrm rmv n VOWELS. S w sl cn spk wtht thm.

ดังนั้นยังคงเป็น 8 ต้นฉบับดั้งเดิมที่แยกจากทั้งหมด 11 รายการ:

$ echo 'y/aeiouy//d' | perl -nle '@s{split//}=(); print scalar keys %s'
8

แก้ไข : การบัญชีสำหรับการออกเสียง

แล้วอินพุตเป็นRenée’s naïvetéอย่างไร Rn’s nvtเอาท์พุทที่ถูกต้องแน่นอนควรจะเป็น ต่อไปนี้เป็นวิธีดำเนินการโดยใช้แฟล็ก v5.14 /rสำหรับs///:

$ echo 'Renée’s naïveté' |
  perl5.14.0 -CS -MUnicode::Normalize -nle 'print NFD($_)=~s/[aeiou]\pM*//rgi'
Rn’s nvt

นั่นคือ 27 อักขระที่แตกต่าง:

$ echo 'print NFD($_) =~ s/[aeiou]\pM*//rgi' | 
  perl -nle '@s{split//}=(); print scalar keys %s'
27

คุณสามารถตัดให้เหลือ 26 ถ้าคุณสามารถรับประกันได้ว่าคุณกำลังใช้งานอย่างน้อย v5.10 โดยการสลับprintเป็นsay:

$ echo 'Renée’s naïveté' |
  perl -Mv5.14 -CS -MUnicode::Normalize -nlE 'say NFD($_) =~ s/[aeiou]\pM*//rgi'
Rn’s nvt

$ echo 'say NFD($_) =~ s/[aeiou]\pM*//rgi' | 
  perl -nle '@s{split//}=(); print scalar keys %s'
26

และคุณสามารถทำให้มันลดลงไปที่ 22 ถ้าคุณไม่สนใจว่าจะทำการกำกับออกเสียงแทนที่จะเอามันออก:

$ echo 'Renée’s naïveté' |
  perl -Mv5.14 -CS -MUnicode::Normalize -nlE 'say NFD($_) =~ s/[aeiou]//rgi'
Rń’s n̈vt́

ซึ่ง ... น่าสนใจที่จะพูดน้อยที่สุด :) นี่คือจำนวนที่แตกต่าง:

$ echo 'say NFD($_) =~ s/[aeiou]//rgi' | 
  perl -nle '@s{split//}=(); print scalar keys %s'
22

ขอให้โชคดีที่ได้ภาษาอื่นมาใช้จัดการกำกับโดยใช้ตัวอักษรน้อยกว่านี้มาก!


1
ɢᴏᴏᴅᴘₒᵢⁿᵗαβουτ𝐝𝐢𝐚𝐜𝐫𝐢𝐭𝐢𝐜𝐬𝑦𝑜𝑢𝒈𝒐𝒕𝓽𝓱𝓮𝓻𝓮, 𝒷𝓋𝓉𝔥𝔬𝔴𝕒𝕓𝕠𝕦𝕥𝘀𝘁𝘂𝗳𝗳𝚕𝚒𝚔𝚎𝕋ℍ𝕀𝕊?
หยุดที่จะเปลี่ยนรหัสล็อคซึ่งเป็น

@leftaroundabout ส่วนใหญ่แก้ไขโดยการผูกมัด NFKD ชาวกรีกไม่นับว่าพวกเขาดูคล้ายกันและหมวกขนาดเล็กไม่สลายตัวเป็นประจำ ผลที่ได้คือหรือ"ɢᴏᴏᴅ ᴘnt αβουτ dcrtcs y gt thr, bvt hw bt stff lk THS" "\N{LATIN LETTER SMALL CAPITAL G}\N{LATIN LETTER SMALL CAPITAL O}\N{LATIN LETTER SMALL CAPITAL O}\N{LATIN LETTER SMALL CAPITAL D} \N{LATIN LETTER SMALL CAPITAL P}nt \N{GREEK SMALL LETTER ALPHA}\N{GREEK SMALL LETTER BETA}\N{GREEK SMALL LETTER OMICRON}\N{GREEK SMALL LETTER UPSILON}\N{GREEK SMALL LETTER TAU} dcrtcs y gt thr, bvt hw bt stff lk THS"
tchrist

øแต่มีบางสระละตินที่ไม่ได้มีการสลายตัวเข้ากันได้เช่น
dan04

5
ความท้าทายที่ไม่ได้บอกว่าจะลบสระกำกับ - เพียงแค่ e ฉันโอมึง - ดังนั้นควรให้Renée’s naïveté Rné’s nïvté
บูธตาม

2
ทำไมสระกรีกจะไม่นับถ้าäèïóűเป็นต้น (ไม่ใช่ใน [a, e, i, o, u]!) ทำอะไร? หรือ Cyrillic สำหรับเรื่องนั้น (ซึ่งไม่ใช่ lookalikes แต่มีสระเพียงพอ)
หยุดที่จะเปิดตัวใน

5

GolfScript (7 ไบต์ที่แตกต่างกัน, รวมทั้งหมด 103)

การปรับปรุงที่เพียงพอมากกว่าสำหรับคำตอบของw0lfที่ฉันคิดว่ามันมีคุณสมบัติเป็นคำตอบที่แยกต่างหาก:

[9-99))--9+99))99))))))99)9+))9-9)99--)99-9+9--9+9-))99-9+9)))--9+99-9+-9+9-)99-9+9)))-)99)9-9-)))]''+-

12 ไบต์ที่แตกต่างรวม 13:

'aeiouAEIOU'-

ที่ดี! ฉันหวังว่าฉันจะโหวตคุณอีกครั้ง
Cristian Lupascu

4

Golfscript (8 ไบต์ที่แตกต่างรวม 837)

[9)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 9)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 9)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 9)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 9)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 9)))))))))))))))))))))))))))))))))))))))))))))))))))))))) 9)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 9)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 9)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 9))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))]''+-

คำอธิบาย:

  1. โปรแกรมสร้างอาร์เรย์ของค่าจำนวนเต็มต่อไปนี้: [97 101 105 111 117 65 69 73 79 85](สอดคล้องกับรหัส ASCII ของa,e,i,o,u,A,E,I,O,U) แต่ละหมายเลขถูกแสดงโดยการกดบนสแต็กค่า9ตามด้วยจำนวนที่ต้องการ)(ตัวดำเนินการส่วนเพิ่ม) ตัวอย่างเช่นจำนวนที่67ได้รับโดยใช้9และ 58 )วินาที
  2. การใช้''+อาร์เรย์จะถูกแปลงเป็นสตริง"a,e,i,o,u,A,E,I,O,U"แทนเสียงสระทั้งหมด
  3. จากนั้นจะใช้เครื่องหมายลบ ('-') เพื่อลบเสียงสระทั้งหมดจากสตริงต้นทาง

8 ตัวอักษรที่ไม่ซ้ำกันที่ใช้: [, ], 9, ), +, -, 'และ(space)


4

ไม่สามารถอ่านได้ (2 ชัดเจนรวมทั้งหมด 2666)

เนื่องจากทุกคนโพสต์ทัวริงฉันคิดว่าฉันใช้อันนี้ มันไม่ได้เป็นที่รู้จักมากนัก แต่มันมีอยู่ ( http://esolangs.org/wiki/Unreadable ) และมีอักขระเพียงสองตัว

'""""'""""'""""'""""""'"""'""'""'""'""'""'""'""'""'""'"""'""""'"""""'"""""""'"""'""""'"""
"'""""'""""""'"""'""""""""'"""""""'"""'""""""'""'"""'""'""'""'""'""'""'"""""""'""'"""'"""
"'""""""'""'""'"""'""'""'""'""'""'""'""'"""""""'""'""'"""'""""""'""'""'""'"""'""'""'""'""
'""'""'""'""'"""""""'""'""'""'"""'""""'""""'""""""'""'""'""'""'"""'""'""'""'""'""'""'""'"
"'""'"""""""'""'""'""'""'"""'""""""'""'""'""'""'""'"""'""'""'""'""'""'""'""'""'""'""'""""
"""'""'""'""'""'""'"""'""""'""""""'""'""'""'""'""'""'"""'""'""'""'""'""'""'""'""'""'""'""
'"""""""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'"""'""'""'""'""'""'""'""'""'""
'""'""'""'"""""""'""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'""'""'""'"""'"""""
"""'""""""""'"""""""'""'""'""'""'""'""'""'"""'""""'""""""'""'""'""'""'""'""'""'""'""'"""'
""'""'"""""""'""'""'""'""'""'""'"""'""""'""""""'""'""'""'""'""'""'""'""'"""'""""""""'""""
""""'""""""""'""""""""'"""""""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'"""'""'"
"'"""""""'""'""'""'""'""'"""'""""'""""'""""""'""'""'""'""'""'""'"""'""""""""'""""""""'"""
""""'""'""'""'""'""'"""'""""'""""""'""'""'""'""'""'"""'""""""""'""""""""'""""""""'"""""""
"'"""""""'""'""'""'""'"""'""""""'""'""'""'""'"""'"""""""'""'""'""'"""'""""'""""'""""""'""
'""'""'"""'""'""'""'""'"""""""'""'""'"""'""""""'""'"""'""'""'""'""'""'""'"""""""'""'"""'"
"""'""""""'"""'""'""""""""""'"""""'"""""""'"""'""""'""""'""""""'""'""'""'""'""'""'""'""'"
"'""'""'"""'""'""'""'""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'
"""'""""""""'"""'""""'"""""""""'""""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'"""'"""
""'""""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'"""'""""'""""'""""""'""'""'""'""'""'
""'""'""'""'""'""'""'""'"""'"""""""'"""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'
"""'"""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'"""'""""'"""""""""'"""""""'""'""'""'
""'""'""'""'""'""'""'""'""'""'""'"""'"""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'""'""
'""'"""'""""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'"""'""""""""'"""""""'""'""'
""'""'""'""'""'""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'""'"""
'""""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'""'""'"""'"""'""""'"""""""""'"""""""'"
"'""'""'""'""'""'""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'"""'
""'"""""""'""'""'""'""'""'""'""'""'""'""'""'""'"""'"""'""""""'""'""'""'""'""'""'""'""'""'
""'""'"""'""""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'"""'"""'""""'"""""""""'""""""
""'""""""""'""""""""'""""""""'""""""""'""""""""'""""""""'""""""""'""""""""'"""""""'""'""'
""'""'""'""'""'""'""'""'""'""'"""'"'""""""""'"""""""'"""'"""'""""""'"""'""'""""""""""

(+1) Nice ... ฉันรับการตรวจสอบกับล่ามของคุณ มันยังถือว่าเป็น "ไม่อนุมัติ" แม้ว่าผู้สร้างภาษานี้จะอนุมัติหรือไม่ (ดูเหมือนว่าเป็นเรื่องน่าละอายที่ภาษาไม่ได้ถูกกำหนดโดยใช้อักขระช่องว่างสองตัวแทนที่จะเป็นเครื่องหมายคำพูดเดี่ยวและคู่ o)))
res

@res มันไม่ยากที่จะนำไปใช้ เพียงแค่เลือกสองช่องว่างและแก้ไขล่ามเพื่อให้แทนที่ช่องว่างด้วยคำพูดเดี่ยวและคู่ในตอนแรก!
ComFreek

2

VBA - 25 22 ไบต์ที่แตกต่างกัน (ทั้งหมด 120)

ฉันรู้ว่านี่จะไม่ชนะด้วยจำนวนไบต์ที่แตกต่างกันมากมาย แต่ที่นี่เป็น VBA

(space), (newline), ", ,,( , ), =, a, b, c, d, e, E, I, l, n, O, p, R, S, u,1

Sub S(u)
u=Replace(Replace(Replace(Replace(Replace(u,"u","",,,1),"O","",,,1),"I","",,,1),"e","",,,1),"a","",,,1)
End Sub

* ,,,1อนุญาตให้ละเว้นขนาดตัวพิมพ์ ( 1แทนค่าคงที่vbTextCompare)


คุณไม่ได้นับในE End Subแต่ค่อนข้างดีเมื่อพิจารณาว่าเป็นเบสิค
หยุดที่จะเปิดตัวใน

@leftaroundabout ขอบคุณ! ถูกต้องอย่างแน่นอนเกี่ยวกับEและฉันได้รับการแก้ไข ฉันคิดว่าฉันกังวลเกินไปเกี่ยวกับเนื้อของย่อย ;-)
Gaffi

ที่จริงแล้ว VBA เป็นภาษาที่รองรับการจัดรูปแบบอัตโนมัติคุณสามารถเปลี่ยนคำตอบของคุณให้เป็นตัวพิมพ์เล็ก (หรือด้านบน) และ VBA จะแก้ไขให้ถูกต้องสำหรับตัวเองและเนื่องจากเป็นที่ยอมรับว่าอาจมีการพิจารณาภาษาการจัดรูปแบบอัตโนมัติก่อน จะหมายความว่าคุณสามารถวางอย่างใดอย่างหนึ่งeหรือE
เทย์เลอร์สกอตต์

คุณสามารถกำหนดค่านี้ให้เป็นฟังก์ชั่นหน้าต่างได้ทันทีเช่นเดียว?Replace(Replace(Replace(Replace(Replace(cells(1,1),"u","",,,1),"O","",,,1),"I","",,,1),"e","",,,1),"a","",,,1)กับการนับจำนวน 18 Distinct Bytes ?Replace(s1,)"uOIและ 111 bytes ทั้งหมด
Taylor Scott

1

Python 3.x, 19 ตัวอักษรที่แตกต่าง, รวม 62

print(''.join(x for x in input() if x.lower() not in 'aeiou'))

ไม่ทำงานอย่างถูกต้องกับอินพุตเช่นRenée’s naïvetéคุณรู้
tchrist


1

K, 29. (18 ไบต์ที่แตกต่างกัน)

{i@&~(i:0:0)in(_i),i:"AEIOU"}

ไบต์ที่แตกต่าง: {@ & ~ (: 0) ใน _, "AEIOU}

k){i@&~(i:0:0)in(_i),i:"AEIOU"}`
Hello WoOOrld
"Hll Wrld"

1

ASM - 6 ตัวอักษรที่แตกต่าง 520 ตัวอักษรแหล่งที่มา (MsDOS .com)

ประกอบโดยใช้ A86

db 10110100xb
db 00000110xb
db 10110010xb
db 11111111xb
db 11001101xb
db 00100001xb
db 01110101xb
db 00000001xb
db 11000011xb
db 10001010xb
db 11010000xb
db 10111110xb
db 00011101xb
db 00000001xb
db 10111001xb
db 00001010xb
db 00000000xb
db 01000110xb
db 00101010xb
db 00000100xb
db 01110100xb
db 11101010xb
db 11100010xb
db 11111001xb
db 10110100xb
db 00000110xb
db 11001101xb
db 00100001xb
db 11101011xb
db 11100010xb
db 01000001xb
db 00000100xb
db 00000100xb
db 00000110xb
db 00000110xb
db 00001100xb
db 00000100xb
db 00000100xb
db 00000110xb
db 00000110xb

เพียงแค่เขียนภาษาเครื่องมันจะเป็นอักขระสองตัวที่แตกต่างกัน
ugoren

1

MATL, 8 ไบต์ (แตกต่างกันทั้งหมด)

t13Y2m~)

ลองใช้กับ MATL Online

แค่ตีกอล์ฟขึ้นตรงไม่พบกลอุบายใด ๆ ที่จะนำตัวละครกลับมาใช้ซ้ำเพื่อลดจำนวนไบต์ที่ไม่ซ้ำกัน

13Y2aeiouAEIOUเป็นตัวอักษรที่มี

ใช้ค่าซ้ำtของสตริงอินพุตสร้างอาร์เรย์ตรรกะ (บูลีน) เพื่อระบุตัวอักษรของอินพุตที่ไม่ใช่ ( ~) mถ่านของตัวอักษรนั้นและดัชนี ( )) ที่ตำแหน่งเหล่านั้นเพื่อส่งกลับอาร์เรย์ของอักขระที่ไม่ใช่สระเท่านั้น


0

PHP - 30 ไบต์ที่แตกต่าง

<?=preg_replace('/[aeiou]/i','',fgets(STDIN));

1
คุณเปลี่ยน/[aeiou|AEIOU]/เป็น/[aeiou]/iไม่ได้เหรอ? นอกจากนี้รหัสของคุณยังทำให้|หายไป
Konrad Borowski

0

ทุบตี 26 ชัดเจน 37 รวม

c=$(cat -)
echo "${c//[aeiouAEIOU]/}"

เรียง:

""$$()-///=AEIOU[]aacccceehiootu{}"

scala> code.toList.distinct.length
res51: Int = 26

scala> code.length
res52: Int = 37

"
  ""$$()-///=AEIOU[]aacccceehiootu{}"


scala> code.distinct.sorted 
res56: String = 
"
 "$()-/=AEIOU[]acehiotu{}"

ผลลัพธ์ (เก็บรักษา linefeeds):

echo "This program will remove VOWELS.
So we can now speak without them." | ./cg-6025-remove-vowels.sh
Ths prgrm wll rmv VWLS.
S w cn nw spk wtht thm.

สำหรับ tr ไม่ชัดเจนว่าจะนับอย่างไร: '-d aeiouAEIOU' เป็น 10 หรือ 13:

echo "This program will remove VOWELS.
So we can now speak without them." | tr -d aeiouAEIOU

ฉันพิจารณาใช้ tr แต่ฉันสรุปว่าเนื่องจากไม่ใช่ภาษาการเขียนโปรแกรมมันจะต้องถูกห่อในเชลล์ดังนั้นมันจะนับเนื้อหาทั้งหมดของวันที่tr -d aeiouAEIOU15
Peter Taylor

16 <! - char-threshold-gymnastics ->
ไม่ทราบผู้ใช้

15 ชัดเจน 16 รวม
ปีเตอร์เทย์เลอร์

0

Python (23)

บางคนต้องทำมัน

print filter(lambda x:x not in'aeiou',raw_input())

3
ที่มี "เฉพาะ" 23 ตัวอักขระที่แตกต่าง แต่ล้มเหลวในการทำงานกับสระตัวพิมพ์ใหญ่
หยุดที่จะเปลี่ยนรหัสลับ

โดยการเพิ่มตัวละครใหม่หนึ่งตัวและเปลี่ยนตัวแปรจาก x เป็น c หรือ s คุณสามารถใช้ตัวพิมพ์เล็ก () (หรือตัวพิมพ์ใหญ่) และจัดการกับตัวอักษรตัวใหญ่
fabikw

0

F # 105 121 91 ตัวละคร

Console.ReadLine()|>Seq.filter(fun c->not("aeiouAEIOU".Contains(c)))|>Seq.iter(printf"%c")

อืม ... ฉันเพิ่งสังเกตเห็นว่ารหัสนี้จะทำงานใน Linqpad แต่ไม่ใช่ใน Visual Studio และเนื่องจากฉันไม่รู้สึกลงคะแนนสนับสนุนของตัวเองฉันจะทิ้งมันไว้ที่นี่พร้อมกับความคิดเห็นนี้จนกว่าฉันจะเข้าใจว่ามีอะไรผิดปกติ
Smetad Anarkist

0

สูตร Excel - 19 ไบต์ที่แตกต่างกัน (ทั้งหมด 196 รายการ)

=, S, B, T, (, ), ,, ", a, e, i, o, u, A, E, I, O, U,1

Cell A1: <Value>
Cell B1: =SUBSTITUTE(SUBSTITUTE(A1,"a",""),"e","")
Cell C1: =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B1,"i",""),"o",""),"u",""),"A",""),"E",""),"I",""),"O",""),"U","")

* นี่เป็นฟังก์ชั่นซ้อนกันมากเกินไปที่จะทำงานใน Excel 2003 แต่มีแนวคิดอยู่ที่นั่น

การแยกสูตรออกเป็นสองเซลล์จะได้ผลตามที่ต้องการ - ผลลัพธ์เป็น C1



0

K (oK) 16 ไบต์ 14 อัน

วิธีการแก้:

^[;v,_v:"AEIOU"]

ลองออนไลน์!

คำอธิบาย:

ใช้ยกเว้น ( ^) เพื่อกรองเสียงสระ

^[;v,_v:"AEIOU"] / the solution
^[;            ] / except (^) projection
      v:"AEIOU"  / save vowels as v
     _           / lowercase (_), "AEIOU" => "aeiou"
    ,            / join (,)
   v             / uppercase vowels
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.