Hapus vokal tanpa menggunakan terlalu banyak karakter berbeda

10

Tantangannya adalah menghapus vokal (a, e, i, o, u) dari string dari STDIN (ya, saya tahu, sederhana). Anda dapat berharap bahwa program Anda tidak akan dijalankan dengan argumen apa pun di argv.

Contoh:

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

Diubah menjadi:

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

Ada tangkapan. Entri yang menang diputuskan berdasarkan jumlah byte yang berbeda. Misalnya a abmemiliki tiga byte berbeda ( a, bdan spasi). Jika dua atau lebih entri akan memiliki jumlah byte yang berbeda yang sama, maka mundur dilakukan pada jumlah byte untuk entri tersebut.

Konrad Borowski
sumber
9
Sebuah pekerjaan untuk bahasa Whitespace
jfs
Bagaimana dengan input Renée’s naïveté? Dilucuti vokal, yang tentu saja harus Rn’s nvtsebagai output. Sepertinya pendekatan ini semua sangat naif jika Anda bertanya kepada saya. :)
tchrist
Jika Anda menghapus é, Anda mungkin ingin menghapus y juga.
pengguna tidak diketahui
4
@tchrist, baca pertanyaannya. Mengatakan untuk menghapus a, e, i, o, u. Anda keluar topik, silakan jatuhkan.
Stanby
1
@tchrist: Terutama tantangannya tidak mengatakan "semua vokal" dan menyebutkan apa yang harus kita anggap dapat dilepas.
pengguna tidak dikenal

Jawaban:

2

Binary Whitespace (2 karakter berbeda, 324 karakter total)

TTSSSTTSSSSTTTSTTTSSSSSSTTSSSTSSSSSSTSTTSSSTSSSSTSSTSTTSSSTSSSTSSSTSTTSSSTSSSTSTSTSTSTTSSSTSSTSSTSSTSTTSSSTSTSSSSSTSTTSSSTSTSSSTSSTSTTSSSTSTSSTSSSTSTTSSSTSTSSTSTSTSTSTTSSSTSTSTSSTSSTSTTTTSSSTSTTSTTSTTTSSTSTTSSSSTTTSTSTSTSSSTSTTTSSTTTTSTTSTSTTTTSSTTTTTSSSTTTTSTTTTTTSSTSTTSSSSTTTSTSTSSTTSTTTSSSSTTTSTTSSTTSTTSTTTTSSSSTTTTTTTT

di mana S, T, L menunjukkan Spasi, Tab, Linefeed, masing-masing. (Tanpa malu-malu diperoleh dengan mengubah jawaban Whitespace oleh "breadbox" menjadi Binary Whitespace - posting ini mungkin harus menjadi komentar untuk jawabannya, tetapi terlalu panjang.)

Binary Whitespace adalah Whitespace dikonversi ke bahasa kode-awalan oleh mana-mana menggunakan TS bukan T dan menggunakan TT bukan L; misalnya instruksi BWS untuk mendorong -5 ke stack adalah SSTSTSSTSTT bukan SSTTSTL, dll. Tautan: Penerjemah dua arah untuk bahasa simbol 3 yang sewenang-wenang dan versi kode awalan binernya .

NB: Akan lebih mudah untuk merancang juru bahasa bitwise sejati untuk program Binary Whitespace yang dianggap sebagai bit- followingences, daripada char-sequences (misalnya menggunakan 0,1 bit-value bukannya S, T karakter, masing-masing). Di atas akan menjadi program 324- bit yang membutuhkan 41 byte penyimpanan.

res
sumber
13

Brainfuck, 8 berbeda (2121 total)

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

Karakter distict: <>+-[],.. Bekerja dengan penerjemah yang digunakan -1untuk EOF.

$ echo '
Program ini akan menghapus VOWELS.
Jadi sekarang kita dapat berbicara tanpa mereka.
'| bf vowel-rm.bf

Terima kasih sudah membaca VWLS.
S w cn nw spk wtht thm.

