Целью этого кода является создание кода, который позволяет пользователю вводить строку ASCII (содержит только печатаемые символы ASCII ), а ваша программа выводит вариант этой строки в нижнем регистре.
Важно: вам НЕ разрешено использовать встроенную функцию, которая преобразует строку (или только один символ) в нижний регистр (например, ToLower()
в .NET, strtolower()
в PHP, ...)! Однако вы можете использовать все остальные встроенные функции.
Еще одно важное замечание: строка ввода не содержит только заглавные буквы. Входная строка представляет собой сочетание символов верхнего регистра, символов нижнего регистра, цифр и других печатных символов ASCII .
Удачи!
code-golf
printable-ascii
ProgramFOX
источник
источник
s/./\L\0/g
.\L
, встроен?Ответы:
Shell - 10
Перевод Perl-решения @ Gowtham с использованием
/bin/tr
.Образец прогона:
источник
-p
флаг считается как один). Я согласен, хотя, его кажется, что это заслуживает большего, чтобы быть принятым ..Python 2.7 - 30 (с ужасным и неуместным нарушением правил)
Как указало анонимное редактирование, вы можете сделать это в
2726 в Python 3 :Я грубо нарушаю правила, но ...
Это берет строки и охватывает его в верхнем регистре . Затем в очень несвязанном вызове метода он переворачивает регистр строки - так что любые строчные буквы становятся заглавными буквами ... и заменяет любые заглавные буквы строчными .
источник
Perl -
1110 символов.y///
так же, какtr///
!В бою:
источник
-p
Вариант считается как 1-
иp
:)-e
(perl -e
->perl -pe
), 3, если вы предполагаете скрипт (perl
->perl -p
).Befunge-98 -
26 22 2119Полагается на то, что
(c-39)/26
это1
только для кодов символов прописных символов ASCII (при условии целочисленного деления). Для каждого символаc
распечатайтеc + (((c-39)/26)==1)*' '
.Пример сеанса:
источник
Python 3, 58
источник
map(ord,input())
работает бит.map
применяет функцию (в данном случаеord
) к целому и возвращает итерацию. Это как более короткая форма(ord(x) for x in input())
.for c in input():print([c,(chr(ord(c)+32))]['@'<c<'['],end='')
. Я попробовал некоторые сmap(ord,input())
трюком, но пропустил умножение значения истинности на 32 и добавление его к уловке кода символа. Очень хорошо.Рубин, 18 знаков
Ничего особо интересного.
(запустить в IRB)
Просто для удовольствия: запутанная версия:
Запустите так:
Выход
источник
J - 30
J читается справа налево, поэтому, чтобы разбить это:
1!:1]1
&.(a.&i.)
1=I.
.]+32* ...
Очевидно, что эта конкретная реализация рассматривает только ASCII; но подход можно распространить, по крайней мере, на базовую многоязычную плоскость в Юникоде.
источник
'@Z'(]+32*1=I.)&.(a.&i.)1!:1]1
должен это сделать)u:(a.i.x)+32*1='@Z'I.x=.1!:1]1
, что соответствует твоей длине, но гораздо менее интересно (так как не использует 'under'). Говоря об этом, я не знал о двоичномI.
, так что спасибо за использование этого. :-)(32(23)b.])&.(3&u:)
, должен быть на 5 байт короче.C
64 63 5955 символовисточник
int
и,c>=0
. Они здесь не нужны.~(c=getchar())
2.c-64u<27
Гольфскрипт - 17
Программа:
Объяснение:
{}%
сопоставляет код внутри с каждым символом в строке...
копирует вершину стека (персонажа) дважды.64>
1, если код символа больше 64, иначе 0.\
поменяет два элемента в стеке (получает вторую копию письма и сохраняет результат64>
в позиции два).91<
проверяет, является ли код символа меньше 91. Аналогично шагу 3.*
умножает результаты шагов 3 и 5 вместе. Только равен 1, если оба шага были верными.32*
умножает результат шага 6 на 32. Будет 32, если шаг 6 был 1, иначе 0.+
добавьте результат (32 или 0) в код символа.Пример вывода:
источник
Perl: 24 символа
Образец прогона:
источник
chr ord
? Я почти уверен, что вы ничего не узнаете, прочитав мой ответ ;-)-p
параметр командной строки, а не перевод строки.Python (33)
Если сомневаетесь, используйте оболочку.
К сожалению, это все еще дольше, чем решение Lego.
источник
tr
команда (которая делает правильные вещи) на пути вызванной оболочки, я полагаю.DELPHI
источник
JavaScript -
109104 (ES6: 95)Спасибо некоторым за исправленную версию.
Следующее работает, если браузер поддерживает выражения функций ES6:
источник
undefined
а затемc.charCodeAt()
терпите неудачу, потому что undefined не имеетcharCodeAt
. Рабочий пример 105 символов:a=prompt();for(b=[i=0];c=a.charCodeAt(i);)b[i++]=String.fromCharCode(c|(c>64&&c<91)*32);alert(b.join(''))
and
вместо логического ... приятно!L=s=>[String.fromCharCode(c.charCodeAt()|(c>"@"&c<"[")*32)for(c of s)].join('')
. Использование:L('SoMeTeXt')
for..of
независимо.Perl 18
Что-то типа:
а также
Для @FireFly :
нет.
Более универсальный: 18 символов в любом случае:
Это ничего не изменит в состоянии:
Все отлично работает, но преимущество изменения
|
(или)^
(XOR) является то , что тот же синтаксис может быть использован дляtoLower
,toUpper
илиswapCase
:TOUPPER:
и swapCase (18 + 1 = 19 символов) :
источник
-p
извинения @manatwork@
на backtick и[\]^_
to{|}~DEL
? И в этом заключается сложная часть ..$&
должны совпадать[A-Z]
.JavaScript 80
(76, если вы удалите
"X"
)с
prompt
иalert
- 92играть на скрипке
благодаря @FireFly @some @ C5H8NNaO4 и @minitech
источник
replace
сfunction($){return ...}
, нет? Между прочим, первым параметром функции замены является соответствующая строка, так что вы можете отбросить символы в регулярном выражении.prompt
иalert
для ввода / вывода в JS./g
флаг, чтобы это работало правильно.р
71 символов:
83 персонажа:
источник
86
символы - переводы строки считаются за 2 символа. ( string-functions.com/length.aspx );
чтобы они не учитывались только для одного символа. Можно было бы написать:a=as.integer(charToRaw(scan(,"")));b=a%in%(65:90);a[b]=a[b]+32;rawToChar(as.raw(a))
Q, 18
.....
источник
Q (16)
.......
источник
PHP (42)
Запустите из командной строки:
-R
и одинарные кавычки не учитываются.источник
str_ireplace
выполняет поиск без учета регистра, который расширяет правила, если не нарушает их.PowerShell:
696564Я попробовал полдюжины способов заставить Replace работать так, как я хочу, без использования длинного
[regex]::Replace
синтаксиса, но мне не повезло. Если у кого-то есть представление о том, что может сработать, пожалуйста, предложите это.Гольф-код:
Объяснение:
(read-host)
получает пользовательский ввод.[regex]::Replace(
...)
сообщает PowerShell использовать сопоставление с RegEx для выполнения операций замены над строкой."[A-Z]"
соответствует всем заглавным буквам{
...}
сообщает PowerShell использовать сценарий для определения значения замены.[char]"$args"
берет текущее совпадение и печатает его как символ ASCII.32+
преобразует символ в целое число, представляющее код ASCII, и увеличивает значение на 32, что соответствует коду ASCII соответствующей строчной буквы.[char](
...)
принимает полученное значение и преобразует его обратно в символ ASCII.Демо оригинал:
(Текущая версия проверена - скриншот еще не опубликован.)
источник
[regex]::Replace
, но вы можете сохранить 4 символа, перейдя[int]
на+
{[char](32+[char]"$args")}
, что устраняет необходимость явного приведения к int и сбрасывает еще одного персонажак2, 15 байт
Я очень опоздал к этому, но я все равно нашел это круто.
Также:
Pyth, 10 байт
На самом деле не считается, потому что Pyth был создан после того, как это было опубликовано. Все еще круто.
источник
05AB1E , 3 байта
Порт @ user8777 Python 3 ответа .
Попробуйте онлайн.
Объяснение:
Но без каких-либо встроенных изменений:
05AB1E ,
1211 байт-1 байт благодаря @Emigna .
Попробуйте онлайн.
Объяснение:
источник
ÇIS.u32*+çJ
сохраняет байт на вашей 12-байтовой версии..u32*+
подход так:εÇy.u32*+ç]J
, но , к сожалению ,ç
упаковывает символы в списке, поэтому дополнительныйJ
или `требуется после того , какç
..Javascript, 105
На самом деле форма вывода не указана, поэтому запустите ее в консоли. Да, JavaScript действительно многословен с помощью строки charcode <->
источник
c.charCodeAt()
- по умолчанию,0
если индекс опущен. Кроме того, я полагаю, что разрывы на «@» («в нижнем регистре» переводятся в спину)Рубин: 66
источник
C # - 108
Около 70 только для тела метода.
Добавьте 5 символов, чтобы включить LF / CR в вывод:
Версия LINQ будет короче:
(103) .. за исключением того, что требуется
using System.Linq;
(всего: 121).источник
Haskell - 58
источник
Питон 3 - 70
Обновлен для изменений ОП.
Я новичок в Python, поэтому любая критика приветствуется.
источник
Perl, 9 + 1 (для флага -p) = 10
\L
был специально задан и разрешен, потому что, хотя это встроенный, это не функция.источник
Powershell,
5349 байт-4 байта спасибо @AdmBorkBork
Тестовый скрипт:
Выход:
источник
¯\_(ツ)_/¯
8086 машинный код, 14 байтов
Собранный:
Несобранный список:
Реализуется как
MACRO
(по сути, функция). Входная строка вSI
, длина вCX
. Выходная строка вDI
.Выход из программы тестирования ПК DOS:
Скачайте и протестируйте пример программы TOLOW.COM .
источник
AC 3C 41
и т. Д. Я добавлю собранный шестнадцатеричный байт-код в верхнюю часть для ясности. codegolf.meta.stackexchange.com/a/12340/84624