Сегодняшняя задача проста: не принимая никакой информации, выведите любую действующую доску судоку.
Если вы не знакомы с судоку, Википедия описывает, как должна выглядеть действующая доска :
Цель состоит в том, чтобы заполнить сетку 9 × 9 цифрами, чтобы каждый столбец, каждая строка и каждая из девяти подсеток 3 × 3, составляющих сетку (также называемые «ящиками», «блоками» или «регионами»), содержали все цифры от 1 до 9.
Теперь вот в чем дело ... Существует 6 670 903 752 021 072 936 960 различных действующих карт судоку . Некоторые из них могут быть очень сложными для сжатия и вывода в меньшем количестве байтов. Другие из них могут быть проще. Часть этой задачи состоит в том, чтобы выяснить, какие платы будут наиболее сжимаемыми и могут быть выведены с наименьшим количеством байтов.
Ваша заявка не обязательно должна каждый раз выводить одну и ту же доску. Но если возможно несколько выходов, вам нужно будет доказать, что каждый возможный выход является допустимой платой.
Вы можете использовать этот скрипт (спасибо Magic Octopus Urn) или любой из этих ответов, чтобы проверить, является ли конкретная сетка допустимым решением. Он выведет a [1]
для действительной доски и что-нибудь еще для неверной доски.
Я не слишком разборчив в том, в каком формате вы выводите свой ответ, если он явно двухмерный. Например, вы можете вывести матрицу 9x9, девять матриц 3x3, строку, массив строк, массив из 9-значных целых чисел или девять 9-значных чисел с разделителем. Вывод 81 цифры в одном измерении не допускается. Если вы хотите узнать о конкретном формате вывода, не стесняйтесь спрашивать меня в комментариях.
Как обычно, это код-гольф , поэтому напишите кратчайший ответ, который вы можете придумать на выбранном вами языке!
источник
Ответы:
Pyth,
22141210 байтСохранено 2 байта благодаря г-ну Xcoder.
Попробуй здесь
источник
m.<S9d%D3 9
..<LS9%D3 9
.Python 2 , 47 байт
Попробуйте онлайн!
источник
T-SQL,
96-89 байтНашел один короче, чем тривиальный вывод!
Извлекает 9-символьные строки, начиная с разных точек, как определено в таблице в памяти, созданной
STRING_SPLIT
(которая поддерживается в SQL 2016 и более поздних версиях). Это0+value
был самый короткий способ, которым я мог сделать неявное приведение к целому числу.Исходный тривиальный вывод (96 байт):
источник
Желе , 7 байт
Попробуйте онлайн!
И немного этого ...
-1 благодаря Джонатану Аллану (думает?)
источник
Python 2 , 53 байта
Попробуйте онлайн!
Альтернативы:
Python 2 , 53 байта
Попробуйте онлайн!
Python 2 , 54 байта
источник
Python 3 ,
5855 байтПопробуйте онлайн!
Элементы байтовой строки в итоге дают числа,
[1, 4, 7, 2, 5, 8, 3, 6, 9]
которые используются для перестановки вращений[0..9]
. Объект0
удален,l[1:i]
и нет необходимости в нулевом байте, для которого требуется два символа (\0
) для представления в байтовом объекте.55 байт
источник
Желе ,
98 байтПопробуйте онлайн!
источник
Пакетная, 84 байта
Использует вывод @ Mnemonic.
call
используется для интерполяции переменной в операцию среза (обычно она принимает только числовые константы).источник
JavaScript (Node.js) , 47 байт
Вывести в виде массива строк.
Попробуйте онлайн!
Создает это:
источник
Perl 6 ,
40 3227 байт-5 байт благодаря nwellnhof
Попробуйте онлайн!
Блок анонимного кода, который возвращает матрицу 9x9. Сопоставляет каждую строку с различным вращением в диапазоне от 1 до 9.
источник
J , 18 байт
Попробуйте онлайн!
Выход
Как это работает
Необычная версия, 23 байта
Попробуйте онлайн!
Выход:
Как это работает
источник
05AB1E ,
1412 байт-2 байт путем создания порта @Mnemonic Pyth ответа «s .
Попробуйте онлайн. (Нижний колонтитул добавлен в pretty-print it. Фактический результат - матрица 9x9; не стесняйтесь снимать нижний колонтитул, чтобы увидеть.)
Объяснение:
Оригинальное 14- байтовое решение:
Попробуйте онлайн. (Нижний колонтитул добавлен в pretty-print it. Фактический результат - матрица 9x9; не стесняйтесь снимать нижний колонтитул, чтобы увидеть.)
Объяснение:
Оба ответа приводят к судоку:
источник
Octave & Matlab,
504829 байтПопробуйте онлайн!
-2 благодаря Джонатону Фреху
-14 благодаря предложению Sanchises Broadcast, которое также указало на несовместимость.
-5, заметив, что вектор может быть записан в Matlab с символьной строкой и транспонированием.
Был интуитивно понятен, теперь не так. Использует широковещательное суммирование для распределения 1: 9 по 9 строкам, распределенных по значениям, определенным символьной строкой
Судоку доски производят:
источник
Haskell , 41 байт
Попробуйте онлайн!
источник
s=
так как это не нужноJava 10,
8275 байт-7 байт, создав порт одного из ответов @TFeld 's Python 2 .
Попробуйте онлайн.
Объяснение:
Выводит следующую судоку (разделенную пробелами вместо новых строк, как показано ниже):
источник
Python - 81 байт
Попробуйте онлайн
Мне нравится иметь 81 байт, но после некоторой оптимизации :(
Python 2 -
75 68 5958 байт-7 байт благодаря @DLosc
-9 байт благодаря @Mnemonic
-1 байт благодаря @JoKing
Попробуйте онлайн
источник
r=range(1,10)
но не смог испортить красотуl
Рубин , 34 байта
Попробуйте онлайн!
источник
R , 54 байта
Выход:
Попробуйте онлайн!
источник
Огромное спасибо @Shaggy!
JavaScript (Node.js) , 61 байт
Попробуйте онлайн!
источник
MathGolf ,
1611 байтПопробуйте онлайн!
Сохранено 5 байтов благодаря JoKing
источник
Холст ,
1311 байтовПопробуй это здесь!
источник
C (лязг) , 65 байтов
Функция теперь может быть повторно использована
Попробуйте онлайн!
источник
f(); f()
выводит одну и ту же плату дважды, но не, если второй вызов не работает вообще.f(i){for(i=81;i--;)printf("%d%c",(i/9*10/3+i)%9+1,i%9?9:10);}
К (нгн / к) , 16 байт
Попробуйте онлайн!
Первый ответ в ngn / k, сделанный с большой помощью самого человека, @ngn.
Как:
источник
Japt,
1110 байтПопробуйте или проверьте вывод
объяснение
источник
Древесный уголь , 14 байтов
Попробуйте онлайн! Ссылка на подробную версию кода. Использует вывод @ Mnemonic. Объяснение:
источник