tidak lagi mengaktifkan counterclockwis
sumber
1
Dengan persyaratan sebagaimana dinyatakan, ini adalah jawaban terbaik; tetapi OTOH adalah yang terburuk karena menggunakan setiap karakter signifikan secara sintaksis dalam bahasanya.
dan04
3
@tchrist: Ini mengasumsikan ASCII. Bagaimanapun, hanya {a, e, i, o, u} yang ada dalam persyaratan.
Jon Purdy
1
Jadi tidak apa-apa untuk berubah Renée’s naïvetémenjadi Rń’s n̈vt́? Sepertinya itu tidak benar bagi saya, tetapi jika Anda mengatakannya. Karena Anda tidak dapat mengasumsikan normalisasi, sangat masuk akal bahwa Renée’s naïvetéitu benar "Rene\N{COMBINING ACUTE ACCENT}e\N{RIGHT SINGLE QUOTATION MARK}s nai\N{COMBINING DIAERESIS}vete\N{COMBINING ACUTE ACCENT}"- atau jika Anda lebih suka angka ajaib "Rene\x{301}e\x{2019}s nai\x{308}vete\x{301}",. Jika Anda menghapus vokal tanpa diakritik yang menyertainya, Anda mendapatkan kekonyolan yang ekstrim. Selamat datang di Milenium Baru yang Berani! :)
tchrist
1
Gunakan Unary, Anda hanya akan memiliki satu karakter berbeda! :-P esolangs.org/wiki/Unary
marinus
3
@marinus, saya telah mengonversikan ini ke Unary dan saya hanya perlu 1.166921663690E+1824byte untuk menyimpannya (Saya sudah mengunggah angka pastebin ke pastebin, itu tidak cocok dengan komentar ini). Saya bertanya-tanya berapa banyak waktu yang diperlukan untuk mengirimkannya ke situs ini.
Konrad Borowski
10

Spasi, 3 poin (218 karakter)

Kamu tahu itu akan terjadi.

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

(_ = spasi, ⇥ = tab, ↲ = baris baru)

Berikut skrip yang disandikan di base64:

CiAgIAogICAgCgkKCSAgICAgCiAgIAkgICAgIAkKICAgCSAgIAkgCQogICAJICAJICAJCiAgIAkg
IAkJCQkKICAgCSAJIAkgCQogICAJCSAgICAJCiAgIAkJICAJIAkKICAgCQkgCSAgCQogICAJCSAJ
CQkJCiAgIAkJCSAJIAkKCiAgIAkKIAogCgkgCQogICAgCgkJCQkgIAkKCSAKCiAKIAkKCiAgCgoJ
ICAKCiAKCgogIAkKICAgIAoJCQkgCiAKCSAgIAoJCiAgCiAKIAoKICAgIAoKCgo=

Dan inilah program yang ditulis dalam bentuk assembler-like:

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
kotak roti
sumber
Baunya seperti Acme :: Bleach to me. :)
tchrist
Ketika saya mengonversi program "simbolis" Anda ke Whitespace, ia memiliki kesalahan sintaks yang fatal.
res
Itu aneh. Apakah Anda ingat untuk menghapus baris baru yang sebenarnya sebelum melakukan konversi? Saya hanya harus menyertakan pengkodean base64 dari skrip yang sebenarnya.
kotak roti
1
Ya, saya melakukan itu - versi base64 Anda menerjemahkan apa yang saya gunakan. Berikut ini adalah "STL" versi (dengan S, T, L coding Ruang, Tab, linefeed masing-masing): LSSSLSSSLTLTSSSSLSSSTSSSSSTLSSSTSSSTSTLSSSTSSTSSTLSSSTSSTTTTLSSSTSTSTSTLSSSTTSS‌​SSTLSSSTTSSTSTLSSSTTSTSSTLSSSTTSTTTTLSSSTTTSTSTLLSSSTLSLSLTSTLSSSLTTTTSSTLTSLLSLS‌​TLLSSLLTSSLLSLLLSSTLSSSLTTTSLSLTSSSLTLSSLSLSLLSSSSLLLL. Tampaknya ada dua masalah (antara lain) adalah Anda mencoba mendorong 0 ke stack menggunakan, SSSLbukan SSSSL, dan juga mencoba mendefinisikan label "kosong" dengan menggunakan LSSLfor skip.
res
1
Maaf atas keterlambatan ... Saya baru saja mengkonfirmasi bahwa memang versi Edwin Brady's 0,3 (Linux binary) dari interpreter Whitespace memang menjalankan program Anda tanpa keluhan. Saya telah menggunakan implementasi Ruby (tersedia di halaman yang sama), yang melarang sintaks yang Anda gunakan.
res
8

