Возьмите положительное целое число n в качестве входных данных и выведите матрицу n-by-n шахматной доски, состоящую из 1 и 0 .
Верхняя левая цифра всегда должна быть 1 .
Тестовые случаи:
n = 1
1
n = 2
1 0
0 1
n = 3
1 0 1
0 1 0
1 0 1
n = 4
1 0 1 0
0 1 0 1
1 0 1 0
0 1 0 1
Форматы ввода и вывода не являются обязательными. Вывод матрицы в виде списка списков допускается.
Ответы:
Желе , 4 байта
52 секунды!
Попробуйте онлайн!
источник
MATL , 5 байтов
Попробуйте это в MATL онлайн!
объяснение
Рассмотрим ввод
4
в качестве примера.источник
Japt , 6 байт
Проверьте это онлайн! (Использует
-Q
флаг для облегчения визуализации)объяснение
Интересно отметить, что
v
это не встроенная функция «делится на 2». Вместо этого это «делимый на X» встроенный. Однако, в отличие от большинства языков игры в гольф, функции Japt не имеют фиксированной арности (они могут принимать любое количество правильных аргументов). Когда задано 0 правильных аргументов,v
предполагается , что вы хотели2
, и таким образом действует точно так же, как он был задан2
вместо ничего.источник
V ,
16, 15 байтовПопробуйте онлайн!
HexDump:
источник
Haskell ,
50413938 байтСпасибо nimi и xnor за помощь в сокращении
910 байтАльтернативно, на один байт больше:
или:
Вероятно, неоптимальный, но чистый, прямой подход.
источник
concat.repeat
являетсяcycle
:n!l=take n$cycle l
. Если вы идете pointfree он сохраняет еще один байт:(!)=(.cycle).take
.f n|r<-take n.cycle=r[r"10",r"01"]
или подобное. но Хаскелл, кажется, делает вывод, что не тот типr
? Работает с явной типизациейf n|r<-take n.cycle::[a]->[a]=r[r"10",r"01"]
.NoMonomorphismRestriction
не помогло. Не сделалRank2Types
илиRankNTypes
. Вы знаете, что там происходит?APL (Дьялог) , 8 байт
Попробуйте онлайн!
объяснение
Давайте назовем аргумент
n
.Это создает матрицу
Затем
2|
принимает модуль 2 матрицы (он векторизуется), после чего~
принимает НЕ результата.источник
Mathematica, 25 байт
источник
JavaScript ES6,
55545146 байтСохранено 1 байт благодаря @Neil
Сохранено 2 байта благодаря @Arnauld
Попробуйте онлайн!
Это выводит в виде массива массивов. Диапазоны JavaScript довольно неудобны, но я использую,
[...Array(n)]
который генерирует массив размераn
источник
n=>[...Array(n)].map((_,i,a)=>a.map((_,j)=>(i+j+1)%2))
Сетчатка ,
3330 байтПопробуйте онлайн! Пояснение: Первая ступень преобразует входные данные в унарные, используя
1
s (удобно!), А вторая ступень превращает значение в квадрат. Третья ступень инвертирует чередующиеся биты в каждой строке, в то время как последняя ступень инвертирует биты в чередующихся строках. Редактировать: 3 байта сохранены благодаря @MartinEnder.источник
$`1$'
это просто$_
.$_
, спасибо!MATL , 7 байт
Попробуйте онлайн!
Объяснение:
Примечание: я начал решать это в MATL после того, как опубликовал задачу.
источник
:&+o~
Y
модифицированные инструкции, которые использует @LuisMendo.Брахилог , 15 байт
Попробуйте онлайн!
объяснение
источник
Clojure, 36 байт
Да, правильный инструмент для работы.
источник
05AB1E ,
97 байт-2 байта благодаря Emigna
Попробуйте онлайн!
объяснение
источник
»
как вывод списка списков в порядке, и вы также можете удалитьs
.Java (OpenJDK 8) ,
8077 байт-3 байта благодаря Кевину Круйссену
Попробуйте онлайн!
О, смотрите, полу-разумный ответ на Java с большим количеством забавных операторов.
лямбда, которая принимает int и возвращает строку. Работает, используя номер строки и номер столбца, используя / и%, чтобы определить, какое значение это должно быть, мод 2;
Ungolfed:
источник
(i++/j+i%j)%2
наi++/j+i%j&1
так, чтобы вам не понадобились эти скобки. Который делает общий 1 байт короче моего решения для вложенного цикла for (n->{String r="";for(int i=0,j;i++<n;r+="\n")for(j=0;j<n;r+=j+++i&1);return r;}
), так что +1 от меня. :)Древесный уголь, 8 байт
Попробуйте онлайн! Объяснение: Это примерно соответствует следующему подробному коду (к сожалению, в настоящее время девербозификатор добавляет ненужный разделитель):
источник
Pyth , 9 байт
Попробуй это!
другое 9-байтовое решение:
Попытайся!
источник
J , 9 байт
Попробуйте онлайн!
источник
Mathematica, 23 байта
источник
Октава , 24 байта
Попробуйте онлайн!
Или той же длины:
Попробуйте онлайн!
источник
R ,
3837 байтПопробуйте онлайн!
-1 байт благодаря Джузеппе
Использует преимущества правил переработки R, во-первых, при создании матрицы, а во-вторых, при добавлении 0: (n-1) к этой матрице.
источник
t
и вместо этого построив матрицу с помощьюbyrow=T
, то есть,(matrix(1:n,n,n,T)+1:n-1)%%2
outer(1:n,1:n-1,"+")%%2
на несколько байт короче :)Swi-Prolog, 142 байта.
Попробуйте онлайн - http://swish.swi-prolog.org/p/BuabBPrw.pl
Он выводит вложенный список, поэтому правила говорят:
t()
это переключение, оно делает 0 -> 1 и 1 -> 0.r()
успешно для отдельной строки, которая является рекурсивной проверкой строки, что это альтернативные и только нули.f()
рекурсивно проверяет все строки, имеют ли они правильную длину, являются ли они допустимыми строкамиr()
и каждая ли строка начинается с отличающихся 0/1.c(N,C)
говорит, что C является допустимой шахматной доской размера N, если число строк (вложенных списков) равно N, а помощник f успешен.Тестовые случаи:
источник
C
696763 байтаСпасибо @Kevin Cruijssen за сохранение двух байтов и @ceilingcat за сохранение четырех байтов!
Попробуйте онлайн!
источник
printf("%d "
, так как это еще один допустимый метод вывода.(j+++i)%2
для ,j+++i&1
чтобы удалить эти скобки.QBIC , 19 байт
объяснение
источник
Брахилог , 19 байт
Попробуйте онлайн!
источник
PHP , 56 байт
Вывести в виде строки
Попробуйте онлайн!
PHP , 66 байт
Вывод в виде 2 D массива
Попробуйте онлайн!
источник
CJam , 17 байт
Попробуйте онлайн!
Возвращает список (ссылка TIO имеет форматированный вывод).
источник
Баш + рс, 42
Попробуйте онлайн .
источник
Чеддер , 38 байт
Попробуйте онлайн!
источник
/// , 87 байт + вход
Попробуйте онлайн! (вход для 4)
Унарный ввод в
1
с, 95 байт + вводПопробуйте онлайн! (вход для 8)
Как это работает?
V
иD
к гольфу\/
и//
соответственно./*/k#/
и/&1/k#&//&|//
разделить вход в эквивалент'k#'*len(input())
/#k//k#//&k/k&//\/k/k\//
переместить всеk
s в/r/S/
блокS
s просто используются для заполнения экземпляров, гдеk
s идут после/
s, чтобы они не перемещались в другое место, аS
s затем удаляются#
с затем превращаются вr\n
сСтрока
k
s превращается в переменную1010...
строкуС
r\n
превращаются в1010...\n
сКаждая пара
1010...\n1010\n
превращается в1010...\01010...;\n
Либо
0;
или1;
обрезаны (потому что01010...
строка слишком длинна на 1)источник
Mathematica, 28 байт
Чистая функция, принимающая положительное целое число в качестве входных данных и возвращающая 2D-массив. Использует периодическую функцию cos² (πx / 2) для генерации 1 и 0.
Для немного больше удовольствия, как насчет 32-байтового решения
который использует местоположения тривиальных нулей дзета-функции Римана.
источник