Вызов:
Возьмите список, L, содержащий положительные целые числа в качестве входных данных:
3 5 2 1 6
и создать матрицу, в которой n-й столбец содержит вектор 1: L (n) , где более короткие строки дополняются нулями.
Тестовые случаи:
3 5 2 1 6
-----------------
1 1 1 1 1
2 2 2 0 2
3 3 0 0 3
0 4 0 0 4
0 5 0 0 5
0 0 0 0 6
1
-
1
1 2 3 4 3 2 1
-------------------------
1 1 1 1 1 1 1
0 2 2 2 2 2 0
0 0 3 3 3 0 0
0 0 0 4 0 0 0
Правила:
- Дополнительные форматы ввода и вывода
- Список списков является приемлемым форматом вывода
- Матрица должна быть как можно меньше (вы не можете заполнить ее нулями больше, чем нужно)
- Самый короткий код на каждом языке выигрывает
- Пояснения приветствуются
Ответы:
R ,
4038 байтПопробуйте онлайн!
Объяснение:
outer
применяет свой третий аргумент (функцию) ко всем комбинациям элементов своих первых двух аргументов, генерируя матрицуTRUE
иFALSE
где каждый столбец имеетTRUE
где1:max(l)
меньше или равно соответствующему элементуl
, например, гдеl=c(3,5,2,1,6)
:Затем предположишь , полученную матрицу
A
, а затемA*m
->A[i,j]=A[i,j]*i
которое принуждаетTRUE
к 1 иFALSE
к 0, производя желаемый результат.источник
function(l)
наl=scan();
print
чтобы я терял эти байты.source(...,echo=TRUE)
и чтение из stdin в качестве полной программы, если у вас есть альтернативное предложение, во что бы то ни стало взвесить, но, насколько я знаю, это самое близкое, что мы имеем до консенсуса R по полным программам, и это стоит на данный момент.MATL , 8 байт
Попробуйте онлайн!
объяснение
источник
Python 3 , 54 байта
Попробуйте онлайн!
источник
Mathematica, 20 байтов
Содержит U + F3C7 (встроенная
Transpose
функция Mathematica )Попробуйте это на Wolfram Sandbox
использование
объяснение
источник
Октава , 26 байт
Анонимная функция, которая вводит вектор строки и выводит матрицу.
Попробуйте онлайн!
объяснение
Рассмотрим ввод
x = [3 5 2 1 6]
. Это вектор строки размером 1 × 5.1:max(x)
дает вектор строки[1 2 3 4 5 6]
, который назначен переменнойy
.Транспонирование этого, то есть вектор столбца
[1; 2; 3; 4; 5; 6]
,<=
сравнивается (поэлементно с широковещательной передачей) со входом[3 5 2 1 6]
. В результате получается матрица 6 × 5.Наконец, умножение (поэлементно с трансляцией) на вектор столбца
[1; 2; 3; 4; 5; 6]
, полученный какy
транспонированный, дает желаемый результат:источник
05AB1E , 4 байта
Попробуйте онлайн! или как хорошо отформатированный набор тестов
источник
Шелуха , 4 байта
Возвращает список списков
Попробуйте онлайн!
объяснение
источник
Pyth , 6 байт
Попробуй это здесь! или Проверьте все контрольные примеры (с pretty-print)!
объяснение
Не встроенная транспонированная версия будет :
Это работает следующим образом:
источник
Желе , 3 байта
Попробуйте онлайн!
объяснение
источник
На самом деле 17 байт
Попробуйте онлайн!
Объяснение:
источник
Пайк , 3 байта
Это использует новую особенность Pyke, шестнадцатеричное кодирование ... Самое приятное, что мы связываем Jelly! Необработанные байты:
Попробуй это здесь!
Эквивалент ASCII-Pyke будет 4 байта :
Как?
Вот довольно печатная версия с ASCII, а вот с шестнадцатеричным кодированием.
источник
Perl 6 , 39 байт
Попытайся
Expanded:
Обратите внимание, что
zip
заканчивается, когда исчерпан кратчайший список ввода.источник
C # , 136 байт
Данные
Int32[]
i
Массив целыхInt32[,]
Двумерный массив.Golfed
Ungolfed
Ungolfed читабельный
Полный код
релизы
136 bytes
- Исходное решение.Примечания
источник
C (gcc) , 142 байта
Попробуйте онлайн!
источник
Java 10, 115 байт
Объяснение:
Попробуйте онлайн.
источник
Perl 5 , 62 + 1 (
-a
) = 63 байтаПопробуйте онлайн!
источник
Протон , 38 байт
Попробуйте онлайн!
источник
Добавить ++ , 37 байт
Попробуйте онлайн!
источник
JavaScript (Node.js) , 55 байт
Попробуйте онлайн!
JavaScript (Node.js) , 63 байта
Попробуйте онлайн!
источник