SED (10 byte berbeda, 13 total)

s/[aeIou]//gI

Penggunaan sampel:

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

output:

Th qck brwn fx jmps vr th lzy dg.
Cristian Lupascu
sumber
Hanya ingin tahu, mengapa Ihuruf besar? Ini berfungsi dengan baik ketika Ikarakter huruf kecil.
Konrad Borowski
2
@ GritchMr Saya hanya melakukan itu untuk menekankan bahwa Ikarakter tersebut digunakan kembali.
Cristian Lupascu
1
@tchrist Saya tidak berpikir OP menyebutkan vokal Prancis di posnya. Juga, saya suka menulis program naif. :-)
Cristian Lupascu
3
Saya cukup yakin ödan ïdisalahgunakan dalam contoh Anda dan dua lainnya adalah konsonan. Tetap saja, saya pikir Anda ada benarnya. Tetapi dengan cara ini kita akhirnya dapat mendukung ò̟̣̱͉̙t̝͔͖͇͙̦̝h̵̩e͎r͓̥ ̱̼̞̰̠͔k̞̝̮̕i̴̘̟̬̠n̻͜d̦̰̼̰͔s͈̺̝̭ ̫̺͔̠̭̖o̼f̲͘ ͓̮v̳̙͔̝o͔̭̫͕͢ẃ̜͉̪̩̗e̻͔̺̬̣ĺs͖̭̮ juga; bahkan mungkin ,, slǝʍoʌ uʍop ǝpısdn ,, :-)
Cristian Lupascu
1
@ w0lf, kegunaan ödan ïpernah ditemukan dalam bahasa Inggris, meskipun mereka hampir menghilang sekarang.
Joe
7

C, 22 20 19 karakter berbeda.

Surat yang dibutuhkan untuk main, putchar, getchar= 12.
Tanda Baca - (){};= 5.
Operator - &-= 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);
}

mainmeminta perilaku yang tidak terdefinisi (terlalu banyak --dalam satu baris).
Saya tidak peduli dengan nilai ekspresi, dan itu mengurangi iijumlah yang tepat kali.
Dapat diperbaiki dengan mudah dengan memisahkan decrements dengan ;. Tapi itu jauh lebih baik.

Versi lama, 20 karakter:
Sebenarnya 21, karena saya tidak melihat bahwa beberapa spasi penting dan harus dihitung, tetapi mereka dapat diganti dengan tanda kurung dengan mudah.

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));
}

Mungkin dapat ditingkatkan lebih lanjut, dengan menyusun gcc -nostartfiles, dan mengganti nama mainmenjadi _start. mindihapus (setelah beberapa perubahan nama variabel), _sditambahkan. Tapi kemudian saya harus menggunakan exit(), yang menambahkan 3 karakter.
Alih-alih _start, nama apa pun bisa digunakan, dan itu berfungsi di Linux. Ini memungkinkan turun ke 18 karakter, tetapi sangat tidak standar.

ugoren
sumber
6

Perl: 8 atau 10 karakter berbeda

s/// solusi: 10 berbeda, 13 total

The (konon; lihat di bawah) teknik sed selalu bekerja di perl, juga, dan menghasilkan nomor nama karakter yang berbeda (10):

