+ - + + - + | | + - + + - + | | | | | | | | + - + + - + + - + + - +
Жители ASCIIville восстанавливают свой город и набрасывают новые чертежи. Ваша задача - нарисовать их новый город, исходя из того, сколько зданий они хотят.
Входом будет количество зданий. Каждое здание имеет половину высоты входа (округляется, если нечетное), не включая верх и низ здания.
Давайте нарисуем базовый пример 4
+ - + + - + + - + + - + | | | | | | | | | | | | | | | | + - + + - + + - + + - +
Как вы можете видеть здесь, |
в каждом здании есть два s, потому что входное значение было четыре. Но есть подвох! (имеется в виду, что приведенный выше пример неверен, и пример в верхней части этого поста является реальным выводом для 4)
Для каждого здания, которое не является простым числом, его высота уменьшается на единицу. Если число делится на 3 , 5 или 10 , оно уменьшается еще на один. Если он делится на два или более из этих чисел, вычитаемая сумма складывается ( 10 делится на 10 и 5, и это не простое число, поэтому оно вычитается на 3 ).
Давайте посмотрим на пример с входом 5
.
+ - + + - + | | + - + + - + + - + | | | | | | | | | | | | | | | | | | | | + - + + - + + - + + - + + - +
Вот пример 7
+ - + + - + + - + | | + - + + - + + - + | | | | | | | | | | | | + - + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + - + + - + + - + + - + + - + + - + + - +
И пример 10
+ - + + - + + - + | | + - + + - + + - + | | + - + | | | | | | | | | | + - + | | | | + - + | | | | | | | | | | | | | | | | | | + - + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + - + + - + + - + + - + + - + + - + + - + + - + + - + + - +
И вернемся к 6
+ - + + - + | | + - + + - + + - + | | | | | | | | | | + - + | | | | | | | | | | | | + - + + - + + - + + - + + - + + - +
Правила:
- Если число вычитается настолько сильно, что его высота меньше или равна нулю, оно не отображается, но для него оставлено место (я не верю, что это возможно,
6
является ли это ближайшим к нулю значением) , - Промежуточные пробелы разрешены.
- Ширина каждого здания должна быть 2.
- Ваш ввод может быть из стандартного ввода или закодирован в программу.
- Ваша программа должна быть полной программой , без функций.
- Ваша программа должна уметь 4-15 сборок. 0-3 и отрицательные числа не нужны и не предназначены для каких-либо действий, то есть они могут выдавать ошибку, выводить мусор или ничего не делать.
Ответы:
CJam,
68 66 5855 байтовЭто слишком долго на данный момент. Но начало.
ОБНОВЛЕНИЕ: Теперь жесткое кодирование для входов до 15 вместо расчета смещения. Предложение от Sp3000
Попробуйте онлайн здесь
источник
Python 2,
247, 245, 237,229 байт.источник
C #,
223205 байтДля этого необходимо использовать только 15 зданий.
260 байт
И более общий ответ, который будет работать для любого количества зданий.
источник
Python 2, 163 байта
Часть проверки простоты заимствует здесь алгоритм @ xnor .
Если мы жестко закодируем первые 15 смещений, мы можем получить 137 байтов :
Я предполагаю, что конечные пробелы в конце каждой строки в порядке, но если вопрос означал завершающие пробелы после всего вывода, то это +9 байт
.rstrip()
.источник
Groovy,
234,225,223219 байтЗлоупотребление 15 предел здания
источник
Swift,
375, 350 байтВот код с отступом
B
содержит количество зданий.p
возвращает 1, когда число не простое.Мне нужно импортировать Фонд для того, чтобы использовать
ceil
функцию.Мне не удалось оптимизировать код только для пятнадцати случаев, но в конечном итоге я сделаю это позже.
редактировать: Принимая советы @Kametrixom и оптимизировать
mod
часть (я забыл уменьшить длину имени var).источник
Foundation
на,Darwin
чтобы сохранить несколько байтовimport UIKit
вместоimport Darwin
.