Учитывая входную строку , содержащей только символы A-Z
, a-z
и пробела, удалить все вхождения прописных и строчных версии первого символа строки (если первый символ A
удалить все A
с и a
с, если первым символом (пробел) удалить все пробелы) и распечатайте вывод.
Примеры случаев:
Testing Testing One Two Three
->esing esing One wo hree
Programming Puzzles and Code Golf
->rogramming uzzles and Code Golf
How much wood would a woodchuck chuck if a woodchuck could chuck wood
->ow muc wood would a woodcuck cuck if a woodcuck could cuck wood
{space}hello world
->helloworld
welcome to WATER WORLD
->elcome to ATER ORLD
Это код-гольф , выигрывает самый короткий код в байтах!
Заметки:
- Ввод всегда будет 2 или более действительных символов.
- Вывод никогда не будет пустой строкой.
Ответы:
Pyth, 7 байт
Попробуйте онлайн: демонстрация или тестовый набор
Ницца. Новый оператор Bifurcate (всего 8 дней) помогает здесь сохранить один символ. Я думаю, что это первый код, который использует эту функцию.
объяснение
источник
брейкфук, 219 байт
(Требуется лента, которая позволяет указателю переходить к минусам или петлям до конца, если он пытается. Также требует
,
возврата 0 в EOF. По моему опыту, большинство интерпретаторов удовлетворяют этим требованиям по умолчанию.)На самом деле это оказалось довольно легко! Я не был бы удивлен, если это пригодно для игры в гольф (у меня есть некоторое представление о том, где могут быть потраченные впустую байты, но я не супер уверен, удастся ли это удастся). Тем не менее, заставить его работать на самом деле не было проблемой вообще.
Этот код обрабатывает все со значением ASCII ниже 97 как символ в верхнем регистре. Если первым символом является пробел, он будет пытаться удалить любые вхождения «строчных букв» (то есть
chr(32+32)
, то есть@
) из строки. Это нормально, потому что когда-либо будут присутствовать только буквы и пробелы.С комментариями:
источник
Perl, 13 байт
Считая Шебанг как единое, ввод берется из стандартного ввода.
Образец использования
источник
substr
но, конечно, вы придумали гораздо лучший способ!perl -p script.pl
. Параметры командной строки обычно учитываются как один байт каждый, по крайней мере, на этом сайте.CJam, 8 байт
Попробуйте онлайн в интерпретаторе CJam .
Как это работает
источник
~
Хотя это называется .)Pyth, 8 байт
Попробуйте онлайн
Использует Python-версию Python
str.title
для преобразования строки первой буквы дважды в форму"<Upper><Lower>"
. Затем он удаляет каждый элемент из ввода, который находится в этой строке. Пространства работают нормально, потому что они не затронутыstr.title
.источник
MATLAB, 28 байт
источник
JavaScript (ES6),
3836 байтЭто не зависит от
flags
параметра, который зависит от Mozilla.CoffeeScript,
3937 байтНа этот раз в JS короче, чем CoffeeScript!
источник
new
это необязательно, поэтомуRegExp(x[0],'gi')
короче.PHP, 41 байт
Принимает один аргумент командной строки . Короткие открытые теги должны быть включены для PHP <5.4.
источник
$argv[1]
:<?=str_ireplace(($a=$argv[1])[0],'',$a);
Perl, 27 байт
Это полная программа, хотя она основана на двух регулярных выражениях, которые, вероятно, могут быть скопированы в программу Retina для сохранения байтов при вводе / выводе.
Изменить: Похоже, что это уже было побито с кем-то, используя эту
-p
опцию. Ох, и использовать$&
вместо$1
.источник
#!perl -p
он все равно будет на два байта короче$_=<>;print
.-p
делает опция. На самом деле я не могу внести какие-либо правки в свой ответ, просто сделав его идентичным вашему.Минколанг 0,9 ,
2333 байтаЭто никоим образом не победит, но это весело!
Попробуй это здесь.
объяснение
(Это может дать сбой в некоторых крайних случаях, например, если первый символ является символом.)
источник
TECO ,
1514 байтовРедактирование текста? Если вы сомневаетесь, используйте текстовый редактор и COrrecter!
После долгих проб и ошибок (в основном ошибок), я думаю, что это самая короткая универсальная программа TECO, которая сделает эту работу.
Или в удобочитаемой форме
$
представляет управляющий ключ и^E
представляет последовательностьCTRL
+E
. В зависимости от вкуса используемого вами TECO, он может распознавать эти замены ASCII или нет.Согласно руководству, некоторые диалекты TECO принимают эту 13-байтовую версию (используя команду поиска и удаления вместо отдельных команд «найти» и «удалить»):
источник
Пип, 8 байт
Принимает строку в качестве аргумента командной строки (нужно будет заключать в кавычки, если она содержит пробелы). Объяснение:
Это решение имеет дополнительный бонус работы со строками, содержащими любые печатные символы ASCII. (
X
Оператор с обратной косой чертой экранирует все, что не является буквенно-цифровым.)источник
Python, 66 знаков
источник
Юлия, 34 байта
Это создает безымянную функцию, которая принимает строку и возвращает строку. Он создает регистронезависимое регулярное выражение из первого символа на входе и заменяет все его вхождения пустой строкой.
источник
Mathematica, 47 байт
источник
R, 43 байта
Это полная программа, которая читает строку из STDIN и записывает измененный результат в STDOUT.
Ungolfed:
источник
Рубин, 25 байт
Анонимная функция:
Полная программа, 29 байт:
источник
Python, 61 байт (слишком много)
Я думаю, что есть лучший способ сделать это, но я не могу найти это. Есть идеи по удалению
"".join(...)
?источник
x[0]+x[0].swapcase()
.(x[0]*2).title()
.lambda x:x.replace(x[0].upper(),'').replace(x[0].lower(),'')
- 60 байтовУроборос , 61 байт
Эй, это короче, чем C ++! Ха.
В Уроборосе каждая строчка программы представляет собой змею с хвостом во рту. Управление потоком осуществляется путем поедания или регургитации участков хвоста с помощью общего стека для синхронизации между змеями.
Змея 1
i.
читает символ из ввода и дублирует его..91<\64>*32*
толкает,32
если символ был заглавной буквой, в0
противном случае.+
При преобразовании этого символа в верхний регистр преобразуются строчные буквы, а строчные буквы и пробелы остаются неизменными. Все это происходит в стеке snake 1, поэтому теперь мы помещаем значение в общий стек (m
) для обработки snake 2. Наконец,1(
ест последний символ хвоста змеи 1. Так как именно там находится указатель инструкции, змея умирает.Змея 2
)
не имеет эффекта в первый раз.L!34*
толкает,34
если общий стек пуст,0
иначе. Затем мы.
копируем и(
едим столько персонажей.(
мы только что выполнили. Таким образом, управление возвращается к началу строки, где)
регургитирует только что съеденные символы (предварительно выдвинув лишнюю копию34
) и повторяет тест длины стека.0
, и выполнение продолжается:Si
переключается на общий стек и вводит другой символ..1+!24*
толкает,24
если этот символ был -1 / EOF, в0
противном случае. На EOF(
глотает 24 символа - включая IP - и змея умирает. В противном случае выполнение продолжается.Y
возвращает копию вершины общего стека (символ, который мы только что прочитали) в собственный стек Snake 2 для будущего использования. Затем.@@.@=@.@32-=\@+2*
вычисляется, равен ли новый символ первому символу или первому символу минус 32, нажимая,2
если так, а0
если нет. Мы.
дублируем и(
едим столько символов:(
срыгивает 2 только что съеденных символа, и выполнение продолжается со следующим персонажем.y
возвращаем символ из стека змеи 2,o
выводим его, а затем зацикливаем.Увидеть это в действии
Показать фрагмент кода
источник
C, 60 байтов
n,c,d;main(){for(;read(0,&c-n,1);n=2)d-c&31&&n&&putchar(d);}
Редактировать: Исправлена ошибка, из-за которой нулевой байт печатался в начале
источник
Python 2, 43
Это в некоторой степени основано на моем ответе Pyth, но также связано с некоторыми комментариями ThomasKwa и xnor отсюда . Главным образом, потому что я хотел, чтобы этот ответ существовал.
источник
Vim, 30 нажатий клавиш
Извините, что обнаружили, но я не вижу никакого ответа Vim D:
Объяснение:
If<Right>xh@x.<Esc>
Напишите (рекурсивный) макрос вокруг первого символа.
Перемещение влево (
h
) необходимо, чтобы остаться слева от следующего непрочитанного символа.Добавление любого символа (
.
) в конце необходимо в случае удаления второго символа."xy0
Скопируйте макрос в реестрx
7|
Перейти к 7-му символу@x
Запустите макрос изx
2|~
Переключите регистр первого символа (фактически на 2-й позиции)0"xd7|
Вырезать макрос в реестреx
@x
Запустите макрос изx
0x
Удалить заполнитель.
источник
:D
Я всегда приветствую Vim!Haskell, 52 байта
источник
r(h:s)=[c|c<-s,t c/=t h]
.TI-BASIC, 164 байта
Для графических калькуляторов серии TI-83 + / 84 +.
TI-BASIC явно не подходит для работы.
Я не уверен на 100%, но я потратил на это более шести часов, и это, кажется, самое короткое из возможных решений.
Чтобы проверить это с помощью ввода не прописными буквами (или ввести его в свой калькулятор), создайте другую программу с содержимым
AsmPrgmFDCB24DEC9
и запустите ее,Asm([whatever you named it]
чтобы включить режим ввода строчных букв.источник
Луа,
9378 байтисточник
Common Lisp, 77
Прокляните эти длинные имена функций (и скобки (но я все равно люблю их (: 3))).
источник
C
6561 байтКомпилируется с предупреждениями. Читает строку из
argv[1]
. Интернет примеристочник
main(int c,char**v)
доmain(c,v)char**v;
и(**v-c)%32
до**v-c&31
.C ++,
1009998 байтЕще один байт, чтобы получить меньше 100.
getchar()
возвращается,-1
когда он читает конец потока, поэтому он~
находится вfor
цикле. (~-1 == 0
)Ungolfed
источник
&&putchar(c)
вместо?putchar(c):0
?f-c&31
как в ответе С?AppleScript,
209201 байтМое единственное утешение в том, что я победил Брейнфак.
Как это работает, я принимаю ввод
a
, получаю длинуa
и отмечаю ее какn
, и устанавливаю выходную переменнуюo
. Для каждого найденного символа, который не содержит первый символ (a's character 1
), я присоединяю его кo
. Последняя строка печатаетсяo
.Примечание: это автоматически поддерживает все Unicode. с:
источник
My only consolation is that I beat Brainfuck.
Похоже, мне лучше поиграть в гольф;)Сетчатка , 16 байт
Сохраните код с завершающим переводом строки и запустите его с
-s
флагом.Как это работает: завершающий перевод строки делает это этапом замены, так что любые совпадения данного регулярного выражения заменяются пустой строкой. В
i
очереди на режиме без учета регистра , который также делает обратные_связь нечувствительна к регистру. Наконец, регулярное выражение просто сопоставляет и захватывает отдельные символы, а затем проверяет, является ли первый символ в строке одинаковым (с учетом регистра), используя обратную ссылку.источник