s/[aeiou]//gi

Sebagai contoh:

$ 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.

Itu 10 karakter berbeda, karena ini membuktikan:

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

Masalah dengan solusi sed adalah bahwa yang /imerupakan bukan bagian dari POSIX sed, dan dengan demikian tidak portabel:

$ 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'

Itu berjalan pada sistem OpenBSD. Sebaliknya, karena /imemang selalu menjadi bagian dari perl standar, Anda dapat mengandalkan selalu ada di sana. Tidak seperti sed.

Jika Anda ingin memasukkan "y" dalam daftar vokal, tentu saja lebih besar jika Anda menggunakan teknik yang sama:

$ 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

Dan sekarang 14 total karakter.

tr[][] solusi: 8 total 10 berbeda

Anda juga dapat menggunakan tr///untuk menghapus apa pun yang cocok. Perl bahkan dapat menggunakan y///alias sed untuk tr:

y/aeiou//d

yang sekarang 8 karakter berbeda, tetapi tidak berfungsi pada huruf besar. Anda akhirnya harus menambahkan 5 karakter lagi untuk mengatasi casemaps:

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

dan tentu saja sekarang 15 total.

Namun, menambahkan "y" ke dalam campuran sebagai vokal tidak menambah jumlah karakter berbeda seperti yang terjadi pada s///versi:

$ 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.

Jadi itu masih hanya 8 yang asli dari total 11:

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

EDIT : Akuntansi untuk Diakritik

Dan bagaimana dengan input Renée’s naïveté? Output yang benar tentunya Rn’s nvt. Berikut cara melakukannya, menggunakan /rbendera v5.14 untuk s///:

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

Itu 27 karakter yang berbeda:

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

Anda dapat memotongnya menjadi 26 jika Anda dapat menjamin bahwa Anda menjalankan setidaknya v5.10 dengan menukar printuntuk 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

Dan Anda bisa menurunkannya menjadi 22 jika Anda tidak keberatan memindahkan diakritik alih-alih menghapusnya:

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

Yang ... menarik untuk dilihat, untuk sedikitnya. :) Inilah hitungan-nya yang berbeda:

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

Semoga berhasil mendapatkan bahasa lain untuk menangani diakritik dengan menggunakan karakter lebih sedikit dari ini!

tchrist
sumber
1
ɢᴏᴏᴅ ᴘₒᵢⁿᵗ αβουτ 𝐝𝐢𝐚𝐜𝐫𝐢𝐭𝐢𝐜𝐬 𝑦𝑜𝑢 𝒈𝒐𝒕 𝓽𝓱𝓮𝓻𝓮, 𝒷𝓋𝓉 𝔥𝔬𝔴 𝕒𝕓𝕠𝕦𝕥 𝘀𝘁𝘂𝗳𝗳 𝚕𝚒𝚔𝚎 𝕋ℍ𝕀𝕊?
lagi mengaktifkan counterclock
@leftaroundabout Sebagian besar sudah diperbaiki dengan melakukan dekomposisi NFKD. Orang-orang Yunani tidak menghitung meskipun mereka terlihat aneh, dan smallcaps tidak terurai menjadi pelanggan tetap. Hasilnya adalah "ɢᴏᴏᴅ ᴘnt αβουτ dcrtcs y gt thr, bvt hw bt stff lk THS", atau "\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
Tetapi apakah ada beberapa vokal Latin yang tidak memiliki dekomposisi kompatibilitas, seperti ø.
dan04
5
Tantangan tidak mengatakan untuk menghapus vokal dengan diakritik - hanya a, e, i, o, u - jadi Renée’s naïvetéharus memberi Rné’s nïvté.
Stanby
2
Mengapa vokal Yunani tidak akan dihitung, jika äèïóű dll. (Tidak dalam [a, e, i, o, u]!)? Atau Cyrillic, dalam hal ini (yang bukan lookalikes, tapi cukup vokal).
Berhenti menghidupkan counterclock
5

