Котенок очень похож на кота. Некоторые из основных отличий - привлекательность, недостаток интеллекта и размер. Точно так же cat
команда отличается от kitten
команды. К счастью, в этом случае есть только одно отличие. В команде «котенок» все заглавные буквы заменяются строчными.
Задача
Для реализации программы, которая ведет себя аналогично cat
. Все символы [A-Z]
выводятся в нижнем регистре.
вход
Список файлов в качестве аргументов командной строки. Если в списке нет файлов, считайте из стандартного ввода. Входные данные могут содержать непечатаемые символы и символы вне диапазона ASCII.
Выход
Если входные данные представляют собой набор файлов, объедините содержимое и выведите все символы в нижнем регистре. При чтении из STDIN выведите содержимое STDIN со всеми заглавными буквами в нижнем регистре.
Примечание: делайте символы только [A-Z]
строчными. Это недопустимо, если любые другие символы сделаны строчными.
Примеры
$ echo "HelLo" > file.txt
$ kitten file.txt
hello
$ echo "Good Bye" | kitten
good bye
$ echo "Ä" | kitten
Ä
Как обычно с code-golf , выигрывает наименьшее количество байтов.
Leaderboards
Вот фрагмент стека, который генерирует как регулярную таблицу лидеров, так и обзор победителей по языкам.
Чтобы убедиться, что ваш ответ обнаружен, начните его с заголовка, используя следующий шаблон уценки:
# Language Name, N bytes
где N
размер вашего представления. Если вы улучшите свой счет, вы можете сохранить старые результаты в заголовке, вычеркнув их. Например:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Если вы хотите включить в заголовок несколько чисел (например, потому что ваш счет равен сумме двух файлов или вы хотите перечислить штрафы за флаг интерпретатора отдельно), убедитесь, что фактический результат является последним числом в заголовке:
# Perl, 43 + 2 (-p flag) = 45 bytes
Вы также можете сделать название языка ссылкой, которая затем будет отображаться во фрагменте списка лидеров:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
источник
[A-Z]
ожидаете ввода Unicode, явно указав «Только нижний регистр символов»?Ü
,Ñ
и любит?Ответы:
Perl, 6 байт
5-байтовый код + 1-байтовая командная строка
Пример использования:
Подтверждение правильного поведения Unicode:
источник
Баш, 19 байт
Лучший способ сделать котят - использовать настоящих кошек.
Пример запуска
источник
man woman
шутки ...Perl, 11 байт
10-байтовый код + 1-байтовая командная строка
Пример использования:
источник
Python 3, 77 байт
источник
Рубин, 13 байт
Количество байтов включает 1 байт для
p
флага. Запустите его следующим образом:ruby -p kitten.rb
.Принимает данные из аргументов стандартного файла или файла, как взрослый кот.
источник
Ä
?echo "HelloÉ" | ruby -p kitten.rb
->helloÉ
PowerShell, 112 байт
Ужасно нечитаемый Вот немного расширенная версия ниже:
Определяет внутреннюю функцию,
l
которая перебирает цикл от 97 до 112 (то есть, от ASCIIa
до ASCIIz
). Разбивает входную строку над этим символом (yay регистронезно по умолчанию), объединяет его с «правильным» нижним регистром. Обратите внимание, что да, это означает, что «Test» кратко станет «T st», так как онe
, например, выполняет итерации . Не влияет на вывод.Вторая половина - хитрость, чтобы выяснить, есть ли у нас конвейерный ввод (эквивалентный stdin для PowerShell) или ввод из командной строки. Специальная переменная
$args
присутствует только в том случае, если присутствует ввод из командной строки, поэтому мы перебираем каждый из нихgc
(дляGet-Content
) и отбрасываем его доl
. В противном случае, мы просто подонок наш$input
доl
. Обратите внимание, что мы могли бы поменять местами наши операторы if / else (то есть,if($input)
), но поскольку «input» на один символ длиннее, чем «args», этот путь короче.источник
"String".ToLower()
также строчные символы Юникода, что противоречит правилам. Есть много вещей, которые PowerShell не делает правильно в отношении Unicode, но, к сожалению, это один из примеров того, что он работает правильно.Python 2, 53 байта
источник
R, 97 байт
Использование:
источник
CoffeeScript , 292 байта
Использование:
Мое первое участие в Codegolf, так что, пожалуйста, не будь грубым :).
Конечно, этот код можно использовать больше, и кофе / javascript не лучший выбор, но он делает то, что ожидал.
Когда он читает аргументы, он также заботится о существовании файла (если файл не существует, строка задается).
Любая помощь или совет по улучшению этого кода приветствуется!
источник
Юлия, 123 байта
Ungolfed:
источник
CJam, 18 байт
Список файлов должен быть представлен в виде URL-адресов, что является единственным форматом, который понимает CJam.
Пример работает
Как это устроено
источник
Python 2,
10010297 байтФункциональность исправлена (и добавлено 4 байта) с помощью matsjoyce. К счастью, я сохранил два байта, переключившись на Python 2.
Принимает аргументы из командной строки или из STDIN, если аргументы не найдены.
Это злоупотребляет аргументами по умолчанию некоторых функций. По умолчанию
open
используется текстовый режим только для чтения, который является именно тем, что мы хотим.read
, если вызывается без аргументов, вернет весь текст в потоке.Ungolfed:
источник
input
отсутствия оценки, я мог бы переключиться на Python 2 и удалить скобкиprint
.Python 3,
124123 байтаПитон ест котят!
источник
C
106108 байтРедактировать: Исправлена ошибка, которая появлялась при сжатии байтов. Stdin не работал, теперь это так.
Я почти уверен, что смог бы сжать несколько байтов, но вот легкое для восприятия, совсем не оскорбительное выражение:
И несколько более аккуратно отформатированная версия для чтения:
источник
Mathematica, 66 байт
Называется
Mathematica уже имеет
ToLowerCase
функцию, но она также преобразует специальные (Unicode и математические) символы. Так что мне пришлось его котировать. Эта функция будет принимать любой вход.источник
C #,
230226 байтUngolfed:
источник
Хаскелл, 133
Обработка арг в стиле кошки происходит из этого урока , а затем перестраивается для бритья персонажей.
Поясняю
l
, функция в нижнем регистре один символ:sum[32|condition]
это более короткая формаif condition then 32 else 0
.[x..]!!count
isiterate succ x !! count
istoEnum $ fromEnum x + count
и короче, чем импорт и использованиеData.Char.toLower
с условием ограничить его до ASCII.'@'
и'['
являются ли символы непосредственно предшествующимиA
и последующимиZ
, чтобы я мог использовать<
вместо<=
.Спасибо Anders Kaseorg за помощь
sum[...|...]
и[x..]!!
трюки.источник
l x=[x..]!!sum[32|x>'@',x<'[']
C #, 342 байта
C #, 319 байт
одинарный, как указано выше:
источник
SILOS 179 символов
Не стесняйтесь попробовать этот код онлайн!
По сути это переводится в pusedocode.
источник
C, 91 байт
C 98 байт
Хотя если читаемость имела значение больше, чем число байтов, та же логика написана ниже:
источник
sed, 14 байтов
Беги с
env -i sed -f kitten.sed
.источник
LANG=C sed -f kitten.sed
, я не уверен, должен ли я применить штраф за это. Этот вопрос не определяет, как считать вызовы программ, и он не рассматривается в метаs/.*/\L&/
для решения девяти байтовs/.*/\L&/
и другоеs/./\L&/g
действительно 9-байтовые решения!Java, 198 байт
Вы вынуждены использовать вышеупомянутую лямбду с файлами, поэтому нет необходимости принимать данные из STDIN! Кроме того, это
Function<File[], UnaryOperator<String>>
. Это используется какfoo.apply(anArrayOfFiles).apply(anything)
.Что-то, что имеет больше смысла для тех, кто плохо знаком с Java, занимает 223 байта:
Что-то, что компилируется, занимает 232 байта:
источник