Видаліть голосні, не використовуючи занадто багато різних символів


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

А як із входом Renée’s naïveté? Позбавлений голосних, це, звичайно, має бути Rn’s nvtвихідним. Здається, що ці підходи - це все дуже наївно, якщо ви запитаєте мене. :)
tchrist

Якщо ви видалите é, ви можете також видалити y.
користувач невідомий

4
@tchrist, прочитайте запитання. Каже видалити a, e, i, o, u. Ви поза темою, будь ласка, киньте її.
кабіна

1
@tchrist: Тим більше, що виклик не сказав "всі голосні" і перерахував те, що ми повинні вважати знімними.
користувач невідомий

Відповіді:


2

Бінарний пробіл (2 окремі символи, 324 загальні символи)

TTSSSTTSSSSTTTSTTTSSSSSSTTSSSTSSSSSSTSTTSSSTSSSSTSSTSTTSSSTSSSTSSSTSTTSSSTSSSTSTSTSTSTTSSSTSSTSSTSSTSTTSSSTSTSSSSSTSTTSSSTSTSSSTSSTSTTSSSTSTSSTSSSTSTTSSSTSTSSTSTSTSTSTTSSSTSTSTSSTSSTSTTTTSSSTSTTSTTSTTTSSTSTTSSSSTTTSTSTSTSSSTSTTTSSTTTTSTTSTSTTTTSSTTTTTSSSTTTTSTTTTTTSSTSTTSSSSTTTSTSTSSTTSTTTSSSSTTTSTTSSTTSTTSTTTTSSSSTTTTTTTT

де S, T, L позначає пробіл, Tab, Linefeed відповідно. (Безсоромно виходить, перетворивши відповідь Whitespace за допомогою «хлібопечки» в Binary Whitespace - це повідомлення, мабуть, має бути коментарем до його відповіді, але це занадто довго.)

Бінарний пробіл - це Whitespace, перетворений на мову префіксу-коду скрізь, використовуючи TS замість T та використовуючи TT замість L; наприклад , інструкція BWS натиснути -5 на стек SSTSTSSTSTT замість SSTTSTL і т.д. Посилання: а як Автострада перекладач для довільного мови 3-символу і його бінарних версій префікс-коду .

Примітка: Було б просто спроектувати справжній побітовий інтерпретатор для програм Binary Whitespace, які розглядаються як бітові наслідки, а не char-послідовності (наприклад, використання 0,1-бітових значень замість S, T символів відповідно). Вищенаведене було б 324- бітною програмою, що вимагає 41 байт зберігання.


13

Brainfuck, 8 чітко (всього 2121)

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

У окреності символи: <>+-[],.. Працює з перекладачами, які використовують -1для EOF.

$ echo '
Ця програма видалить VOWELS.
Тому ми можемо говорити без них.
'| bf vowel-rm.bf

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


1
Відповідно до вимог, це найкраща відповідь; але OTOH - це найгірше в тому, що він використовує кожен синтаксично значущий символ своєї мови.
dan04

3
@tchrist: Це передбачає ASCII. У будь-якому разі, лише {a, e, i, o, u} є вимогами.
Джон Перді

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байти, щоб зберегти його (я завантажив точне число на пастібін, воно не впишеться в цей коментар). Цікаво, скільки часу знадобиться, щоб відправити його на цей сайт.
Конрад Боровський

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

Пахне Acme :: Відбілюй мене. :)
tchrist

Коли я перетворюю вашу "символічну" програму в Whitespace, вона має фатальні синтаксичні помилки.
res

Це дивно. Чи пам’ятали ви видалити фактичні нові рядки перед перетворенням? Я повинен просто включити base64-кодування фактичного сценарію.
хлібниця

1
Так, я зробив це - версія base64 розшифровує саме те, що я використовую. Ось версія «СТЛ» (з S, T, L кодування пробіл, табуляція, переклад рядка відповідно): LSSSLSSSLTLTSSSSLSSSTSSSSSTLSSSTSSSTSTLSSSTSSTSSTLSSSTSSTTTTLSSSTSTSTSTLSSSTTSS‌​SSTLSSSTTSSTSTLSSSTTSTSSTLSSSTTSTTTTLSSSTTTSTSTLLSSSTLSLSLTSTLSSSLTTTTSSTLTSLLSLS‌​TLLSSLLTSSLLSLLLSSTLSSSLTTTSLSLTSSSLTLSSLSLSLLSSSSLLLL. Схоже, дві проблеми (серед інших) полягають у тому, що ви намагаєтесь натиснути 0 на стек, використовуючи SSSLзамість SSSSL, а також намагаєтесь визначити "порожню" мітку, використовуючи LSSLдля skip.
res

1
Вибачте за затримку ... Я щойно підтвердив, що справді версія Едвіна Брейді 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символи бувають малі.
Конрад Боровський

2
@GlitchMr Я щойно зробив це, щоб підкреслити, що Iперсонаж використовується повторно.
Крістіан Лупаску

1
@tchrist Я не думаю, що ОП згадувала французькі голосні голоси у своєму пості. Також мені подобається писати наївні програми. :-)
Крістіан Лупаску

