Создайте функцию или программу, которая делает сетку как можно ближе к квадрату
- Вам будет дано целое число N в качестве входных данных, целые числа (1,2,3,25 и т. Д.)
- На выходе должна быть идеальная прямоугольная сетка из N букв, максимально приближенная к квадрату
- Квадрат (подражатель) должен состоять из одной из букв O или X, как указано пользователем
Очки :
- Закодировано только O или X: +1
- Параметр (0/1, true / false, что-то похожее) для поворота вывода (например, с 5 или 8): -10
- Создайте квадрат (используйте O и X в каком-то шаблоне): -5
Шаблон считается действительным, если он содержит оба типа символов (где ось x / y> = 3), и шаблон остается тем же самым, когда переворачивается по горизонтали или вертикали (допускается замена X на Os)
Примеры
INPUT: 4 INPUT: 5 INPUT: 8 INPUT: 9
OO OOOOO XXXX XOX
OO XXXX OXO
or rotated 90deg XOX
Примеры, которые не разрешены (не одинаковые по длине строки или столбцы)
BAD RESULT: 5a BAD RESULT: 5b BAD RESULT: 8
OOO OO OOO
OO OO OOO
O OO
Если возможно, приведите пример онлайн.
"xo"[i]
вместо этого я получаю три очкаi
? Это не стоит того. В целом, все ваши награды кажутся низкими.Ответы:
CJam, 16 (31 - 10 - 5)
Для этого нужно ввести два целых числа, первое из которых является
0
или1
для направления, а второе - числомO
илиX
в сетке.Он печатает альтернативу
O
иX
.Это просто тело функции, чтобы попробовать его добавить
l~
перед кодом, как:и дать вклад как
чтобы получить вывод, как
или введите как
за
Попробуйте онлайн здесь
Как это работает:
Пример выполнения:
источник
APL (36 - 5 - 10 = 21)
Левый аргумент - вращение, правый аргумент - размер. Он также использует простой шаблон (он просто чередует 'X' и 'O').
Объяснение:
∆←,⍳2/⍵
: сгенерировать все возможные пары чисел из1
в⍵
и сохранить в∆
.∆←∆[⍋|-/¨∆
...]
: сортировка по∆
возрастанию по абсолютной разности двух чисел в каждой паре и сохранение результата в∆
.⊃∆/⍨⍵=×/¨∆
: для каждой пары умножьте числа вместе. Выберите только те пары, которые умножаются на⍵
, и возьмите первую, которая соответствует (которая является «самой квадратной» из-за сортировки).⍺⌽
: повернуть список длин (который имеет 2 элемента) на⍺
.'OX'⍴⍨
: создайте матрицу такого размера и заполните ее чередующимисяO
иX
.источник
Хаскель, 59 персонажей
источник
CJam,
252221 (31 - 10)Это функциональное тело. Если вы хотите законченную программу, добавьте
riri
в начало. Если вы хотите использовать его как блок кода, поместите его в{}
. Проверьте это на cjam.aditsu.net .Он принимает входные данные в виде двух целочисленных аргументов: переключатель для определения того, является ли прямоугольник вертикальным (любое ненулевое значение) или горизонтальным (ноль), и числом
O
s для использования.объяснение
источник
JavaScript (E6) 84 (83 + 1) или 101 (116-10-5)
Паттерн + вращение (параметр f, 0 или 1) - бонус 15
Без рисунка, без вращения - штраф 1
Тест в консоли FireFox / FireBug
источник
Python,
7975 (без бонусов)Бонусы кажутся хитрыми, поэтому вот довольно простая функция Python:
источник
f(8)
дал мне один столбец 8O
с, что является неправильным.>
где должен был быть<
. Это сейчас исправлено. Спасибо за примечание!Руби, 74
объяснение
Integer
.n
делится ли (вход) на каждое целое число от 1 доn
.n
).String#*
метод, чтобы «нарисовать» квадрат.источник
APL (Dyalog Unicode) , 30 - 15 = 15 байт SBCS
Анонимный инфикс лямбда. Принимает N в качестве правого аргумента и параметр в качестве левого аргумента. Прямоугольники либо будут иметь полосы X и O, либо будут клетчатыми.
Попробуйте онлайн!
{
…}
"Дфн";⍺
левый аргумент (param),⍵
правый аргумент ( N ):⍳⍵
1ndice 1… N∘.×⍨
таблица умножения этого⍵=
маска, где N равно этому⍸
of указатели истинных значений в маскеc←
сохранить это вc
(для c andidates)≢
подсчитать кандидатов.5×
половина, умноженная на это⌈
потолок (вверх)⊃∘c
выбрать этот элемент изc
⍴∘'XO'
использовать это, чтобы циклически изменить форму "XO"⍉⍣⍺
перенести если парамисточник
05AB1E (наследие) , оценка: 7 (22 байта - 15 бонусов)
Попробуйте онлайн или проверьте еще несколько тестов .
N
Сначала принимает входные данные , затем логическое значение (0
/1
), должно ли оно вращаться или нет.Использует унаследованную от Python версию 05AB1E, поскольку zip со списком строк неявно выравнивает и объединяет символы, в отличие от более новой версии 05AB1E для перезаписи Elixir.
Объяснение:
источник
GolfScript 26 (41 - 10 - 5)
Ожидается, что в стеке будут два параметра:
0
для нормального или1
для транспонированногоn
значениеШаблон состоит в том, что на доске полно
X
s, а верхний левый угол -O
. Излишне говорить, что этот шаблон сохраняется при транспонировании доски.Демо: обычная , транспонированная
источник
Mathematica, 71 символ
источник
Petit Computer BASIC, 72 байта
источник
J , 32 байта - 15 = 17 байтов
Попробуйте онлайн!
Вращение контролируется флагом 0/1, принятым в качестве левого аргумента.
источник
Сетчатка 0.8.2 , 66 байт + штраф 1 байт = 67
Попробуйте онлайн! Объяснение:
Преобразуйте входные данные в строку
X
s.Первый проход внешнего захвата соответствует началу строки, в то время как на последующих проходах сопоставляется предыдущее значение внутреннего захвата. Внутренний захват затем увеличивается и сопоставляется. Результатом этого является то, что количество строк, потребляемых внешним захватом, представляет собой квадрат внутреннего захвата, который, следовательно, не может превышать квадратный корень из ввода. Между тем последующее повторение гарантирует, что внутренний захват является фактором длины строки.
Сохраните обнаруженный коэффициент и вычислите другой делитель, добавив количество последующих повторений.
Переставьте факторы в прямоугольник.
источник
Древесный уголь , 33 байта - 10 - 5 = 18
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Вход
N
.Возьмите диапазон
0
..N
, оставьте только числа, чьи квадраты не меньше,N
и разделитеN
, и возьмите минимум этих чисел.Используйте обнаруженный фактор, чтобы вывести прямоугольник соответствующей ширины и высоты, используя рисунок на шахматной доске. (Это должно быть
UOη÷θηXO¶OX
для 1-байтового сохранения, но это сейчас глючит.)Если второй вход не равен нулю, поверните выход. (Если требуется, чтобы второй вход был
0
или2
является приемлемым, то это может быть⟲N
для 1-байтового сохранения.)источник