В этом задании вам дадут текстовый блок, и вам нужно выполнить размышление над текстом.
Входные данные:
- Строка для отражения. Текст не может быть представлен в виде массива, элементами которого являются строки текста. Например,
"ab\ncd"
и['a','b','\n','c','d']
разрешены, но['ab','cd']
или[['a','b'],['c','d']]
нет. Вы можете предположить, что все строки имеют одинаковое количество символов (с пробелами, где это необходимо). - Логическое значение, где
True
указывает на отражение Y иFalse
указывает на отражение X
Два входа могут быть переданы в любом порядке.
Выход:
Отраженная строка. Символы не меняются, только их положение. Полученный блок изображения должен быть выровнен по верхнему левому углу (первая строка и столбец должны содержать непробельные символы). Конечный пробел (на любой из строк) разрешен.
Тестовые случаи:
False
o /
--|/
|
/ \
/ o
/|--
|
\ /
True
o /
--|/
|
/ \
/ \
|
--|/
o /
True
text
text
False
text
txet
True
P
P
C
G
G
C
P
P
False
P
P
C
G
P
P
C
G
True
abcde
fghij
kl mn
opqrs
tuvwx
tuvwx
opqrs
kl mn
fghij
abcde
Это код-гольф , поэтому ответьте кратчайшим ответом на вашем любимом языке!
1
и0
) или мы должны использоватьTrue
иFalse
?\n
I, я бы сказал, что это не строковое представление.Ответы:
C #,
168144141120 байтНовая версия использует очевидную строку. Перегрузка Join, которая принимает IEnumerable, первое решение было использовать его непреднамеренно, я просто смог использовать его и для другой стороны троичного.
Обновить:
Новая версия является анонимной лямбдой и использует каррирование для экономии всего 21 байта. Это меняет использование, чтобы быть
f("text")(false)
где f является анонимной функцией.Ungolfed:
источник
Пайк, 7 байт
Попробуй это здесь!
источник
Brainfuck,
143140131 байтУдар
сC #.Брейнфак бросил вызов достаточно легко, и я, видимо, достаточно устал, чтобы просто сделать это.
Принимает логическое значение в качестве
0x00
(ложного) или любого другого (истинного) байта в начале ввода, а затем строку с прямоугольным заполнением.Выводит завершающий символ новой строки для переворота Y и ни одного для переворота X.
Требуется интерпретатор, который поддерживает области памяти слева от начала (не уверен, если все еще требуется) и дает EOF как
0x00
. Один такой переводчик здесь . Очевидно, из-за этого не поддерживает нулевые байты на входе.В коде много блоков с 10
+
или-
s; те могут быть уменьшены.Комментируемая версия
источник
32-битный машинный код x86, 76 байт
В шестнадцатеричном виде:
Ввод::
EBX
флаг направления (0/1)ESI
,: строка ввода,:EDI
буфер вывода. Входные данные должны быть прямоугольными.источник
Haskell,
514945 байтПример использования:
Разбить на строки, либо повернуть вспять линии (True), либо повернуть каждую строку (False) и снова объединиться в одну строку. В случае
True
вводаmap r:[r|b]
- это список из двух функций,[<reverse each line>, <reverse lines>]
а дляFalse
ввода - список с одной функцией[<reverse each line>]
.last
выбирает последний элемент этого списка.источник
Желе , 8 байт
Попробуй это здесь.
источник
Python, 56 байт
Вызовите со строкой
s
и любым значением true / falseyr
.источник
True
, что также может быть1
. Вы не можете ограничить ввод только0
или2
.Python 3.5, 61 байт:
Простая анонимная лямбда-функция, которая предполагает прямоугольный ввод. Вызовите его, сначала назвав функцию, а затем вызвав ее внутри
print()
. Другими слова, если функция была названаH
, называют это нравитсяprint(H(<Bool value>, <String>))
, где<Bool Value>
любая истина или ложь значение (то есть0/1
,true/false
и т.д.) и<String>
является строкой ввода.Смотрите это в действии! (Repl.it)
Вот еще одна версия с такой же длиной, которая также предполагает прямоугольный ввод, но на этот раз именованную функцию, т.е. вам не нужно сначала называть ее или оборачивать внутри
print()
:Просто назови это как
J(<Bool Value>,<String>)
.Смотрите это в действии! (Repl.it)
Тем не менее, я не тот, чтобы останавливаться на достигнутом. Хотя нам разрешено принимать прямоугольный ввод, я также создал версию, которая не предполагает такой тип ввода. Следовательно, он будет заполнять пробелом все строки одинаковой длины на основе строки с максимальной длиной тогда и только тогда, когда будет
<Bool>
входFalse
, поскольку только X-отражение приведет к переворачиванию строки. Теперь, без лишних слов, вот непрямоугольная предполагаемая версия длиной134129 байт в виде нормальной функции:Смотрите этот последний в действии! (Repl.it)
источник
MATL , 11 байт
Попробуйте онлайн!
Первый входом является многострочной строкой. Поскольку MATL не распознает
\n
перевод строки, многострочная строка должна быть определена как объединение подстрок или отдельных символов и10
(ASCII для перевода строки, который интерпретируется как символ). Конкатенация в MATL - это[... ...]
или[..., ...]
(запятые не обязательны). Так, например, ввод может быть следующим (объединение строки, перевода строки и другой строки):или эквивалентно (объединение отдельных символов)
или (то же самое с запятыми)
Второй вход может быть введен как
1
/0
или , что эквивалентно , какT
/F
дляtrue
/false
соответственно.объяснение
источник
Брахилог ,
262416 байтОжидается список, содержащий строку и логическое значение
1
или0
, например,объяснение
источник
Pyth, 10 байт
Тестирование.
источник
Bash + общие утилиты Linux, 16
Логическое значение (ноль или не ноль), переданное в качестве параметра командной строки. Ввод / вывод текстового блока через STDIN / STDOUT. Предполагается, что все строки имеют одинаковую длину, как указано в комментариях .
источник
C (Ansi), 193 байта
Golfed:
Ungolfed:
Использование:
Аргументы сборника:
Пример ввода:
Вводится в или нет для истины ложь, за которым следуют ведущий газеты и завершенная строка.
Пример вывода:
источник
JavaScript (ES 6) 83 байта
источник
f(c,0)
при попытке - может быть, у васc
не все пробелы в нужных местах.Юлия, 59 байт
Попробуйте онлайн!
источник
J, 29 байт
Вход LHS - логическое значение, где 0 равно false, а 1 - true. RHS - это строка ввода.
источник
JavaScript (ES6), 76
источник
Java 99 байт
Golfed:
источник
Perl, 35 байт
34 байтов код + 1 для
-n
.Требуется, чтобы строки ввода были дополнены пробелами. 13 (!) Байтов сохранено благодаря @ Dada .
использование
источник
perl -ne 'print/T/?reverse<>:map~~reverse,<>'
должен сэкономить вам 13 байтов :-)Mathematica, 70 байт
Анонимная функция, принимает логическое значение в качестве первого аргумента (явно
True
илиFalse
в Mathematica) и строку (многострочная) в качестве второго аргумента. Импортирует строку как список строк, соответствующих строкам многострочной строки (строка НЕ передается функции в виде массива). ЕслиTrue
перевернуть список. ЕслиFalse
StringReverse
список, который автоматически применяется к каждому элементу по очереди. Затем экспортируйте список в виде строки, где каждый элемент является новой строкой.источник
05AB1E , 10 байтов
объяснение
Попробуйте онлайн!
источник
Vim, 33 байта
Изменен предыдущий V ответ на Vim. Любой ответ V будет отличаться, поэтому он не был честным.
Попробуйте онлайн!
HexDump
источник