Эта проблема вдохновлена картиной, которая часто бродит по Facebook, которая выглядит следующим образом . За исключением того, что наша базовая площадь будет выглядеть примерно так:
┌─┬───┬─┐
├─┼─┬─┼─┤
├─┼─┴─┼─┤
├─┼─┬─┼─┤
└─┴─┴─┴─┘
Квадрат состоит из n x m
квадрата 1x1, вы должны посчитать, сколько подквадрат (1x1, 2x2, 3x3, 4x4, 5x5 и т. Д.) Может поместиться в этом квадрате. В квадратах могут отсутствовать некоторые линии сетки (как в примере выше) или быть завершенными, как в примере ниже. Это означает математическая Разбивка не возможно (насколько я знаю).
Входы:
- Количество строк (
n
) ввода для построения квадрата; - Квадрат состоит из следующих символов:
─
┐
┌
└
┴
┘
┬
├
┤
┼
|
черезn
строки ввода.
Выход:
- Количество квадратов любого размера, которое может вписаться во входной квадрат (здесь мы хотим только одно число, а не число для каждого размера).
Критерий победы:
Наименьший ответ (количество байтов) выигрывает.
Тестовые случаи:
В:
5
┌─┬─┬─┬─┐
├─┼─┼─┼─┤
├─┼─┼─┼─┤
├─┼─┼─┼─┤
└─┴─┴─┴─┘
Out: 30
В:
3
┌─┬─┐
├─┼─┤
└─┴─┘
Out: 5
В:
5
┌─┬─┐
├─┴─┤
├───┤
├─┬─┤
└─┴─┘
Out: 7
В:
4
┌─┬─┬─┬─┬─┬─┐
├─┼─┼─┼─┼─┼─┤
├─┼─┼─┼─┼─┼─┤
└─┴─┴─┴─┴─┴─┘
Out: 32
В:
2
┌─┐
└─┘
Out: 1
В:
4
┌─┬─┬─┬─┬─┬─┐
├─┴─┼─┼─┼─┴─┤
├─┬─┼─┼─┼─┬─┤
└─┴─┴─┴─┴─┴─┘
Out: 22
m*(m+1)*(3*n-m+1)/6
для сm
помощьюn
прямоугольника сn >= m
(размеры смещения по одному , так как запись говорит о точках , а не самих квадратов)Ответы:
JavaScript (ES6), 292 байта
306 325Редактировать Я сделал неправильный подсчет байтов,
исправил теперь thx http://bytesizematters.com/в последний раз, надеюсь, спасибо Cᴏɴᴏʀ O'Bʀɪᴇɴ, см. Https://goo.gl/LSHC1U (и на 1 байт меньше, используя литерал перевод строки вместо '\ n')Дольше, чем я ожидал (вероятно, можно сбрить еще несколько байт)
Все возможные квадраты проверяются и подсчитываются.
r
Функция отображения каждого символа в растровое изображение , имеющейКвадрат любого размера должен иметь
Тестовое задание
источник