Вы должны написать программу или функцию, которая получает объем чаши и объем воды в нем в качестве входных данных и выводит или возвращает ASCII-представление чаши с водой в нем с требуемыми объемами.
Чаша имеет следующую структуру:
\ /
\___/
Чаша имеет хотя бы одного _
персонажа. Количество \
's и /
' также положительно, и они равны из-за симметрии.
Объем чаши общее количество _
и space
символы между \
й и /
's плюсом один для каждой пары \
и /
. Это означает, что вышеупомянутая миска имеет объем 10
:
\ / => xxxxx x (the last one is for the \/ pair)
\___/ xxx x (the last one is for the \/ pair)
Обратите внимание, что две разные чаши могут иметь одинаковый объем. Например, обе следующие чаши имеют объем 18:
\ /
\ / \ /
\___/ \_______/
Мы можем налить немного воды в миску. Вода представлена в виде ряда ~
символов вместо пробелов внутри чаши. В нижнем ряду нет пробелов, поэтому он не может содержать ~
символы. Это означает, что наш пример может быть заполнен водой только одним способом:
\~~~~~/
\___/
Другие чаши могут быть заполнены несколькими способами:
\~~~~~/ \ /
\ / \~~~/
\_/ \_/
Объем воды в чаше является объем чаши строк ниже в ~
символы. Вышеприведенные примеры имеют объемы воды 4, 6 and 2
соответственно.
вход
- Два натуральных числа, объем чаши и объем воды.
- Вы можете выбрать порядок двух чисел.
- Два целых числа могут быть введены в любом общем формате списка (список, кортеж, массив и т. Д.) Или в виде двух отдельных целых чисел.
- Для входных значений гарантируется как минимум одна действительная конфигурация воды в чаше.
Выход
- ASCII-представление чаши с водой, где объем чаши и воды соответствуют входным данным.
- Если вы решите вернуть результат вместо печати, он должен быть возвращен в виде одной строки (или ближайшей альтернативы вашего языка).
- Разрешены любые конечные пробелы.
- Никакие ненужные начальные пробелы не допускаются.
- Если имеется несколько правильных конфигураций, вы можете выбрать, какую вы выводите, но вы можете вывести только одну из них.
Примеры
За каждой парой входных целых чисел следуют один или несколько возможных выходов.
6 2
\~~~/
\_/
10 4
\~~~~~/
\___/
24 8
\ /
\~~~~~~/
\ /
\__/
42 12 //either of the two output is correct
\ /
\ /
\~~~~~~~/
\ /
\ /
\_/
\ /
\~~~~~~~~~~~~~/
\___________/
90 68
\~~~~~~~~~~~~~~~~~~~~~/
\ /
\ /
\ /
\_____________/
102 42
\ /
\ /
\~~~~~~~~~~~~~~~~~/
\ /
\ /
\___________/
Это код гольф, поэтому выигрывает самый короткий вход.