Ввод: положительное число, меньшее 80, из стандартного ввода или в качестве аргумента командной строки.
Выход: квадратная шахматная фигура, размер входного числа. Темные поля представлены буквой «X», белые поля - пробелом. Верхнее левое поле должно быть 'X'.
Полная программа не требуется.
Примеры:
Вход : 1
Выход :
X
Вход : 8
Выход :
X X X X
X X X X
X X X X
X X X X
X X X X
X X X X
X X X X
X X X X
Ответы:
Пиф, 13 символов
Примечание: Pyth слишком нов, чтобы иметь право на победу. Тем не менее, это был веселый гольф, и я решил поделиться им.
Попробуй это здесь.
Как это устроено:
В основном, это используется
X
для генерации"X "
или" X"
поочередно, затем повторяет этоQ
время строки и принимает его первыеQ
символы. Это повторяетсяQ
раз.Как работает
X
функция (назначить в)? Он принимает исходную строку," "
в данном случае, место назначения,N
в этом случае, и символ замены,"X"
в этом случае. Поскольку присваивания Pyth являются модульными, это заменяет пространство в местоположенииN%2
наX
и возвращает результирующую строку, которая, следовательно, находится"X "
в первой, третьей и т. Д. Строках, а также" X"
в других.источник
Golfscript - 17 символов
Анализ
~
преобразовать ввод в:N
хранилище int в переменной N,{...}
для каждого значения [0 ... N-1],"X "N*
повторить «X», чтобы получить строку из N * 2 символов,>
взять подстроку, начиная с индекса цикла ...N<
... окончание N символов позжеn
поставить новую строку в конце каждой строкиисточник
Perl,
4140Perl 5.10 или более поздней версии, запускается с
perl -nE 'code'
(n
считается в размере кода)Образец вывода:
источник
x
это оператор повторения строк.'a' x 3
доходность'aaa'
.Python, 48 символов
источник
Python, 76 символов
источник
Scala -
14195 символовИспользование:
scala filename N
где n - ваш вклад в программу.источник
APL (16)
Если предположить,
⎕IO=0
(то есть массивы с нулевым индексом, это настройка)Объяснение:
⍳2⍴⎕
: прочитайте число N и создайте матрицу N × N, содержащую (0,0) - (N-1, N-1).2⊤¨
: получить младший значащий бит каждого числа в матрице. (Так что теперь у нас есть (0,0), (0,1), (0,0) ... (1,0), (1,1), (1,0) ...)=/¨
: для каждой пары посмотрите, равны ли два числа. (Теперь у нас есть 1 0 1 0 1 0 ...)' X'[
...]
: ставьте пробел для каждого 0 и X для каждого 1.источник
Руби
4542Демо: http://ideone.com/Mw25e
источник
(x=gets.to_i).times
сохраняет три символа. Почему внезапно возобновился интерес к этому старику?питон
48 символовРЕДАКТИРОВАТЬ: Kinda Wrong ... В конце есть дополнительное место ... но это не видно. Если вы измените пробел на «O» (или любой непробельный символ), то измените
[i%2:n]
на[i%2:n+i%2]
. для правильной версии.источник
C ++ - 253 запутанных персонажа
источник
JavaScript, 169
источник
+'1'
вместоparseInt('1')
. Не даст вам целое число, но я не думаю, что важно, чтобы оно было целым, не так ли?к (26 символов)
26 Для голой функции:
Или еще 7, чтобы принять вход от стандартного ввода
источник
Баш: 60 символов
Размер таблицы передается в качестве параметра командной строки, например
bash chesstable.sh 8
.источник
Java 10, лямбда-функция,
928784 байтаПопробуйте это онлайн здесь .
Благодаря потолку catcat для игры в гольф 4 байта и Кевину Cruijssen для игры в гольф еще 3.
Безголовая версия:
Java 8, полная программа,
155139 байтПопробуйте это онлайн здесь .
Безголовая версия:
источник
s+=
на 2 байта короче скобок:n->{var s="";for(int i=0;i<n*n;s+=++i%n<1?"\n":"")s+=(i%n+i/n)%2<1?"X":" ";return s;}
n->{for(int i=0;i<n*n;)System.out.print(((i%n+i/n)%2<1?"X":" ")+(++i%n<1?"\n":""));}
. Попробуйте онлайн."X ".charAt(i%n+i/n&1)
вместо((i%n+i/n)%2<1?"X":" ")
Japt
87 байтЗапустите его онлайн
76 байт, если мы можем заменитьX
наx
:Запустите его онлайн
Альтернативное 8-байтовое решение:
Запустите его онлайн
источник
APL (Dyalog Extended) , 12 байтов SBCS
Функция анонимного молчаливого префикса. Требуется
⎕IO←0
(индексация с нуля).Попробуйте онлайн!
⍳
ɩ ndices 0 ... п-1+⍀
плюс таблица с этим по горизонтали и вертикали:⍳
ɩ ndices 0 ... п-12|
остаток деления при делении на два'X '⊇⍨
использовать эту матрицу для индексации в строкеисточник
Скала, 68 байт
или
Попробуйте онлайн!
источник
Brainfuck, 140 байт
источник
Javascript, 67 байт
Попробуйте онлайн
C 83 байта
Попробуйте онлайн
Базовый C64, 89 байт
источник
on...go to
команду условно, например,ON-(I+JAND1)GOTO3:?"X";:
там , где она равна нулю, она будет переходить к следующему оператору, в этом случае, если(I + J AND 1) === 0
тогда она напечатает X. Это позволяет вам упаковать больше операторов на строку и сохранить байты.Скала, 40 и 54
Количество символов составляет 40 для функции, 54 для полной программы.
Решение, дающее только тело функции:
("X "*n)sliding n take n foreach println
Попробуйте онлайн
Решение, дающее полную программу:
val n=readInt;("X "*n)sliding n take n foreach println
Вы можете запустить его с помощью следующей командной строки.
scala -e 'val n=readInt;("X "*n)sliding n take n foreach println' <<< 8
где 8 - вход.
источник
("X "*n)sliding n take n map println
Python - 127 символов
источник
С -
9286источник
Q, 33
источник
{(x;x-1-x mod 2)#"X "}
для 22 ... ах нет, имеет такую же ошибку , как ваша - оленья кожа имеет 4 иксы на нечетных строк для ввода 8.Ruby 58
источник
PHP - 136 символов (без пробелов)
Позволяет вводить функции x и y.
Также поддерживает нечетные входы сейчас.
Если вы стилизуете вывод, чтобы иметь высоту строки 0,65 мкм, и измените ▒█ и █░ на □ ■ и ■ □, то он получится похожим на настоящую (квадратную) шахматную доску.
Код:
Выход:
источник
PHP, 87
источник
CJam, 18 байт
Я, вероятно, мог бы просто перенести ответ GolfScript, но здесь другой подход. (И CJam не имеет права на победу в любом случае.)
Проверьте это здесь.
Идея заключается в том , чтобы перебрать 2D - сетку с й и у индексов в стеке, используя в
f{f{...}}
трик . Учитывая x и y, мы можем просто определить черно-белое как(x+y)%2
и использовать это, чтобы выбрать между символомX
и строкой, содержащей пробел.источник
J, 21 символ
J тоже не хватало.
Предыдущая, 22 символа:
Char коды из шаблона mod2
row #
+column #
:источник
([:{&' X'=/~@$&1 0)
$"1[:|.&'X '"+i.
Попробуйте онлайн!VB.net, 161
источник
PHP, 75 байт
источник