Плагиат из рип-офф в виде плагиата из более плагиата . Иди голосуй!
Ваша задача, если вы хотите принять это, - написать программу / функцию, которая выводит / возвращает свой ввод / аргумент¹. Сложность состоит в том, что если я перенесу ваш исходный код², то вывод / результат также должен быть транспонирован.
Вы можете выбрать, какой тип 2D-данных может принять ваше решение. Например, список списков, матрица, список строк и т. Д. Укажите, какой из них обрабатывается. Вы можете предположить, что вход всегда будет прямоугольным и будет иметь длину 1 или более вдоль каждого измерения.
В целях транспонирования короткие строки в исходном коде будут считаться дополненными пробелами до тех пор, пока они не станут прямоугольными, однако эти дополняющие пробелы не влияют на длину вашего кода.
Поскольку это код-гольф , цель состоит в том, чтобы оптимизировать количество байтов исходного исходного кода (не транспонированной версии).
Примеры
Допустим, ваше решение принимает числовую матрицу, а ваш исходный код
AB
DEF
и его вход / аргумент [[1,2],[3,4],[5,6]]
. Если я напишу
AD
BE
F
вместо этого и запустите его, результат / результат должен быть [[1,3,5],[2,4,6]]
.
Допустим, ваше решение принимает строку, разделенную переводом строки, а ваш исходный код
ABC
и его вход / аргумент "96\n"
. Если я напишу
A
B
C
вместо этого и запустите его, результат / результат должен быть "9\n6\n"
.
Ответы:
Python 3 + NumPy, 45 байт
Попробуйте онлайн!
Благодаря @EriktheOutgolfer, указавшим на ошибку предыдущей версии
Транспозиция:
Попробуйте онлайн!
Функции принимают числовую матрицу в качестве входных данных и выводят пустую матрицу. Решение не полагается на комментарии, как многие другие решения, но вместо этого использует многострочные строки.
источник
\
будет выброшено aSyntaxError
. Вам нужно переместить кавычки в обоих направлениях, чтобы это исправить.Желе , 2 байта
Ввод представляет собой список списков. Спасибо Луису Мендо и Нику Кеннеди за улучшение ответа.
Попробуйте онлайн! Попробуйте это транспонировать!
Программа транспонирует ввод дважды, возвращая исходный ввод. Транспонированная версия игнорирует первую строку и транспонирует только один раз.
источник
R ,
54 байтаПопробуйте онлайн!
Функция R, либо функция тождества, либо функция
I
транспонированияt
при транспонировании. Нижний колонтитул на TIO показывает вывод обоих.Спасибо @RobinRyder за сохранение байта!
источник
#
.C (gcc) ,
209205203201 байтОбычный
Попробуйте онлайн!
Транспозиция
Попробуйте онлайн!
источник
Haskell , 51 байт
Эта версия действительна, но не будет остановлена при
[]
вводе.Попробуйте онлайн!
Транспонировано, 75 байт
Попробуйте онлайн!
Haskell , 51 байт
Эта версия действительна, но дает сбой в
[]
качестве входных данных для транспонированной версии.Попробуйте онлайн! Транспозиция
Haskell ,
756757 байтПо крайней мере, 7 байтов сэкономлено благодаря Эрджану Йохансену
Эта версия выводится
[]
при[]
вводе.Попробуйте онлайн!
Транспозиция
источник
Python 3 , 51 байт
Попробуйте онлайн!
Основано на подходе Джоэла . Ввода является
tuple
вtuple
сек, а выходной сигнал являетсяzip
(преобразуется вtuple
более TIO для лучшей видимости).Транспозиция:
Попробуйте онлайн!
источник
Perl 6 ,
2011 байтовПопробуйте онлайн!
Транспозиция
Попробуйте онлайн!
Обе функции работают со списком списков.
*[ ]
это какой-то код, который возвращает дзенский фрагмент своего аргумента, фактически функцию тождества.&[Z]
это почтовый оператор.источник
Haskell,
185161 байтПопробуйте онлайн!
Транспозиция:
Попробуйте онлайн!
Без комментариев, без строковых литералов, просто некоторые дополнительные определения функций.
Изменить: -24 байта благодаря @ Örjan Йохансен.
источник
PHP (7,4),
1148670 байтМой первый опыт, когда я делал что-то подобное в PHP, должен быть лучший способ, которого я не вижу! Ввод представляет собой массив массивов, как
[[1,2],[3,4],[5,6]]
.Обычный:
Попробуйте онлайн!
Транспонированный (пробел):
Попробуйте онлайн!
источник
Древесный уголь , 19 байт
Попробуйте онлайн! Принимает ввод как массив строк. Объяснение:
A
неявно печатает явный ввод, в то время как¿⁰
является условным, причем0
в качестве условия, которое поэтому всегда ложно.«
затем запускает блок бессмысленного кода угля, который никогда не выполняется. (Возможно, удастся удалить некоторые из этих байтов, но в этом случае я не уверен, будет ли Charcoal правильно анализировать программу.) Транспонировано, 17 байтов:Попробуйте онлайн! Объяснение: То же, что и в предыдущей программе, за исключением добавления команды транспонирования
‖↗
.У меня есть альтернативное решение, в котором исходная и транспонированная программы занимают 18 байт:
Попробуйте онлайн! Объяснение:
A
как указано выше;⊞υ
помещает значение в предопределенный пустой список (который не влияет на вывод);”y
начинается произвольная строка (заканчивается в конце программы или совпадения”
). Транспозиция:Попробуйте онлайн! Объяснение:
A‖↗
как указано выше;⊞υ
как указано выше; небольшая разница здесь в том, что я добавляю конкатенации меньших строк, так как не хочу повторять”
.источник
Brain-Flak (BrainHack) ,
382375337 байтБез комментариев!
Попробуйте онлайн!
Для ввода первые два числа являются размерами матрицы, а остальные - содержимым матрицы. Выходные данные приведены в том же формате.
Транспозиция
Brain-Flak (BrainHack) , 465 байт
Попробуйте онлайн!
источник
Japt , 2 байта
Попробуй это | Транспозиция
источник
JavaScript (Node.js) , 62 байта
Попробуйте онлайн!
Улучшено с другим макетом
источник
Хаскелл ,
153144 байта(спасибо, шриотизм О'Зайк )
Попробуйте онлайн!
Попробуйте это транспонировать!
источник
foldr
рекурсии для обеих версий), это не нравится.APL (Dyalog Unicode) , 7 байтов
Попробуйте онлайн!
Транспозиция:
Вероятно, довольно скучный ответ, но в любом случае здесь это идет.
Определение встроенной функции
{...}
может занимать несколько строк. В этом случае каждая строка выполняется последовательно, но любая строка без присваивания←
немедленно возвращает свое вычисленное значение. Итак, первая функция возвращается,⍵
а вторая возвращается⍉⍵
.Еще более скучным ответом будет злоупотребление комментарием:
APL (Dyalog Unicode) , 4 байта
Думаю, нет необходимости в ТИО ...
источник
05AB1E , 3 байта
Попробуйте онлайн.
Попробуй это транспонировать.
Объяснение:
В отличие от некоторых других языков, в 05AB1E символы новой строки просто игнорируются, поэтому я не думаю, что возможен двухбайтовый код (хотя я бы хотел, чтобы его ошиблись).
источник
Рубин , 35 байт
Попробуйте онлайн!
Бедро, чтобы быть квадратным! (Почти)
Принимает рубиновые матрицы в качестве входных данных (массивы массивов)
источник
Чистый , 64 байта
Попробуйте онлайн!
Попробуйте это транспонировать!
источник
Python 3 ,
11895 байтВход и результат - списки кортежей.
Попробуйте онлайн!
источник
Wolfram Language (Mathematica) , 13 байт
Попробуйте онлайн! / Транспонированный
источник
Cjam , 13 байт
Попробуйте онлайн!
Транспонированная версия:
Попробуйте онлайн!
Формат ввода
Формат ввода - это стандартный формат массива CJam:
[[1 2] [3 4]]
Без сбойной версии, 12 байт
Нормальная версия падает после печати массива. Версия, которая не падает, будет:
Попробуйте онлайн!
или транспонированный:
Попробуйте онлайн!
Вероятно, есть несколько дополнительных байтов, которые можно сохранить, сначала я случайно поработал над транспонированной версией, что привело к нескольким дополнительным разрывам строк, и с тех пор, как я последний раз использовал CJam, прошло много времени. Любые улучшения приветствуются.
источник
Zsh , 75 байтов
TIO: нормальный транспонированный
Мусор ниже основного отпечатка безвреден, он печатает ошибку при обнаружении новой строки после
fa<
и выходит. 86 байт, чтобы удалить эту ошибку.Транспонированная версия здесь. После печати это ошибки при просмотре
<
в конце строки и выходах.источник
Рунические чары , 88 байт
Попробуйте онлайн!
Попробуйте это транспонировать!
Входные данные разделены пробелом для каждого значения и запятыми для каждой строки (новые строки являются необязательными) и поддерживают как строки, так и (ненулевые) числа. Это облегчает анализ ввода, так как ввод автоматически разбивается пробелами и символами новой строки. Так, например, вход:
Будет представлен в виде вложенного массива как
[[1,2,3],[4,5,6],[7,8,9]]
. Минимальная поддержка зубчатых массивов (только последний может быть коротким), но поскольку входные данные должны быть прямоугольными, это удовлетворяет этому требованию.Выходные данные представлены в том же формате (транспонированная версия выводится с символами новой строки, но ее нулевые байты отличаются тем, что вместо них используется пробел). Обычная версия имеет завершающий пробел, транспонированная версия имеет запятую и символ новой строки (из-за сложности определения, когда больше нет данных для печати).
Нормальная версия имеет символы-модификаторы в странных местах (например,
7̸0
), но это связано с необходимостью их использования в нужном месте, когда источник транспонирован, а при нормальном выполнении используется только левый столбец инструкций.объяснение
Объяснение транспонированного источника будет в нетранспонированной форме. Стрелки будут обозначать направленность IP на входе и выходе из различных блоков.
Входные данные читаются, и когда
,
символ найден, новый субстек выдвигается. Это позволяет каждому стеку хранить каждый ряд отдельно в памяти. В следующий раздел входит сверху.[0
(выполняется слева) устанавливает пустой стек, чтобы действовать в качестве границы между первым рядом и последним рядом, а затем поворачивается к первому стеку ({̹
) и запускает печать элементов и вращающихся стопок.i!
Не выполняется , и{̹L [0r
выполняется только один раз. Когда найден стек нулевого размера, цикл завершается.Когда найден пустой стек,
,
печатаются символы a и newline, и цикл ввода значений снова вводится. Порядок выполнения (зеркально для удобства чтения) , где.
представляет собой команду ип-выполняется:\',$!.6ak$?....../
. Переходak
на'<space>
печатные места вместо новых строк.Выполнение останавливается, когда программа пытается выполнить запись из пустого стека; вот почему правильно работает только неровность последней строки и почему
,
в выводе есть запаздывание : запятая уже напечатана до того, как программа узнает, что данных больше нет.источник