Задача состоит в том, чтобы удалить гласные (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
и пространство). Если две или более записей будут иметь одинаковое количество разных байтов, то выполняется резервное количество байтов для этих записей.
code-challenge
string
Конрад Боровски
источник
источник
Renée’s naïveté
? Без гласных, это, конечно, должно бытьRn’s nvt
как выходной. Похоже, что эти подходы все довольно наивно, если вы спросите меня. :)Ответы:
Двоичные пробелы (2 отдельных символа, 324 всего символа)
TTSSSTTSSSSTTTSTTTSSSSSSTTSSSTSSSSSSTSTTSSSTSSSSTSSTSTTSSSTSSSTSSSTSTTSSSTSSSTSTSTSTSTTSSSTSSTSSTSSTSTTSSSTSTSSSSSTSTTSSSTSTSSSTSSTSTTSSSTSTSSTSSSTSTTSSSTSTSSTSTSTSTSTTSSSTSTSTSSTSSTSTTTTSSSTSTTSTTSTTTSSTSTTSSSSTTTSTSTSTSSSTSTTTSSTTTTSTTSTSTTTTSSTTTTTSSSTTTTSTTTTTTSSTSTTSSSSTTTSTSTSSTTSTTTSSSSTTTSTTSSTTSTTSTTTTSSSSTTTTTTTT
где S, T, L обозначает пробел, табуляцию, перевод строки соответственно. (Бесстыдно получается путем преобразования ответа «Пробел» в «Бинарный пробел» - эта публикация, вероятно, должна быть комментарием к его ответу, но она слишком длинная.)
Двоичные пробелы - это пробелы, преобразованные в язык префиксного кода, везде использующие TS вместо T и использующие TT вместо L; например, инструкция BWS для добавления -5 в стек - это SSTSTSSTSTT вместо SSTTSTL и т. д. Ссылка: двусторонний переводчик для произвольного трехсимвольного языка и его версий двоичного префиксного кода .
NB. Было бы просто спроектировать истинный побитовый интерпретатор для программ двоичных пробелов, рассматриваемых как битовые последовательности, а не как последовательности символов (например, используя 0,1 битовые значения вместо символов S, T, соответственно). Выше будет 324- битная программа, требующая 41 байт памяти.
источник
Brainfuck, 8 различных (всего 2121)
В окрености символы:
<>+-[],.
. Работает с переводчиками, которые используют-1
дляEOF
.источник
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}"
. Если вы удалите гласные без сопровождающих их диакритических знаков, вы получите чрезвычайную глупость. Добро пожаловать в храброе новое тысячелетие! :)1.166921663690E+1824
байты для его хранения (я загрузил точное число в pastebin, оно не помещается в этом комментарии). Интересно, сколько времени потребуется, чтобы отправить его на этот сайт.Пробел, 3 балла (218 символов)
Вы знали, что это будет.
(_ = пробел, ⇥ = табуляция, ↲ = перевод строки)
Вот скрипт, закодированный в base64:
И вот программа, написанная в видимой ассемблерной форме:
источник
LSSSLSSSLTLTSSSSLSSSTSSSSSTLSSSTSSSTSTLSSSTSSTSSTLSSSTSSTTTTLSSSTSTSTSTLSSSTTSSSSTLSSSTTSSTSTLSSSTTSTSSTLSSSTTSTTTTLSSSTTTSTSTLLSSSTLSLSLTSTLSSSLTTTTSSTLTSLLSLSTLLSSLLTSSLLSLLLSSTLSSSLTTTSLSLTSSSLTLSSLSLSLLSSSSLLLL
. Похоже, что две проблемы (среди прочих) заключаются в том, что вы пытаетесь вставить 0 в стек, используяSSSL
вместоSSSSL
, а также пытаетесь определить «пустую» метку с помощьюLSSL
forskip
.SED (10 отдельных байтов, всего 13)
Пример использования:
выходы:
источник
I
прописные буквы? Он отлично работает, когдаI
символы в нижнем регистре.I
персонаж используется повторно.ö
иï
в вашем примере их неправильно используют, а два других - согласные. Тем не менее, я думаю, у вас есть точка. Но таким образом мы можем в конечном итоге поддержать t̝͔͖͇͙̦̝h̵̩e͎r͓̥ ̱̼̞̰̠͔k̞̝̮̕i̴̘̟̬̠n̻͜d̦̰̼̰͔s͈̺̝̭ ̫̺͔̠̭̖o̼f̲͘ ͓̮v̳̙͔̝o͔̭̫͕͢ẃ̜͉̪̩̗e̻͔̺̬̣ĺs͖̭̮; возможно даже ,, slǝʍoʌ uʍop ǝpısdn ,, :-)ö
иï
когда-то были найдены на английском языке, хотя сейчас они почти исчезли.C,
222019 различных символов.Буквы , необходимые для
main
,putchar
,getchar
= 12. Знакипунктуации -
(){};
= 5.Операторы -
&-
= 2.main
вызывает неопределенное поведение (слишком много--
в одной строке).Меня не волнует значение выражения, и оно уменьшает
ii
правильное количество раз.Можно легко исправить, разделив декременты с помощью
;
. Но это намного лучше, чем есть.Старая версия, 20 символов:
На самом деле 21, потому что я не заметил, что некоторые пробелы являются значительными и должны быть подсчитаны, но их можно легко заменить на круглые скобки.
Может быть улучшен путем компиляции
gcc -nostartfiles
и переименованияmain
в_start
.min
удалены (после переименования некоторых переменных),_s
добавлены. Но тогда мне нужно использоватьexit()
, который добавляет 3 символа.Вместо этого
_start
можно использовать любое имя, и оно работает в Linux. Это позволяет снизить до 18 символов, но это очень нестандартно.источник
Perl: 8 или 10 различных символов
s///
Решение: 10 отдельных, 13 всегоТехника sed (предполагаемая; см. Ниже) также всегда работает в perl и выдает количество имен различных символов (10):
Например:
Это 10 различных символов, как это доказывает:
Проблема с решением sed заключается в том, что
/i
он не является частью sed POSIX и, следовательно, не является переносимым:Это работает в системе OpenBSD. Напротив, поскольку
/i
он действительно всегда является частью стандартного Perl, вы можете рассчитывать на его постоянное присутствие. В отличие от сед.Если вы хотите включить «y» в список гласных, это, конечно, еще лучше, если вы используете ту же технику:
И это теперь всего 14 символов.
tr[][]
решение: 8 различных 10 всегоВы также можете использовать
tr///
для удаления все, что соответствует. Perl может даже использоватьy///
псевдоним sed дляtr
:который теперь 8 различных символов, но не работает в верхнем регистре. В итоге вам придется добавить еще 5 символов, чтобы справиться с картами дел:
и, конечно же, сейчас всего 15.
Тем не менее, добавление «y» в микс в качестве гласного не увеличивает количество отдельных символов, как в
s///
версии:Так что это все еще только оригинальные 8 из 11:
РЕДАКТИРОВАТЬ : Учет диакритических знаков
А как насчет входов, как
Renée’s naïveté
? Правильный вывод, конечно, должен бытьRn’s nvt
. Вот как это сделать, используя/r
флаг v5.14 дляs///
:Это 27 разных персонажей:
Вы можете обрезать его до 26, если вы можете гарантировать, что вы работаете по крайней мере v5.10, заменяя
print
наsay
:И вы можете уменьшить его до 22, если не возражаете перемещать диакритические знаки вместо их удаления:
На что ... интересно смотреть, если не сказать больше. :) Вот его отчетливый счет:
Удачи вам найти любой другой язык для правильной работы с диакритическими знаками, используя меньше символов, чем этот!
источник
"ɢᴏᴏᴅ ᴘ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"
.ø
.Renée’s naïveté
должно датьRné’s nïvté
.GolfScript (7 отдельных байтов, всего 103)
Достаточно много улучшений по сравнению с ответом w0lf , который я думаю, что он квалифицируется как отдельный:
12 отдельных байтов, всего 13:
источник
Golfscript (8 отдельных байтов, всего 837)
Объяснение:
[97 101 105 111 117 65 69 73 79 85]
(соответствующий кодам ASCIIa,e,i,o,u,A,E,I,O,U
). Каждое число представляется нажатием на стек значения9
, за которым следует необходимое количество)
(операторы приращения). Например, число67
получается с использованием9
и 58)
с''+
, массив преобразуется в строку"a,e,i,o,u,A,E,I,O,U"
, представляющую все гласныеВ 8 уникальных персонажей , которые были использованы:
[
,]
,9
,)
,+
,-
,'
и(space)
источник
Не читается (2 разных, всего 2666)
Поскольку все публикуют сообщения Тьюринга, я решил использовать это. Это не очень известный, но он существует ( http://esolangs.org/wiki/Unreadable ) и имеет только два символа.
источник
VBA -
2522 байта (всего 120)Я знаю, что это не победит с таким большим количеством различных байтов, но здесь это в VBA.
(space)
,(newline)
,"
,,
,(
,)
,=
,a
,b
,c
,d
,e
,E
,I
,l
,n
,O
,p
,R
,S
,u
,1
*
,,,1
позволяет игнорировать регистр. (1
представляет константуvbTextCompare
)источник
E
вEnd Sub
. Но довольно приятно, учитывая, что это Basic.E
, и я исправил. Я думаю, что я был слишком обеспокоен мясом Sub. ;-)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 байтовPython 3.x, 19 отдельных символов, всего 62
источник
Renée’s naïveté
, вы знаете.J, 21 символов (18 различных)
источник
К, 29. (18 различных байтов)
отдельные байты: {@ & ~ (: 0) в _, "AEIOU}
источник
ASM - 6 различных символов 520 исходных символов (MsDOS .com)
Собран с использованием A86
источник
MATL, 8 байт (все разные)
Попробуйте это на MATL Online
Просто прямой гольф, на самом деле не нашел какой-то хитрости для повторного использования персонажей, чтобы уменьшить количество уникальных игроков.
13Y2
это литерал, содержащийaeiouAEIOU
.Возьмите дубликат
t
входной строки, создайте логический (логический) массив, указывающий, какие буквы ввода не являются (~
)m
углами этого литерала, и index ()
) в этих местах, чтобы получить массив только не гласных символов.источник
PHP - 30 различных байтов
источник
/[aeiou|AEIOU]/
в/[aeiou]/i
? Кроме того, ваш код также вызывает|
исчезновение.Баш 26 разных, всего 37
сортировать:
Результат (сохраняет переводы строки):
Для tr не ясно, как считать: '-d aeiouAEIOU' как 10 или 13:
источник
tr -d aeiouAEIOU
для 15.Python (23)
Кто-то должен был это сделать.
источник
F #
105 12191 символовисточник
Формула Excel - 19 отдельных байтов (всего 196)
=
,S
,B
,T
,(
,)
,,
,"
,a
,e
,i
,o
,u
,A
,E
,I
,O
,U
,1
* Это на самом деле слишком много вложенных функций для работы в Excel 2003, но концепция есть.Разделение формул на две ячейки дало желаемый эффект. - Результат в С1.
источник
Нетер, 16 отдельных байтов (всего 17)
Попробуйте онлайн!
Использует регулярное выражение
удалить гласные из входной строки.
источник
K (ок) , 16 байтов, 14 различных
Решение:
Попробуйте онлайн!
Объяснение:
Использование кроме (
^
), чтобы отфильтровать гласные.источник