Удалить гласные, не используя слишком много разных символов


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. Вы не по теме, пожалуйста, бросьте это.
Boothby

1
@tchrist: В частности, задача не гласила «все гласные» и перечислила то, что мы должны считать съемным.
пользователь неизвестен

Ответы:


2

Двоичные пробелы (2 отдельных символа, 324 всего символа)

TTSSSTTSSSSTTTSTTTSSSSSSTTSSSTSSSSSSTSTTSSSTSSSSTSSTSTTSSSTSSSTSSSTSTTSSSTSSSTSTSTSTSTTSSSTSSTSSTSSTSTTSSSTSTSSSSSTSTTSSSTSTSSSTSSTSTTSSSTSTSSTSSSTSTTSSSTSTSSTSTSTSTSTTSSSTSTSTSSTSSTSTTTTSSSTSTTSTTSTTTSSTSTTSSSSTTTSTSTSTSSSTSTTTSSTTTTSTTSTSTTTTSSTTTTTSSSTTTTSTTTTTTSSTSTTSSSSTTTSTSTSSTTSTTTSSSSTTTSTTSSTTSTTSTTTTSSSSTTTTTTTT

где S, T, L обозначает пробел, табуляцию, перевод строки соответственно. (Бесстыдно получается путем преобразования ответа «Пробел» в «Бинарный пробел» - эта публикация, вероятно, должна быть комментарием к его ответу, но она слишком длинная.)

Двоичные пробелы - это пробелы, преобразованные в язык префиксного кода, везде использующие TS вместо T и использующие TT вместо L; например, инструкция BWS для добавления -5 в стек - это SSTSTSSTSTT вместо SSTTSTL и т. д. Ссылка: двусторонний переводчик для произвольного трехсимвольного языка и его версий двоичного префиксного кода .

NB. Было бы просто спроектировать истинный побитовый интерпретатор для программ двоичных пробелов, рассматриваемых как битовые последовательности, а не как последовательности символов (например, используя 0,1 битовые значения вместо символов S, T, соответственно). Выше будет 324- битная программа, требующая 41 байт памяти.


13

Brainfuck, 8 различных (всего 2121)

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

В окрености символы: <>+-[],.. Работает с переводчиками, которые используют -1для EOF.

$ echo '
Эта программа удалит гласные.
Так что теперь мы можем говорить без них.
'| bf vowel-rm.bf

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


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байты для его хранения (я загрузил точное число в pastebin, оно не помещается в этом комментарии). Интересно, сколько времени потребуется, чтобы отправить его на этот сайт.
Конрад Боровски

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 :: Bleach для меня. :)
tchrist

Когда я конвертирую вашу «символическую» программу в Whitespace, она имеет фатальные синтаксические ошибки.
Рез

Странно. Помните ли вы, чтобы удалить реальные переводы строк перед преобразованием? Я должен просто включить base64-кодировку самого скрипта.
хлебница

1
Да, я так и сделал - ваша версия base64 точно соответствует тому, что я использую. Вот версия «СТЛ» (с S, T, L кодирования пробел, табуляция, перевод строки соответственно): LSSSLSSSLTLTSSSSLSSSTSSSSSTLSSSTSSSTSTLSSSTSSTSSTLSSSTSSTTTTLSSSTSTSTSTLSSSTTSS‌​SSTLSSSTTSSTSTLSSSTTSTSSTLSSSTTSTTTTLSSSTTTSTSTLLSSSTLSLSLTSTLSSSLTTTTSSTLTSLLSLS‌​TLLSSLLTSSLLSLLLSSTLSSSLTTTSLSLTSSSLTLSSLSLSLLSSSSLLLL. Похоже, что две проблемы (среди прочих) заключаются в том, что вы пытаетесь вставить 0 в стек, используя SSSLвместо SSSSL, а также пытаетесь определить «пустую» метку с помощью LSSLfor skip.
Рез

1
Извините за задержку ... Я только что подтвердил, что действительно версия 0.3 (двоичная версия Linux) интерпретатора Whitespace Эдвина Брейди действительно запускает вашу программу без жалоб. Я использую реализацию Ruby (доступную на той же странице), которая запрещает синтаксис, который вы используете.
отдых

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 (предполагаемая; см. Ниже) также всегда работает в 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он не является частью sed POSIX и, следовательно, не является переносимым:

$ 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 символов, чтобы справиться с картами дел:

$ 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. Вот как это сделать, используя /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
вызов не говорит, чтобы удалить гласные с диакритическими знаками - просто, да, я, о, ты - так Renée’s naïvetéдолжно дать Rné’s nïvté.
Boothby

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

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) Хорошо ... Я проверил это с твоим переводчиком . Это все еще считают "неутвержденным", даже если создатель этого языка одобрил это ? (Жаль, что язык не был определен с использованием двух пробельных символов вместо одинарных и двойных кавычек; 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é, вы знаете.
августа


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 .

Возьмите дубликат tвходной строки, создайте логический (логический) массив, указывающий, какие буквы ввода не являются ( ~) mуглами этого литерала, и index ( )) в этих местах, чтобы получить массив только не гласных символов.


0

PHP - 30 различных байтов

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

1
Не могли бы вы переодеться /[aeiou|AEIOU]/в /[aeiou]/i? Кроме того, ваш код также вызывает |исчезновение.
Конрад Боровски

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-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. И поскольку я не хочу голосовать за свой собственный вклад, я оставлю его здесь с этим комментарием, пока не выясню, что с ним не так.
Сметад Анаркист

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, но концепция есть.

Разделение формул на две ячейки дало желаемый эффект. - Результат в С1.



0

K (ок) , 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.