GolfScript (7 byte berbeda, total 103)

Cukup banyak perbaikan atas w0lf 's jawaban yang saya pikir itu memenuhi syarat sebagai salah satu yang terpisah:

[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 byte berbeda, total 13:

'aeiouAEIOU'-
Peter Taylor
sumber
Bagus! Saya berharap saya dapat membesarkan hati Anda lagi.
Cristian Lupascu
4

Golfscript (8 byte berbeda, total 837)

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

Penjelasan:

  1. Program ini menciptakan array nilai integer berikut: [97 101 105 111 117 65 69 73 79 85](sesuai dengan kode ASCII a,e,i,o,u,A,E,I,O,U). Setiap angka diwakili dengan mendorong nilai stack 9, diikuti oleh jumlah yang dibutuhkan )(operator increment). Misalnya, nomor 67tersebut diperoleh dengan menggunakan 9dan 58 )s
  2. Dengan menggunakan ''+, array dikonversi menjadi string "a,e,i,o,u,A,E,I,O,U", mewakili semua vokal
  3. Tanda pengurangan ('-') kemudian digunakan untuk mengurangi semua vokal dari string sumber

8 karakter yang unik yang digunakan: [, ], 9, ), +, -, 'dan(space)

Cristian Lupascu
sumber
4

Tidak dapat dibaca (2 berbeda, total 2.666)

Karena semua orang memposting Turing tarpits, saya pikir saya akan menggunakan ini. Itu bukan yang sangat terkenal tetapi memang ada ( http://esolangs.org/wiki/Unreadable ) dan hanya memiliki dua karakter.

'""""'""""'""""'""""""'"""'""'""'""'""'""'""'""'""'""'"""'""""'"""""'"""""""'"""'""""'"""
"'""""'""""""'"""'""""""""'"""""""'"""'""""""'""'"""'""'""'""'""'""'""'"""""""'""'"""'"""
"'""""""'""'""'"""'""'""'""'""'""'""'""'"""""""'""'""'"""'""""""'""'""'""'"""'""'""'""'""
'""'""'""'""'"""""""'""'""'""'"""'""""'""""'""""""'""'""'""'""'"""'""'""'""'""'""'""'""'"
"'""'"""""""'""'""'""'""'"""'""""""'""'""'""'""'""'"""'""'""'""'""'""'""'""'""'""'""'""""
"""'""'""'""'""'""'"""'""""'""""""'""'""'""'""'""'""'"""'""'""'""'""'""'""'""'""'""'""'""
'"""""""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'"""'""'""'""'""'""'""'""'""'""
'""'""'""'"""""""'""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'""'""'""'"""'"""""
"""'""""""""'"""""""'""'""'""'""'""'""'""'"""'""""'""""""'""'""'""'""'""'""'""'""'""'"""'
""'""'"""""""'""'""'""'""'""'""'"""'""""'""""""'""'""'""'""'""'""'""'""'"""'""""""""'""""
""""'""""""""'""""""""'"""""""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'"""'""'"
"'"""""""'""'""'""'""'""'"""'""""'""""'""""""'""'""'""'""'""'""'"""'""""""""'""""""""'"""
""""'""'""'""'""'""'"""'""""'""""""'""'""'""'""'""'"""'""""""""'""""""""'""""""""'"""""""
"'"""""""'""'""'""'""'"""'""""""'""'""'""'""'"""'"""""""'""'""'""'"""'""""'""""'""""""'""
'""'""'"""'""'""'""'""'"""""""'""'""'"""'""""""'""'"""'""'""'""'""'""'""'"""""""'""'"""'"
"""'""""""'"""'""'""""""""""'"""""'"""""""'"""'""""'""""'""""""'""'""'""'""'""'""'""'""'"
"'""'""'"""'""'""'""'""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'
"""'""""""""'"""'""""'"""""""""'""""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'"""'"""
""'""""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'"""'""""'""""'""""""'""'""'""'""'""'
""'""'""'""'""'""'""'""'"""'"""""""'"""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'
"""'"""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'"""'""""'"""""""""'"""""""'""'""'""'
""'""'""'""'""'""'""'""'""'""'""'"""'"""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'""'""
'""'"""'""""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'"""'""""""""'"""""""'""'""'
""'""'""'""'""'""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'""'"""
'""""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'""'""'"""'"""'""""'"""""""""'"""""""'"
"'""'""'""'""'""'""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'"""'
""'"""""""'""'""'""'""'""'""'""'""'""'""'""'""'"""'"""'""""""'""'""'""'""'""'""'""'""'""'
""'""'"""'""""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'"""'"""'""""'"""""""""'""""""
""'""""""""'""""""""'""""""""'""""""""'""""""""'""""""""'""""""""'""""""""'"""""""'""'""'
""'""'""'""'""'""'""'""'""'""'"""'"'""""""""'"""""""'"""'"""'""""""'"""'""'""""""""""
marinus
sumber
(+1) Bagus ... Saya memverifikasi dengan penerjemah Anda . Apakah masih dianggap "tidak disetujui", meskipun pembuat bahasa ini menyetujuinya ? (Tampaknya memalukan bahwa bahasa tersebut tidak didefinisikan menggunakan dua karakter spasi alih-alih tanda kutip tunggal dan ganda; o)))
res
@res Itu seharusnya tidak sulit untuk diterapkan. Pilih saja dua spasi putih dan modifikasi juru bahasa sehingga ia menggantikan spasi putih dengan tanda kutip tunggal dan ganda pada awalnya!
ComFreek
2

