Перевернуть и инвертировать строку
Вызов
В этом вызове. Вы будете писать программу, которая будет выводить или возвращать ввод, обращенный и инвертированный.
Во-первых, каждый символ должен быть преобразован в его код символа. Затем это должно быть преобразовано в базу-2. После этого эта строка должна быть обратной. После этого строка должна быть инвертирована (1 -> 0 и 0 -> 1). Наконец, это должно быть преобразовано обратно в базу 2, а затем преобразовано обратно в символ. Если персонаж окажется непечатным, вы можете при желании вывести его, но его не нужно удалять.
H -> 72 -> 1001000 -> 0001001 -> 1110110 -> 118 -> v
e -> 101 -> 1100101 -> 1010011 -> 0101100 -> 44 -> ,
l -> 108 -> 1101100 -> 0011011 -> 1100100 -> 100 -> d
l -> 108 -> 1101100 -> 0011011 -> 1100100 -> 100 -> d
o -> 111 -> 1101111 -> 1111011 -> 0000100 -> 4 -> (unprintable)
, -> 44 -> 101100 -> 001101 -> 110010 -> 50 -> 2
-> 32 -> 100000 -> 000001 -> 111110 -> 62 -> >
W -> 87 -> 1010111 -> 1110101 -> 0001010 -> 10 -> (newline)
o -> 111 -> 1101111 -> 1111011 -> 0000100 -> 4 -> (unprintable)
r -> 114 -> 1110010 -> 0100111 -> 1011000 -> 88 -> X
l -> 108 -> 1101100 -> 0011011 -> 1100100 -> 100 -> d
d -> 100 -> 1100100 -> 0010011 -> 1101100 -> 108 -> l
! -> 33 -> 100001 -> 100001 -> 011110 -> 30 -> (unprintable)
счет
Самый короткий код в байтах побеждает.
Бонус -15%: если ваша программа удаляет непечатаемые с вывода. Это должно быть как минимум все символы ниже 32, кроме новых строк (символ 10)
GBktnkZs
0010000
, его следует рассматривать как10000
обратное00001
Ответы:
CJam, 14
Попробуйте онлайн
Объяснение:
Довольно просто:
«Версия для печати», 20 - 15% = 17
источник
Pyth, 14 байт
Попробуйте онлайн.
Как это работает
источник
smCi!MvM_.Bd2z
smCi.r_.Bd`T2z
smCiqR\0_.Bd2z
Perl,
5751 символов(50 символов кода + 1 символ командной строки.)
Образец прогона:
источник
-p
s/./$_=unpack b8,$&;s|0+$||;"chr 0b".y|10|01|r/gee
.unpack b8,$&
корочеsprintf'%b',ord$&
, и дополнительно декодирует в обратном порядке. К сожалению, он также выдает конечные 0, которые необходимо удалить.unpack
для меня все еще неизведанная местность.-p
s/./"chr 0b".unpack(b8,~$&)=~s|1+$||r/gee
. Инвертировать персонажа, не нужно транслитерировать;)JavaScript (
ES6ES7),119114108 байтЭто оказалось намного дольше, чем ожидалось :(
Спасибо @vihan за 5 сохраненных байтов! Спасибо @ETHProductions за сохранение еще 6 байтов!
Чтобы проверить: Запустите фрагмент ниже, введите ввод, как
"Hello, World!"
, и нажмите Test!источник
parseInt
с ,+('0b'+<code>)
как описано здесь , и еще один, используяw^1
вместо+!+w
x=>String.fromCharCode(...[for(y of x)if((c=+('0b'+[...y.charCodeAt().toString(2)].reverse().map(z=>z^1).join``)) >31||c==10)c])
(127 - 15% = 107,95) Возможно, это не законно; это только обрабатывает10 == \n
, не13 == \r
. @ Vɪʜᴀɴ что ты думаешь?Unexpected token '>'
когда пытаюсь запустить фрагмент.JavaScript (ES7), 126 байт - 15% = 107,1
Я играл с этим ответом, чтобы посмотреть, стоил ли бонус. Видимо, так и есть. Набор тестов был украден из того же ответа, но я добавил свой собственный поворот: полная поддержка 15% бонуса! :)
источник
getScore()
функцию, которая проверяет контрольный примерHello, World!
на соответствие (он удобно содержит как новую строку, так и непечатаемые символы) и возвращает результат, умноженный на 0,85 или 1, в зависимости от результата. И да, доступ к не минимизированному фрагменту был бы отличным. :)PHP -
187182163 байтаПередайте значение как
GET["s"]
.array_map возвращает массив со всеми элементами второго параметра (массив) после применения ко всем из них функции обратного вызова (первый параметр).
Не уверен, стоит ли мне снимать 15%, так
echo
как не выводит непечатные символы, но я их не удалял.Просто рад, что я закончил, так как это первый вызов, в котором я принимаю участие.
источник
$m='array_map';echo join($m("chr",$m("bindec",$m(function($v){return strtr($v,[1,0]);},$m("strrev",$m("decbin",$m("ord",str_split($s))))))));
.STDIN
. Кстати, вы не должны использовать кавычки строки ("chr"
,"bindec"
, ...) , так как мы не заботимся о предупреждениях. Это должно сэкономить вам 12 байтов.str_split($s)
сstr_split(fgets(STDIN))
, например.К5, 28 байт
Это немного неудобно, потому что
decode
оператор K5 выполняет базовое преобразование с фиксированной шириной, поэтому, чтобы соответствовать формулировке задачи, я должен обрезать ведущие нули. Лямбда{x@&|\x}
выполняет этот шаг.Мазок:
Собирают:
Выбрать:
Вся программа в действии:
Я полагаю, что естественное поведение ОК с непечатными печатями дает право на -15%, что дает оценку 28 * 0,85 = 23,8 .
источник
Юлия, 77 байт - 15% = 65,45
Это создает безымянную функцию, которая принимает строку и возвращает строку. Непечатные символы удаляются, что дает право на бонус.
Ungolfed:
источник
filter(isprint,)
и только 11,55 байтов, сохраненных за счет бонуса.s->map(c->Char(parse(Int,join(1-digits(Int(c),2)),2)),s)
(для 56 байтов)filter(isprint,)
обоих квалифицирует его как бонус и делает его соответствующим правилам.\x04
и тому подобное), тоprint()
стоит семь, что приведет от 56 до 63.PowerShell,
199 175(171 - 15%) = 145,35Использует несколько
неудачныхвызовов / встроенныхфункций.NET, чтозначительноувеличивает объем кода.Разъяснение:
Принимает входные данные
param(..)
и преобразует их как,char[]
чтобы мы могли обрабатывать их соответствующим образом.Следующий бит
(..)-join''
собирает и объединяет наш вывод вместе.Внутри этих символов мы повторяем
$a|%{..}
цикл foreach.Внутри цикла:
$b
, которая является нашей входной буквой, приведенной к типу int+$_
и[convert]
ed к базе2
$c
, это сложно, так что давайте начнем внутри и поработаем$b
с(-join$b[$b.length..0])
"$(..)"
[convert]
SToInt32
от основания2
, который , наконец , хранящийся , что в$c
$c
оно больше31
или равно10
, мы приводим его как символ, и это значение остается в конвейере для вывода (что и собирается, и собирается-join''
вместе, выше), иначе ничего не останется на этой конкретной итерацииУф.
Также имеет право на бонус -15%.
пример
источник
Функция С, 63
источник
𝔼𝕊𝕄𝕚𝕟, 39 символов / 73 байта
Try it here (Firefox only).
источник
Минколанг 0,11 , 26 байт
Попробуй это здесь.
объяснение
источник
MATLAB, 60 байтов
В основном каждый символ по очереди конвертируется в двоичную строку (без начальных нулей). Массив переворачивается и вычитается из 97 ('0' + '1'), который инвертирует символ. Это преобразуется обратно в десятичную. После того, как все символы были обработаны, весь массив преобразуется обратно в символы, а затем возвращается.
источник
Питон 3,
9591Простая реализация.
Ungolfed:
источник
Рубин, 62 персонажа
Samply run:
источник
C #, 156 байт - 15% = 132,6
Отступы и новые строки для ясности:
источник
Javascript 123 байта
источник
Сетчатка ,
1107629 байт - 15% = 534,65 (не конкурирует)Использует функции, добавленные после даты вызова. (Неявное поведение
$*
,¶
, Сортировка)Retina не имеет встроенной функции для преобразования персонажа в порядковый номер ASCII или обратно ... так что вот его блестящая длина. Это обрабатывает ASCII для печати и удаляет непечатные и новые строки. Количество байтов предполагает кодировку ISO 8859-1.
Код содержит непечатаемые символы.
Попробуйте онлайн
Если вы ознакомитесь с руководством Retina по унарной арифметике , вы узнаете несколько разных частей моего кода как исходящие оттуда.
Спасибо Мартину за то, что он сыграл в гольф сто байтов
источник
Ява, 205 - 15% = 174,2
Ungolfed:
Я думаю , что это решение немного интересный в использовании
Integer
методовInteger.reverse
иInteger.numberOfLeadingZeros
которые делают то , что они звучат , как и сдвиг ,-1 >>> s
гдеs
это число ведущих нулей, чтобы получить маску , чтобы замаскировать старшие биты , которые мы не хотим. Я просто сожалею, что название последнего метода чертовски многословно, но это то, что я получаю за игру в гольф на Java.Выход:
источник
Japt, 25 байт
Хотите создать JavaScript-программу для гольфа, но самый короткий метод включает множество длинных имен функций? Для этого и был сделан Джапт. :)
Попробуйте это в онлайн-переводчике !
Как это работает
Используя текущую версию Japt (начиная с версии 1.4.4), количество байтов может быть сокращено до 14:
Проверьте это онлайн!
источник
Haskell, 167 байт
К сожалению, Haskell становится довольно многословным, когда ему нужно читать / печатать в другой базе ...
источник
Perl 6, 66 байт
Прибегая к цели, удалив непечатные управляющие символы, я получаю (83 + 1) -15% = 71,4
Если я удаляю код, который удаляет управляющие символы, я сохраняю совсем немного 65 + 1 = 66
(Я использовал для наглядности
»
вместо>>
)источник
Желе , 6 байт (не конкурирует)
Попробуйте онлайн!
Объяснение:
источник
Ракетка 250 Бонус 15% = 212 байт
Ungolfed:
Тестирование:
Выход:
источник
PHP, 80 байт
принимает данные от STDIN; беги с
-R
.бонусная версия,
97110 байт -> 93,5 баллапечатает ASCII 10 и 32–126 (перевод строки и печатные формы)
пробой, TiO и, если возможно, последует игра в гольф; Я устала прямо сейчас.
источник