В этом задании вы собираетесь разместить буквы алфавита в декартовой плоскости и вывести результат в виде текста.
Ваш вход будет представлен в виде списка с 3 параметрами:
- Координата X
- Координата Y
- строка
Как?
Мы знаем, что декартова плоскость содержит 2 оси и 4 квадранта, где знаками координат являются , , и . Например
Рассмотрим следующую матрицу 3 на 3 как декартову плоскость
Если нам дают на входе что-то вроде [[-1,1,L],[0,1,F]]
нашей матрицы будет выглядеть примерно так
И окончательный вывод LF
В дополнение к этому есть некоторые моменты, которым мы должны следовать, чтобы получить правильный вывод:
- Когда координаты X, Y повторяются, вам нужно объединить строки. Пример: предположим, что в (-1,1) строка
F
помещена, и вам нужно поместить строкуa
в ту же точку. Вы объединяете обе строки, в результатеFa
чего получается значение (-1,1). - Ваш вывод должен соответствовать матрице. Пример представьте это как ваш конечный результат:
Вы должны вывести
Ma rie
i s
cute
Почему?
Вы можете просмотреть это как таблицу, в которой столбцы представляют собой значения оси X, а строки - оси Y.
Column 1 | Column 2 | Column 3
----------------------------------------
Row 1 | "Ma" | "r" | "ie"
Row 2 | "i" | "s" |
Row 3 | "cute" | |
Все значения столбцов должны иметь одинаковую длину
Column 1 | Column 2 | Column 3
----------------------------------------
Row 1 | "Ma " | "r" | "ie"
Row 2 | "i " | "s" |
Row 3 | "cute" | |
В финале мы выводим результат
Ma rie
i s
cute
Тестовые случаи
Input
------------
[[3, 3, "c"]
[4, 1, "un"]
[5, 3, "e"]
[4, 3, "od"]
[4, 2, "lf"]
[1, 2, "go"]
[2, 1, "i"]
[2, 1, "s f"]]
Output
--------------
code
go lf
is f un
Input
--------------
[[0, 0, 's'],
[-1,1, 'M'],
[0, 1, 'r'],
[-1,1, 'a'],
[1, 1, 'i'],
[-1, 0, 'i'],
[1, 1, 'e'],
[-1,- 1, 'c'],
[-1,- 1, 'u'],
[-1, -1, 'te']]
Output.
----------------
Ma rie
i s
cute
Примечания
- Это должно быть код-гольф
- Вы можете обернуть координаты в один список, например
[[3, 3], "c"]
- Вы можете принять вход в любом разумном формате
- Вы можете предположить, что не будет никакого числа или пустых мест только во входных данных. Например, может быть что-то вроде,
a a
но никогда1
или" "
или1a
или1 1
источник
a a
но никогда1
или `` или1a
или1 1
(int a,int b,string c)
?Ответы:
JavaScript (ES8),
186 180179 байтСохранено 1 байт благодаря @Shaggy
Попробуйте онлайн!
Отрицательные показатели в JS (или их отсутствие)
Учитывая массив
A[]
, в JS совершенно законно делать что-то подобноеA[-1] = 5
. Однако это не сохранит значение в самом массиве. Вместо этого он неявно приведет этот отрицательный индекс к строке ("-1"
) и установит соответствующее свойство в окружающем объекте массива.Плохая новость заключается в том, что свойства не могут быть повторяемы с помощью таких методов, как
map()
:Попробуйте онлайн!
Приведенный выше код будет отображаться только
3 is stored at index 1
.Возможный обходной путь будет:
Попробуйте онлайн!
Но:
Что мы здесь делаем
Мы определенно хотим работать с положительными ценностями обоихИкс и Y во избежание проблем, описанных выше.
Мы могли бы сделать первый проход данных, ища минимальное значениеИкс и минимальное значение Y , Но это было бы довольно долго.
Вот что мы делаем вместо этого:
источник
o
вw
:w=[o=[]]
.Python 2 ,
188185181 байтПопробуйте онлайн!
источник
APL (Dyalog Unicode) , 39 байтов SBCS
Анонимный инфикс лямбда, принимающий * списки координат и строк в качестве левого и правого аргументов.
Попробуйте онлайн!
{
…}
"Дфн"; Аргументы left (координаты) и right (строки)⍺
и⍵
:⊂''
вложенная пустая строка, поэтому используйте в качестве заполнения для массива(
...)⍴
циклический г eshape в массив из следующих размеров:⌊/⍺
наименьшее значение по каждой оси координат⍺-
вычесть это из всех координат1+
добавьте это к одному (так как мы хотим инклюзивный диапазон)c←
хранить вc
(для гр oordinates)⌈/
самое высокое значение вдоль каждой оси из этих⊃
распаковать для использования в качестве размеровm←
хранить вm
(для м атрикс)⍵⊣
откажитесь, что в пользу строкm[c],←
добавить их кm
координатамc
m⊣
отменить те в пользу измененногоm
⌽
зеркало↓
разбить на список списков строк↑¨
смешать каждый список строк в матрицу символов, добавив пробелы,/
уменьшить путем горизонтальной конкатенации⊃
распаковать (так как сокращение снижает рейтинг с 1 до 0)* Если требуется взять один аргумент из переплетенных координат и строк, он будет на 5 байт длиннее.
источник
05AB1E ,
4544 байтаПринимает входные координаты как внутренний список.
Попробуйте онлайн или проверьте все контрольные примеры .
Объяснение:
источник
Древесный уголь , 60 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Извлеките координаты из ввода.
Цикл по координатам х.
Зацикливание по y-координатам, извлечение и объединение всех строк по заданным координатам.
Напечатайте строки в обратном порядке, когда координаты y перевернуты по сравнению с системой координат Charcoal.
Перейти к началу следующего столбца.
источник
Perl 5
-p00
-MList::Util=max
, 148 байтTIO
Как
s/(\S+) (\S+) (.*) /
...;''/ge;
, флаги подстановки,/g
цикл/e
eval, замена заменяет пустую переменную ввода / переменная по умолчанию$a{$1}=max$a{$1},length($h{$2}{$1}.=$3)
, автоматически оживляет карту% h карты, чей первый уровень задаетy
второй уровеньx
и объединяет строку$3
со значением, получает длину и автоматически оживляет вторую карту% a, ключи которойx
и значение max длины по столбцу (x
)for$y(sort{$b-$a}keys%h){
...;say""}
, для индексов строк$y
в ключах,%h
отсортированных по нумерации,say""
в конце выведите новую строкуmap{
...}sort{$a-$b}keys%a
, для индекса столбца$_
в ключах% a, отсортированных численноprintf"%-$a{$_}s",$h{$y}{$_}
, вывести строку, выровненную влево по ширине столбцаисточник
Чисто ,
212206 байтПопробуйте онлайн!
источник