VBA - 25 22 byte berbeda (total 120)

Saya tahu ini tidak akan menang dengan banyak byte yang berbeda, tetapi ini dia di 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

* ,,,1memungkinkan untuk mengabaikan kasus. ( 1mewakili konstanta vbTextCompare)

Gaffi
sumber
Anda tidak menghitung Edalam End Sub. Tapi cukup bagus, mengingat itu Basic.
Berhenti menghidupkan counterclock
@leftaroundabout Terima kasih! Sepenuhnya benar tentang E, dan saya sudah diperbaiki. Saya pikir saya terlalu khawatir tentang daging Sub. ;-)
Gaffi
Sebenarnya, karena VBA sebagai bahasa mendukung autoformatting, Anda dapat mengubah jawaban Anda menjadi semua huruf kecil (atau huruf besar) dan VBA akan memperbaiki sendiri, dan karena diterima bahwa bahasa autoformatting dapat dipertimbangkan sebelum terjadi autoformatting, yang akan berarti bahwa Anda dapat menjatuhkan salah satu eatauE
Taylor Scott
Anda dapat mengonfigurasi ini ke fungsi jendela langsung seperti ?Replace(Replace(Replace(Replace(Replace(cells(1,1),"u","",,,1),"O","",,,1),"I","",,,1),"e","",,,1),"a","",,,1)pada hitungan saya 18 Distinct Bytes ?Replace(s1,)"uOIdan 111 bytes total
Taylor Scott
1

Python 3.x, 19 karakter berbeda, total 62

print(''.join(x for x in input() if x.lower() not in 'aeiou'))
dan04
sumber
Itu tidak bekerja dengan baik pada input seperti Renée’s naïveté, Anda tahu.
tchrist
1

J, 21 karakter (18 berbeda)

