Напишите программу или функцию, которая принимает три натуральных числа, W, H и N. Напечатайте или верните сетку W × H, .
где каждый N-й .
в обычном английском порядке чтения заменен на X
.
Например, если W = 7, H = 3, N = 3, сетка имеет 7 символов в ширину и 3 в высоту, а каждое третье чтение символов слева вверху представляет собой X
:
..X..X.
.X..X..
X..X..X
Точно так же, если вход W = 10, H = 4, N = 5, выход будет:
....X....X
....X....X
....X....X
....X....X
Заметки
- «Обычный порядок чтения по-английски» означает движение слева направо в каждой строке, от верхней строки до нижней.
- Когда N равно 1, тогда все
.
становятсяX
's. - Вы можете использовать любые два различных печатных символа ASCII вместо
.
иX
.- Если вы используете space (
- Вы не можете использовать что-то другое вместо новых строк, которые формируют сетку.
- Если вы используете space (
- Точный формат ввода и порядок W, H и N не являются супер важными. Вещи как
[H,W,N]
илиN\nW,H
в порядке. - Завершающий перевод строки в выводе в порядке.
- Самый короткий код в байтах побеждает!
Примеры
W = 5, H = 3, N = 1
XXXXX
XXXXX
XXXXX
W = 5, H = 3, N = 2
.X.X.
X.X.X
.X.X.
W = 5, H = 3, N = 3
..X..
X..X.
.X..X
W = 5, H = 3, N = 4
...X.
..X..
.X...
W = 5, H = 3, N = 5
....X
....X
....X
W = 5, H = 3, N = 6
.....
X....
.X...
W = 5, H = 3, N = 7
.....
.X...
...X.
W = 5, H = 3, N = 15
.....
.....
....X
W = 5, H = 3, N = 16 (or more)
.....
.....
.....
W = 1, H = 1, N = 1
X
W = 1, H = 1, N = 2 (or more)
.
W = 8, H = 6, N = 2
.X.X.X.X
.X.X.X.X
.X.X.X.X
.X.X.X.X
.X.X.X.X
.X.X.X.X
W = 8, H = 6, N = 3
..X..X..
X..X..X.
.X..X..X
..X..X..
X..X..X.
.X..X..X
W = 8, H = 6, N = 4
...X...X
...X...X
...X...X
...X...X
...X...X
...X...X
W = 8, H = 6, N = 7
......X.
.....X..
....X...
...X....
..X.....
.X......
W = 8, H = 6, N = 16
........
.......X
........
.......X
........
.......X
W = 37, H = 1, N = 4
...X...X...X...X...X...X...X...X...X.
W = 1, H = 10, N = 8
.
.
.
.
.
.
.
X
.
.
code-golf
arithmetic
grid
Кальвин Хобби
источник
источник
["..X..X.", ".X..X..", "X..X..X"]
как сетку »?Ответы:
J
95 байтИспользует пробелы и
1
'ы и ожидает ввода в видеH W f N
Объяснение:
Использование:
Попробуйте это онлайн здесь.
источник
($":&1)
, не будет ли это считаться 7 байтами?()
они не являются частью функции; Вы могли бы написатьf =. $":&1
и тогда3 7 f 3
.Python 2, 60 байт
Это печатает пространство и
0
вместо.
иX
. Ввод принимается как кортеж в видеw,h,n
.источник
J, 12 байт
Это диадическая функция, которая принимает массив в
H W
качестве левого аргумента иN
правого аргумента. Использование:объяснение
источник
X.
действительно кратчайшим?_1
скобки круглые скобки и отформатировать пробелы между столбцами, и получилось больше.BBC Basic, 67 символов ASCII, токенизированный размер файла 43 байта
Скачать переводчик можно по адресу http://www.bbcbasic.co.uk/bbcwin/download.html.
BBC basic имеет удобную команду для ограничения ширины поля. Мы используем
STRING$
для созданияw*h
копии строкиn-1
периодов, за которой следует X. Затем мы используем LEFT $ для усечения этого доw*h
символов.источник
Минколанг 0,14 ,
34302822 байтаПроверьте один случай здесь и проверьте все тесты здесь. Ожидает ввода, как
N W H
.объяснение
Поскольку кодовое поле Минколанга является тороидальным, оно будет перенесено в начало. Как
n
теперь все примут-1
, это в конечном итоге завершится с ошибкой и без дальнейшего вывода, что разрешено.источник
CJam (16 байт)
Делает ввод в стеке в порядке
N W H
, возвращает строку с использованием символов0
и1
. Онлайн деморассечение
источник
APL, 13 байт
Это принимает
H W
в качестве левого аргумента иN
в качестве правого аргумента.Объяснение:
Попробуйте онлайн: первые контрольные примеры , последний контрольный пример . Обратите внимание, что хотя это показывает вывод в штучной упаковке, моя копия Dyalog не делает.
источник
CJam, 20 байт
Принимает ввод как HW N.
источник
q~_@*,@(S*'X+f=/N*
с вводом в порядке NH W.'X
на0
, и это будет 17MATLAB,
61 5554 байтаУх ты, я думал, что MATLAB будет конкурентоспособен в этом, но как я ошибался!
Функция создает массив из 1 правильных размеров, а затем устанавливает каждый n-й элемент равным 0 (MATLAB неявно обрабатывает обтекание индексов в 2D). Затем мы добавляем 45 ('-') к этому числу и преобразуем в массив символов для возврата.
Вопросы позволяют использовать любые два различных символа ASCII для сетки, я использую '-' вместо 'x', чтобы сохранить несколько байтов. Формат ввода также не является фиксированным, поэтому он должен быть представлен как
[w h],n
- то есть массив ширины и высоты, а затем n в качестве второго параметра.Это также работает с Octave и можно попробовать онлайн здесь . Функция уже настроена в связанном рабочем пространстве, поэтому вы можете просто вызвать, например:
Какие выводы:
источник
c=[b'+45,''];
Обработка, 93 байта (Java, 104 байта)
Причина, по которой я использовал Processing вместо Java, заключается в том, что вам не нужно получать доступ к указателю с помощью подсказок,
System.out
потому что локальная переменная доступна напрямую. Я заработал 11 байтов с этим. Функция не возвращает результат, а печатает его.источник
i++%a...
), и похоже, что вы также оставили запасной}
конец, который вам не нужен.Japt ,
33322725 байтПринимает ввод в формате
и
W H N
. Использует"
вместо.
иX
соответственно. Попробуйте онлайн!Неуправляемый и объяснение
Предложения приветствуются!
источник
Витси ,
2523222119 БайтСпасибо @ Sp3000 за то, что он указал, что мне не нужен дубликат, и сэкономил мне 2 байта!
Принимает вход как
N W H
. Попробуйте онлайн!источник
К,
21191814 байтПринимает аргументы как
(H W;N)
:В бою:
источник
Пиф -
191817 байтНадеюсь, что гольф это больше. Принимает вход как
N\n[W, H]
.Тестовый пакет .
источник
R, 66 байт
Это функция, которая принимает три целых числа и возвращает матрицу символьных значений. Чтобы вызвать его, назначьте его переменной.
Ungolfed:
источник
JavaScript (ES6),
6560 байтобъяснение
Тест
Показать фрагмент кода
источник
Mathematica, 85 байт
Как и во многих других решениях, это создает одну строку, а затем разделяет ее.
источник
JavaScript (ES6), 55 байт
Использует IIFE
f
для цикла, чтобы сохранить оператор возврата.Выход для w = 5, h = 3, n = 7:
источник
C #, 185 байт
Для более удобочитаемого чтения:
Использование:
источник
Юлия, 50 байтов
Это создает функцию
f
которая принимает три целых числа и возвращает двумерный массив строк.Ungolfed:
источник
Рубин,
6756 байтПечать массива, поскольку он принят.
67 байт
Ungolfed:
Использование:
источник
MATLAB, 44 байта
Примечание: совсем другой подход, чем тот, который использовал Том Карпентер.
Определяет анонимную функцию, которая принимает входные данные как
[W,H],N
. Я подошел к этой проблеме, используя not-the-modulo-of- N для массива 1: W * H, а затем просто изменил решение для двумерного массива, который затем преобразуется в массив символов.Пример вывода для
[5,3],7
:источник
Common Lisp, SBCL, 94 байта
объяснение
(=(mod(1+ i)c)0)(=(mod(1+ i)a)0)
выглядит довольно глупо (потому что это так похоже, но я не знаю, можно ли это решить, сохраняя байтыЯ использую
(1+ i)
вместо того,i
потому чтоdotimes
начинается с,i=0
и я хочу начать с1
. Это также полезно, потому что я могу использовать(* a b)
вместо(1+(* a b))
источник
Ява,
185183 байтаСпасибо Томасу Ква, за то, что он спас мне 2 байта!
Ungolfed (иш):
Использование:
Может быть, Java выиграет один день: P
источник
>0
вместо!=0
и<1
вместо==0
.