3
Я майже впевнений, öі ïу вашому прикладі їх неправильно використовують, а інші два - приголосні. Все-таки я думаю, що у вас є пункт. Але таким чином ми можемо в кінцевому підсумку підтримувати ò̟̣̱͉̙t̝͔͖͇͙̦̝h̵̩e͎r͓̥ ̱̼̞̰̠͔k̞̝̮̕i̴̘̟̬̠n̻͜d̦̰̼̰͔s͈̺̝̭ ̫̺͔̠̭̖o̼f̲͘ ͓̮v̳̙͔̝o͔̭̫͕͢ẃ̜͉̪̩̗e̻͔̺̬̣ĺs͖̭̮; можливо навіть ,, slǝʍoʌ uʍop ǝpısdn ,, :-)
Крістіан Лупаску

1
@ w0lf, ці вживання öта ïколись були знайдені англійською мовою, хоча зараз вони майже зникли.
Джо

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в _start. minвидаляються (після деякої перейменування змінної), _sдодаються. Але тоді мені потрібно скористатися exit(), що додає 3 символи.
Замість цього _startможна використовувати будь-яке ім'я, і ​​воно працює в Linux. Це дозволяє знизитися до 18 символів, але дуже нестандартно.


6

Perl: 8 або 10 різних символів

s/// рішення: 10 виразних, 13 усього

Техніка sed (нібито; див. Нижче) 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, ви можете розраховувати на те, що він завжди буде там. На відміну від sed.

Якщо ви хочете включити "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 символів, щоб впоратися із картами справ:

$ 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

EDIT : Облік діакритики

А як щодо вхідних даних Renée’s naïveté? Звичайно, має бути правильний вихід Rn’s nvt. Ось як це зробити, використовуючи /rпрапор v5.14 для 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
виклик не говорить про видалення голосних з діакритикою - просто a, e, i, o, u - так Renée’s naïvetéслід дати Rné’s nïvté.
кабіна

2
Чому грецькі голосні не враховуються, якщо äèïóű тощо (не в [a, e, i, o, u]!) Роблять? Або кирилицею з цього приводу (які не є лукалікерами, але, безумовно, голосними).
перестала повертати проти годинника,

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

Чудово! Я б хотів, щоб я міг повторити вас.
Крістіан Лупаску

4

Гольфскрипт (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 )s
  2. За ''+допомогою масиву перетворюється в рядок "a,e,i,o,u,A,E,I,O,U", що представляє всі голосні
  3. Знак віднімання ('-') потім використовується для віднімання всіх голосних голосів з вихідного рядка

У 8 унікальних персонажів , які були використані: [, ], 9, ), +, -, 'і(space)


4

Нечитабельний (2 чітко, всього 2666)

Оскільки всі публікують Тьюрінгові тарпіти, я подумав, що використаю цю. Він не дуже відомий, але він існує ( http://esolangs.org/wiki/Unreadable ) і має лише два символи.

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

(+1) Приємно ... Я підтвердив це своїм перекладачем . Це все ще вважається "не схваленим", навіть незважаючи на те, що творець цієї мови її схвалив ? (Схоже, прикро, що мова не була визначена з використанням двох символів пробілів замість одно- та подвійних лапок; 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. Але цілком приємно, враховуючи, що це Basic.
перестали повертати проти годинника,

@leftaroundabout Дякую! Абсолютно правильно E, і я виправив. Я думаю, що я занадто переживав за м'ясо Sub. ;-)
Гаффі

Насправді, оскільки VBA як мова підтримує автоматичне форматування, ви можете змінити свою відповідь у будь-якому нижньому (або верхньому) регістрі, і VBA виправить це для себе, і тому що прийнято, що мови автоформатування можуть розглядатися до того, як відбудеться автоматичне форматування, буде означати , що ви можете впасти або eабоE
Тейлор Скотт

ви можете налаштувати це на функцію негайного вікна, як ?Replace(Replace(Replace(Replace(Replace(cells(1,1),"u","",,,1),"O","",,,1),"I","",,,1),"e","",,,1),"a","",,,1)за моїм рахунком, 18 чітких байтів ?Replace(s1,)"uOIі 111 байт усього
Тейлор Скотт

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

К, 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

Просто напишіть машинною мовою, це будуть два чіткі символи.
угорен

1

MATL, 8 байт (усі чітко)

t13Y2m~)

Спробуйте це на MATL Online

Просто прямий гольф, не знайшов жодної хитрості, щоб повторно використовувати символів, щоб зменшити унікальний рахунок.

13Y2є буквальним, що містить aeiouAEIOU.

Візьміть дублікат te вхідного рядка, зробіть логічний (логічний) масив із зазначенням, які літери введення не є ( ~) mвугіллями цього прямого і індексувати ( )) в цих місцях, щоб повернути масив лише неголосних символів.



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{}"

Результат (зберігає лінійну стрічку):

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 aeiouAEIOUдля 15.
Пітер Тейлор

16 <! - char-порог-гімнастика ->
користувач невідомий

15 виразних, 16 всього.
Пітер Тейлор

0

Пітон (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. І оскільки мені не здається голосувати за власний внесок, я залишатиму його тут із цим коментарем, поки не з’ясую, що з цим погано.
Анамед Сметад

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.