Ваша задача - сгенерировать блоки, используя любой один символ ASCII относительно заданных входных данных.
Тестовые случаи
1 1 --> =====
= =
=====
1 2 --> =========
= = =
=========
2 1 --> =====
= =
=====
= =
=====
2 2 --> =========
= = =
=========
= = =
=========
2 5 --> =====================
= = = = = =
=====================
= = = = = =
=====================
вход
Ввод может быть взят из одного из следующих
stdin
- Аргументы командной строки
- Аргументы функции (2 аргумента, по одному на каждое число)
Входные данные, если они взяты из
stdin
аргументов командной строки или аргументов командной строки, будут содержать два натуральных числа, разделенных пробелом.- Два числа обозначают количество полей в каждом столбце и строке
Выход
- Ящики должны быть выведены в
stdout
(или ближайший эквивалент) - Каждая коробка должна иметь три горизонтальные пробелы в них
правила
- Оба числа будут больше 0, но не превысят 1000
- Любой видимый символ может быть использован для вывода полей. (пока они не слишком резкие для глаз!)
- Вам разрешено написать полную программу или функцию.
- Не должно быть никаких ненужных символов, за исключением необязательного завершающего символа новой строки.
счет
Это код-гольф , поэтому выигрывает самое короткое представление (в байтах).
JavaScript ( ES6 ), 83
Функция с параметрами строк и столбцов. Используя строки шаблона, есть 2 встроенных символа новой строки, которые являются значимыми и учитываются.
Вывод через
alert
(всплывающее окно). Так как мыalert
используем пропорциональный шрифт, мы получаем лучший результат, если вместо буквы использовать ширину, аналогичную пробелу=
.Протестируйте в Firefox, используя консоль, чтобы получить реальный
alert
вывод, или запустите фрагмент ниже.источник
Test in Firefox
JavaScript (ES6),
7573Используя обильные
repeat
вызовы, мы повторяем|
, затем повторяем|
с завершающими пробелами и повторяем оба этих повторения, чтобы создать строки:(Новые строки важны, согласно предложению edc65 использовать строки шаблона.)
Отрывок:
Без строк шаблона, без повторного использования имени метода и с добавленными пробелами:
(Использование рекомендации edc65 по использованию
|
для лучшего визуального интервала.)источник
Пип,
2924 = 23 + 1 байтТребуется
-n
флаг. Принимает высоту и ширину в качестве аргументов командной строки и строит блоки из1
s.Объяснение:
Эта программа использует большое преимущество того факта, что строки - это числа, а числа - это строки в Pip. (И три пробела в этих полях оказались правильными, чтобы воспользоваться встроенной
m
переменной!)Вот как список строится с помощью ввода
2 3
:И окончательный вывод:
Больше на Пипе
источник
Perl,
72635250 байтМоя самая короткая версия еще использует,
$/
чтобы получить символ новой строки более компактно:Предыдущее обновление помещает практически пустые строки в разделитель выходных записей
$,
и печатает список непрерывных строк.Предыдущая версия может быть немного понятнее для случайного читателя:
Первая версия используется
@ARGV
вместоpop
:источник
Python 2,
5857 байтДовольно простая реализация.
Проверьте это здесь.
Спасибо Sp3000 за сохранение одного байта.
источник
GNU sed -r, 160
Вздох, я думал, что это будет меньше, но здесь это все равно. К сожалению, регулярные выражения sed не имеют никакой возможности поиска.
Принимая вход как унарный от STDIN:
источник
CJam, 25 байт
Попробуйте онлайн в интерпретаторе CJam .
Как это устроено
источник
Marbelous, 168 байтов
Этот ответ работает только до 255x255, а не 1000x1000 из-за ограничений языка Marbelous. Я работаю над 32-битной библиотекой, но она не будет готова в ближайшее время.
Вход предоставляется в виде двух параметров командной строки или параметров функции для основной платы.
псевдокод:
источник
CJam
52514641 байтБлагодаря Sp3000 за -5 символов
Спасибо Мартину Бюттнеру за еще 5 символов
Попытайся
источник
функция c, 81
Тестовая программа:
источник
x;f(h,w){for(w=w*4+2;x<=w*h*2+w;x++)putchar(x%w?x/w%2?x%w%4!=1?32:61:61:10);}
- 78PHP4.1,
767169 байтЭто как игра в гольф, как я могу получить.
Это предполагает, что ключ
H
будет иметь количество строк иV
количество блоков в строке.Я использую
-
и|
просто так, коробки действительно выглядят как коробки. При необходимости я могу изменить его на=
. Неважно, какой символ используется.Уход,
-
а|
также помогает понять беспорядок, который происходит.Старый метод, 76 байт:
Пример вывода:
источник
Юлия, 59 байт
Это создает безымянную функцию, которая принимает два целых числа в качестве входных данных и печатает результат в STDOUT. Чтобы назвать его, дайте ему имя, например
f=(n,m)->...
.Ungolfed + объяснение:
Примеры:
Любые предложения приветствуются.
источник
bash + coreutils, 57
Используется
dc
для печати двоичных чисел, которые имеют1
s для краев поля и0
s для пробелов.2 ^ (width * 4 + 1) - 1
, затем нажимается и печатается10001...0001
число вычисляется путем , затем толкнулX
* 8 / 15 + 1
height
разtr
Затем преобразует0
S в пространстве символов.Выход
источник
R
8381В качестве неназванной функции, принимающей h и w в качестве параметров. Строит 1-ю и 2-ю строки в векторе для каждой строки и повторяет его
h
раз. Добавляет вектор для нижней строки иcat
выводит вектор, используяfill
для ограничения длины линий. Теперь использует правило любого видимого символа.Тестовый забег
источник
Python
32,160878579 байтЯ знаю, что это может быть гораздо лучше, я хотел бы несколько предложений, так как это моя первая попытка в гольф.
Благодаря @Cool Guy и @ советы Sp3000, я сузил размер до чуть
вышениже половины.Например: д (3,3)
Попробуйте это здесь .
Извините за оставшиеся пробелы.
источник
'='*(4*y+1)
w=4*y+1
сохраняет 3 байта.KDB (Q), 37 байт
объяснение
Тестовое задание
источник
JavaScript,
9285 байтЯ надеялся, что это будет короче, чем другой ответ JS (хорошая работа, как всегда, edc65), ну да ладно. У меня такое чувство, что здесь математику можно продолжить.
источник
f=(r,c)=>(x=>{for(i=s='';(y=i++/x)<r-~r;)s+=i%x?' *'[-~y%2|!(-~i%4)]:'\n'})(4*c+2)||s
-> 852*r+1
=>r-~r
- это именно то, что я имел в виду, играя в гольф по математике, и именно этот гений. :)Октав,
696564Спасибо DLosc за указание на проблемы, которые привели к -1
Принимает вход как
[1 1]
и выходы:Вы также можете просто ввести «1» и получить 1x1. Если вход действительно должен быть
1 1
, размер увеличивается до888584 :Примечание: Matlab не допускает связывание или ввод октавы (целое число), но вот версия Matlab ( 67 ):
источник
C, 76 байтов
Вызывается как функция с количеством строк и столбцов в качестве аргументов. Например:
источник
CJam,
3029 байтНовая версия с лишним
+
в конце удалена (спасибо, Денис):Я знаю, что Деннис уже опубликовал решение CJam, которое превосходит это на многие мили. Но это моя самая первая попытка CJam, так что это чудо, что оно работает вообще. :)
Довольно грубая сила. Строит первую строку из
4 * H + 1
=
знаков, затем вторую строку из=
повторяющихсяH
времен, с=
добавлением еще одной . Затем объединяет две строки, повторяет всеV
разы, а затем добавляет еще одну копию первой строки.Такое ощущение, что у меня слишком много манипуляций со стеком, и даже в итоге я сохранил первую строку в переменной, потому что в противном случае мне пришлось перетасовывать вещи в стеке.
В целом не очень элегантно, но вы должны начать где-нибудь ... и я хотел сначала попробовать простую задачу.
источник
+
в конце. CJam печатает весь стек.CJam, 23
Попробуйте онлайн
Объяснение:
источник
Дротик, 57
Попробуйте это по адресу: https://dartpad.dartlang.org/36ed632613395303ef51
источник
Ява, 181
Я надеюсь, что согласно
это соответствует правилам подсчета байтов функции , которая в данном случае равна 181
источник
for(r=R;r-->0;){x=y=e;for(c=C;c-->0;){x+=a;y+="= ";}s+=x+n+y+n;}
наfor(r=R;r-->0;s+=x+n+y+n){x=y=e;for(c=C;c-->0;y+="= "){x+=a;}}
C #,
153151150Это не может действительно конкурировать, но здесь это просто для удовольствия:
Как запустить:
Открыт для улучшений.
источник
int
вне цикла может сохранить байт.Python 2,7, 66 байт.
Я знаю, что в python уже есть лучшие решения, но это лучшее, что я придумал.
Пример:
источник
Руби,
574845Использование:
Спасибо manatwork за сохранение 3 байта.
источник
'='
→?=
и"<LF>"
→$/
.?=*(w*4+1)
→?=+?=*w*4
Java,
123119 байтЗлоупотребление входными параметрами в качестве счетчиков очень помогло уменьшить размер кода.
Спасибо Cool Guy за предложение злоупотребления синтаксисом.
источник
for
петли вместоwhile
петли.while(w-->0){d+=" =";b+="====";}
->for(;w-->0;b+="====")d+=" =";
который сохраняет три байтаSAS,
117119Пример:
Результат:
источник
DNS_PROBE_FINISHED_NXDOMAIN