Это 3x3
ASCII-пазл:
_____ _____ _____
| _| |_ |
| (_ _ _) |
|_ _|_( )_|_ _|
| (_) |_ _| (_) |
| _ _) (_ _ |
|_( )_|_ _|_( )_|
| _| (_) |_ |
| (_ _) |
|_____|_____|_____|
Это также 3x3
ASCII-пазл:
_____ _____ _____
| |_ _| |
| _ _) (_ _ |
|_( )_|_ _|_( )_|
| _| (_) |_ |
| (_ _ _) |
|_ _|_( )_|_ _|
| (_) |_ _| (_) |
| _) (_ |
|_____|_____|_____|
Каждая строка в мозаике ASCII (за исключением случаев с краями, то есть кусков буквально по краям) состоит из следующего шаблона:
_ _ _
_( )_ _ _ _( )_ _ _ _( )_
|_ _| (_) |_ _| (_) |_ _|
_) (_ _ _) (_ _ _) (_
|_ _|_( )_|_ _|_( )_|_ _| ...
(_) (_) (_)
Принимая во внимание 2 целых числа , H
и W
где H
высота ( по вертикали количество) и W
ширина (величина горизонтальной) и H
и W
являются >1
выводить возможно HxW
ASCII - головоломки.
Примеры
Тестовый пример 1
Входные данные: 2, 4
Выход:
_____ _____ _____ _____
| |_ _| |_ |
| _ _) (_ _ _) |
|_( )_|_ _|_( )_|_ _|
| _| (_) |_ _| (_) |
| (_ _) (_ |
|_____|_____|_____|_____|
Тестовый пример 2
Входные данные: 4, 4
Выход:
_____ _____ _____ _____
| |_ _| |_ |
| _ _) (_ _ _) |
|_( )_|_ _|_( )_|_ _|
| _| (_) |_ _| (_) |
| (_ _ _) (_ _ |
|_ _|_( )_|_ _|_( )_|
| (_) |_ _| (_) |_ |
| _ _) (_ _ _) |
|_( )_|_ _|_( )_|_ _|
| _| (_) |_ _| (_) |
| (_ _) (_ |
|_____|_____|_____|_____|
Тестовый пример 3
Входные данные: 3, 5
Выход:
_____ _____ _____ _____ _____
| |_ _| |_ _| |
| _ _) (_ _ _) (_ _ |
|_( )_|_ _|_( )_|_ _|_( )_|
| _| (_) |_ _| (_) |_ |
| (_ _ _) (_ _ _) |
|_ _|_( )_|_ _|_( )_|_ _|
| (_) |_ _| (_) |_ _| (_) |
| _) (_ _) (_ |
|_____|_____|_____|_____|_____|
Тестовый пример 4
Входные данные: 2, 2
Выход:
_____ _____
| _| |
| (_ _ |
|_ _|_( )_|
| (_) |_ |
| _) |
|_____|_____|
Разъяснения
- Высота и ширина каждого кусочка головоломки не должны увеличиваться или уменьшаться.
- С
H
иW
быть больше единицы, самые маленькие размеры возможных являются2x2
(см IO 4). - Вы можете иметь полную программу или функцию.
- Ввод будет состоять из 2 строк с
H
1-го иW
2-го, если вы используете функцию, вы можете иметь их в параметрах. - Вывод на стандартный вывод (или что-то подобное).
- Это код-гольф, поэтому выигрывает самый короткий ответ в байтах.
Ответы:
JavaScript (ES6) 272
277 271Редактировать исправление ошибки
Редактировать 2 сохраненных 6 байтов thx @ L.Serné
Редактировать 3 исправление ошибки снова
Меньше гольфа
Тест
источник
for(t=z(' _____',0,0)+z('|_ _| ',2,--h)+z(b=' _) (_ _ ')+z(c='|_ _|_( )_',0);--h;a='|_ _| (_) ')
это сохраняет 4 запятые, поэтому вы в конечном итоге получаете только 273. Символы РЕДАКТИРОВАТЬ: тестовый фрагмент все еще прослушивается ...t=...
внутрь для, это не удается для h == 2. Это именно та ошибка, которую я исправил сегодня.undefined
оказаласьa
в последней частиfor
цикла. Я немного изменил код и закончил с этим. Вы должны быть в состоянии объединить это с eval для другого сохранения 2B.(w,h,z=(s,q=3,i=h)=>'| '.slice(0,q)+s.repeat(w).substr(i%2*6+q,w*6-2*q+1)+' |\n'.slice(~q),a='|_ _| (_) ')=>{for(t=z(' _____',0,0)+z('|_ _| ',2,--h)+z(b=' _) (_ _ ')+z(c='|_ _|_( )_',0);--h;)t+=z(a,2)+z(b)+z(c,0);return t+z(a,2)+z(' _) (_ ')+z('|_____',1)}
(276 В).Python, 513 байт
Возможно, это скорее упражнение в запутывании, чем в гольфе. Это работает, решая, к какому символу
(x,y)
относится каждая координата, а не выстраивая каждый паттерн за верёвкой. Похоже, без швовСами узоры выглядят как
мы можем видеть это как таблицу поиска из целых чисел со столбцами, взятыми мод 6 и строк мод 3
Эта стратегия комбинирования различных шаблонов здесь не очень удалась для меня, потому что их выражение довольно громоздко (хотя я думаю, что я мог бы больше играть в гольф), и потому, что в крайних случаях нужно исправить очень много символов. Я поднимаю это независимо, потому что это заняло у меня минуту, и это может быть интересно.
источник
Mathematica, 384 байта
Безымянная функция, принимающая упорядоченную пару целых чисел в качестве аргумента и возвращающую строку, содержащую соответствующие символы новой строки. С добавлением пробелов и переносов:
источник
Пакет,
562528 байтДоказано, что он устойчив к игре в гольф, поскольку повторение, как правило, обходится слишком дорого, чтобы исключить его, например, я вручную передаю номер строки, номер 3, потому что это слишком дорого для вычисления. Редактировать: Кроме того, я непреднамеренно играл в гольф
|
каждую третью линию, что неверно. Исправление этого фактически спасло меня 2 байта (4 байта в моей оригинальной версии). Пояснение:a
содержит различные кусочки головоломки. Эти:t
функции свопы их над каждым набором из трех строк, а затем извлекают необходимые подстроки , которые:c
функция затем повторяет в парах, но удаление первого столбца , еслиw
нечетно. Случаи левого и правого края затем обрабатываются до вывода строки.Другой крайний случай - это самая первая строка, в которой!
s заменяются пробелами вместо|
s (код избегает|
s, потому что их сложно обрабатывать в пакетном режиме).источник
Befunge,
263243 байтаПопробуйте онлайн!
Это работает путем итерации по координатам x, y области, которую мы хотим вывести, и сопоставления этих значений x , y с координатами u , v в шаблоне головоломки (сохраненном в первых трех строках игрового поля). Это отображение достигается с помощью следующих основных формул:
У координат повторяется каждые 12 столбцов, но также должна быть компенсирована 6 каждые 3 ряда. V координат повторяется каждые 3 строк, но мы добавим
y==0
к значению , так что очень первая строка может быть оказана как частный случай. Однако для обработки ребер нам необходимо ввести дополнительное логическое значение e , которое верно для различных положений ребер и которое корректирует формулы следующим образом:Таким образом, если мы находимся на ребре, мы добавляем 4 к координате v, чтобы использовать более простой шаблон ребер в строках с 5 по 7. И теперь нам также нужно изменить координату u на 6, а не на 12, поскольку этот шаблон ребер повторяется каждые 6 столбцов.
Что касается самого значения e , то для этого требуется довольно сложная формула, поскольку расположение краев охватывает несколько нерегулярную область границы головоломки.
Не вдаваясь в подробности, основной недостаток состоит в том, что elr сопоставляет местоположения кромок вдоль левой и правой границ, а etb сопоставляет местоположения вдоль верхней и нижней границ.
источник
JavaScript (ES6), 285 байт
Это порт моего Пакетного ответа, просто чтобы посмотреть, конкурирует ли он с ответом @ edc65. Раздражающе длинная строка содержит кусочки головоломки. Первые шесть частей представляют два ряда одного столбца внутренней части мозаики. Седьмая часть используется для предпоследней линии головоломки вместо четвертой части. Восьмой кусок используется во второй строке головоломки вместо пятого, а также выполняет двойную функцию в качестве левого края головоломки. Девятый кусок является последней строкой головоломки.
источник