Задача проста; выведите следующие шесть двумерных целочисленных массивов:
[[ 1, 11, 21, 31, 41, 51],
[ 3, 13, 23, 33, 43, 53],
[ 5, 15, 25, 35, 45, 55],
[ 7, 17, 27, 37, 47, 57],
[ 9, 19, 29, 39, 49, 59]]
[[ 2, 11, 22, 31, 42, 51],
[ 3, 14, 23, 34, 43, 54],
[ 6, 15, 26, 35, 46, 55],
[ 7, 18, 27, 38, 47, 58],
[10, 19, 30, 39, 50, 59]]
[[ 4, 13, 22, 31, 44, 53],
[ 5, 14, 23, 36, 45, 54],
[ 6, 15, 28, 37, 46, 55],
[ 7, 20, 29, 38, 47, 60],
[12, 21, 30, 39, 52]]
[[ 8, 13, 26, 31, 44, 57],
[ 9, 14, 27, 40, 45, 58],
[10, 15, 28, 41, 46, 59],
[11, 24, 29, 42, 47, 60],
[12, 25, 30, 43, 56]]
[[16, 21, 26, 31, 52, 57],
[17, 22, 27, 48, 53, 58],
[18, 23, 28, 49, 54, 59],
[19, 24, 29, 50, 55, 60],
[20, 25, 30, 51, 56]]
[[32, 37, 42, 47, 52, 57],
[33, 38, 43, 48, 53, 58],
[34, 39, 44, 49, 54, 59],
[35, 40, 45, 50, 55, 60],
[36, 41, 46, 51, 56]]
Что это за двумерные целочисленные массивы? Эти числа используются в фокусе с карточками, содержащими эти числа:
Магический трюк просит кого-то подумать о числе в диапазоне [1, 60] и дать тому, кто выполняет магический трюк, все карты, содержащие это число. Тот, кто выполняет магический трюк, может затем суммировать верхние левые числа (все степени 2) данных карт, чтобы получить число, о котором думал человек. Некоторое дополнительное объяснение того, почему это работает, можно найти здесь.
Правила соревнований:
- Вы можете вывести шесть двумерных целочисленных массивов в любом приемлемом формате. Может быть напечатан с разделителями; может быть трехмерным целочисленным массивом, содержащим шесть двумерных целочисленных массивов; может быть строкой списка строк; и т.п.
- Вам разрешено заполнять нижнюю правую позицию последних четырех карт отрицательным значением в диапазоне
[-60, -1]
или символе,'*'
вместо того, чтобы пропускать из него целочисленные массивы 2D в виде прямоугольных матриц (нет, вы не можете их заполнять0
или не -integer какnull
/ вundefined
качестве альтернативы, за исключением того,*
что в реальных картах также используется звезда). - Порядок чисел в матрицах является обязательным. Хотя это не имеет значения для физического магического трюка, я рассматриваю этот вызов главным образом как матрицу - колмогоровскую сложность , отсюда и ограничение порядка.
Порядок самих матриц в списке вывода может быть в любом порядке, так как из верхней левой карты ясно, какая матрица какая.
Основные правила:
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Не позволяйте языкам кода-гольфа отговаривать вас от публикации ответов на языках, не относящихся к кодексу. Попробуйте придумать как можно более короткий ответ для «любого» языка программирования. - Стандартные правила применяются к вашему ответу с правилами ввода / вывода по умолчанию , поэтому вы можете использовать STDIN / STDOUT, функции / метод с правильными параметрами и типом возврата, полные программы. Ваш звонок.
- По умолчанию лазейки запрещены.
- Если возможно, добавьте ссылку с тестом для вашего кода (например, TIO ).
- Кроме того, добавление объяснения для вашего ответа настоятельно рекомендуется.
code-golf
number
kolmogorov-complexity
matrix
Кевин Круйссен
источник
источник
n
указано наk
'-ой карте; где мой вызов - это KC-вызов для вывода шести матриц.)[ascii-art]
проблема со строгими (MD5) правилами вывода, где мои очень гибкие (и строки / столбцы меняются местами, а диапазон[1,60]
вместо[1,63]
; довольно незначительные различия, но все же).Ответы:
MATL ,
1211 байт-1 байт спасибо самому мастеру :)
Объяснение:
Попробуйте онлайн!
источник
Perl 6 ,
6346 байтПопробуйте онлайн!
Выводится в виде двухмерных массивов на нескольких строках, при этом последний массив каждого из них обрезается при необходимости.
источник
Python 2 , 76 байт
Попробуйте онлайн!
Метод здесь состоит в том, чтобы создать список всех возможных номеров,
r(61)
а затем свести его к списку номеров для карты.i&2**k
.Затем, используя нарезку списка, этот список номеров 1D переупорядочивается до правильного размера карты 6x5
[card nums][j::5]for j in r(5)
.Затем этот генератор просто повторяется для 6 карт
for k in r(6)
.Хотя я не смог найти решения менее 76 байтов, вот еще два, которые также 76 байтов:
Попробуйте онлайн!
Этот следующий вдохновлен Джонатаном Алланом .
Попробуйте онлайн!
Любые комментарии с благодарностью.
источник
Древесный уголь , 26 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Я попытался вычислить записи напрямую, но это было уже 27 байтов, прежде чем корректировать
*
в правом нижнем углу. Выводит каждый ряд, объединенный пробелами и пустой строкой между карточками. Объяснение:источник
*
для развлечения после того, как увидел звезды на настоящих картах. Интересно, будут ли на нем какие-нибудь языки, но я рад, что хотя бы один из них это сделал. :) Хороший ответ!*
быть по меньшей мере таким же коротким, как и все остальное.05AB1E , 16 байтов
Попробуйте онлайн!
объяснение
05AB1E , 17 байт
Попробуйте онлайн!
объяснение
источник
Шелуха , 13 байт
Попробуйте онлайн!
объяснение
источник
Python 2 ,
82807874 байтаПопробуйте онлайн!
-4 байта, благодаря Джонатану Аллану
источник
iter
Ключевое слово является излишним , так как здесь генератор будет делать эту работу так же хорошо .Japt , 14 байт
Попытайся
источник
JavaScript (ES6),
9088 байтПопробуйте онлайн!
комментарии
источник
Python 2 , 73 байта
Вдохновение взято как у Тфельда, так и у Мэтта .
Попробуйте онлайн!
источник
C (gcc) , 95 байт
Попробуйте онлайн!
Возвращает матрицы в виде трехмерного массива int в o.
Последние 4 матрицы имеют -1 в качестве последнего значения.
Сохранено 2 байта благодаря Кевину Круйссену.
Сохранено
78 байт благодаря Арно.источник
o[i][4][5]=-1;for(j=k=0;
значениеfor(o[i][4][5]=-1,j=k=0;
так, чтобы скобки можно было удалить. Хороший ответ, кстати, +1 от меня.#include
показывать, что это работает без негоCJam (18 байт)
Онлайн демо . Это полная программа, которая выводит на стандартный вывод.
рассечение
источник
Желе , 13 байт
Ссылка niladic, которая выдает список из (6) списков целых чисел. (Выводится с использованием опции по умолчанию отсутствия
*
или отрицательного наполнителя.)Попробуйте онлайн!
Как?
Каждая матрица содержит в основном порядке столбцов числа до60 которые разделяют один установленный бит с верхним левым (минимальным) числом.
Эта программа сначала делает все60 возможные упорядоченные списки номеров в [ 1 , 60 ] которые разделяют любые установленные биты с их порядковым номером. Затем он разбивает каждый на куски5 и сохраняет только те, которые имеют минимальную длину - это будут те, где индекс имеет только один установленный бит (и, следовательно, также является его минимальным значением). Наконец, он переставляет каждый из них, чтобы расположить их в мажорном порядке.
Много 15 с без реализации трюка «минимальная по длине при делении на пять»:
... и, пытаясь найти короче, я получил еще 13, не нуждаясь в хитрости вообще:
источник
Wolfram Language (Mathematica) , 88 байт
источник
Transpose@Partition[#~Append~-1,5]&/@Last@Reap[Do[Sow[k,k~NumberExpand~2],{k,60}],Except@0]
~
трюк еще в одном месте и заменил переменнуюk
наNull
. Извините, нет времени, чтобы добавить ссылку tio.Wolfram Language (Mathematica) , 99 байтов
Попробуйте онлайн!
источник
Transpose@
вместоTranspose[...]
; заполнение до 30 записей перед разбиением; используя,Table[...,{k,6}]
чтобы избежать необходимостиk=#
.Transpose@
работает после переездаPadRight
внутрьPartition
. Другой комментарий состоит в том, что вопрос, кажется, не учитывает""
заполнителя; Вы можете заменить его-1
без потери байта.Желе , 13 байт
Попробуйте онлайн!
Свободно основанный на ответе MATL Flawr . Ниладная ссылка, которая выводит список списков по мере необходимости.
источник
R , 73 байта
Я не совсем уверен, выполнил ли я требование к порядку, поскольку R по умолчанию заполняет матрицы столбцом, поэтому порядок, который отображается физически на карточках, совпадает с тем, как матрицы расположены в R.
Попробуйте онлайн!
источник
T-SQL, ( 1
1681139 байт)Я просто хотел знать, что смогу это сделать.
Оптимизированная версия
Онлайн демо
Попробуйте онлайн!
Подробная версия - с примечаниями в виде комментариев SQL
Вуаля!
Примечание 1. Часть логики относится к отображению квадратных скобок и запятых.
Примечание 2: более новые версии SQLServer имеют более компактные подходы к созданию списков, разделенных запятыми. (Это было создано на SQL Server 2016.)
Примечание 3: Массивы для данной карты не сортируются (что нормально для спецификации). Числа в массиве правильно отсортированы. В этом случае каждая «карточка» вопроса, выводит свои массивы в отдельный ряд результатов.
Короче к массиву с жестким кодом?
Да.
Байт мне.
источник
C # (интерактивный компилятор Visual C #) , 112 байт
Попробуйте онлайн!
источник
Красный ,
108107 байтПопробуйте онлайн!
источник
APL + WIN,
6562 байтаПопробуйте онлайн! Предоставлено Dyalog Classic
источник
MATLAB, 155 байт
Это может быть короче, как несколько строк, но я хотел сделать это в одной строке кода.
источник
05AB1E , 14 байтов
Попробуйте онлайн!
источник
žO
вместо просто6L
? Я знаю, что вы не используете их на своей карте, но мне любопытно, почему вы использовалиaeiouy
для создания списка с 6 значениями. xD Хороший ответ, кстати!6L
,6и
,5Ý
,5°
, или9!
.тœ
,₅œ
,₁œ
, а также работа, те довольно прохладно тоже (:₆b
будет работать так же;)