'AEIOUaeiou'-.~1!:1[1
Gareth
sumber
1

K, 29. (18 byte berbeda)

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

byte berbeda: {@ & ~ (: 0) di _, "AEIOU}

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

ASM - 6 karakter berbeda 520 karakter sumber (MsDOS .com)

Dirakit menggunakan 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
Mendesis
sumber
Cukup tulis bahasa mesin, itu akan menjadi dua karakter yang berbeda.
ugoren
1

MATL, 8 byte (semuanya berbeda)

t13Y2m~)

Cobalah di MATL Online

Hanya golf lurus, tidak benar-benar menemukan trik untuk menggunakan kembali karakter untuk mengurangi bytecount yang unik.

13Y2adalah literal yang mengandung aeiouAEIOU.

Ambil duplikat tdari string input, buat array logis (boolean) yang menunjukkan huruf input mana yang bukan ( ~) mbara dari literal itu, dan indeks ( )) di tempat-tempat itu, untuk mengembalikan array yang hanya terdiri dari karakter non-vokal.

sundar - Pasang kembali Monica
sumber
0

PHP - 30 byte berbeda

<?=preg_replace('/[aeiou]/i','',fgets(STDIN));
l0n3sh4rk
sumber
1
Tidak bisakah Anda berubah /[aeiou|AEIOU]/menjadi /[aeiou]/i? Selain itu, kode Anda juga menyebabkan |menghilang.
Konrad Borowski
0

bash 26 berbeda, 37 total

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

diurutkan:

""$$()-///=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{}"

Hasil (mempertahankan umpan baris):

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.

Untuk tr, tidak jelas bagaimana cara menghitung: '-d aeiouAEIOU' sebagai 10 atau 13:

echo "This program will remove VOWELS.
So we can now speak without them." | tr -d aeiouAEIOU
Pengguna tidak diketahui
sumber
Saya mempertimbangkan untuk menggunakan tr, tetapi saya menyimpulkan bahwa karena ini bukan bahasa pemrograman maka harus dibungkus dengan shell, jadi itu akan menghitung teks lengkap tr -d aeiouAEIOUuntuk 15.
Peter Taylor
16 <! - char-threshold-gymnastics ->
pengguna tidak diketahui
15 berbeda, 16 total.
Peter Taylor
0

Python (23)

Harus ada yang melakukannya.

print filter(lambda x:x not in'aeiou',raw_input())
beary605
sumber
3
Itu "hanya" 23 karakter yang berbeda. Tetapi gagal bekerja pada vokal huruf besar.
Berhenti menghidupkan counterclock
Dengan menambahkan satu karakter baru dan mengubah variabel dari x menjadi c atau s, Anda dapat menggunakan huruf kecil () (atau huruf besar) dan juga berurusan dengan huruf kapital.
fabikw
0

F # 105 121 91 karakter

Console.ReadLine()|>Seq.filter(fun c->not("aeiouAEIOU".Contains(c)))|>Seq.iter(printf"%c")
Smetad Anarkist
sumber
Hmmm ... Saya baru memperhatikan bahwa kode ini akan berfungsi di Linqpad tetapi tidak di Visual Studio. Dan karena saya merasa tidak suka memilih kontribusi saya sendiri, saya akan meninggalkannya di sini dengan komentar ini sampai saya mencari tahu apa yang salah dengannya.
Smetad Anarkist
0

Formula Excel - 19 byte berbeda (total 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","")

* Ini sebenarnya terlalu banyak fungsi bersarang untuk bekerja di Excel 2003, tetapi konsepnya ada di sana.

Memisahkan formula menjadi dua sel mencapai efek yang diinginkan. - Hasilnya di C1.

Gaffi
sumber
0

Noether, 16 byte individu (17 total)

I"[aeiouAEIOU]"-P

Cobalah online!

Menggunakan regex

[aeiouAEIOU]

untuk menghapus vokal dari input string.

Peluruhan Beta
sumber
0

K (oK) , 16 byte, 14 berbeda

Larutan:

^[;v,_v:"AEIOU"]

Cobalah online!

Penjelasan:

Menggunakan exception ( ^) untuk menyaring vokal.

^[;v,_v:"AEIOU"] / the solution
^[;            ] / except (^) projection
      v:"AEIOU"  / save vowels as v
     _           / lowercase (_), "AEIOU" => "aeiou"
    ,            / join (,)
   v             / uppercase vowels
streetster
sumber