Вы работаете в качестве интерна для математика, который действительно ненавидит TeX, LaTeX и т. Д. Настолько, что он решил отказаться от всякой верстки и заставить вас делать все форматирование в ASCII. Вы устали от этого через некоторое время и решили начать автоматизировать его части, начиная с квадратных корней.
Вот как получается квадратный корень:
### this is the input
###
###
_____ put a row of underscores stretching one character off either side on top
###
###
###
_____ put a diagonal of slashes in front going the height of the input
/ ###
/ ###
/ ###
_____ put a diagonal of backslashes in front of that, going up half of the input's height rounded up
/ ###
\ / ###
\/ ###
Вот и все!
правила
Вы должны создать программу или функцию, которая принимает строку, список строк (то есть строк) или массив символов и выводит входные данные, преобразованные в соответствии с описанием выше (необязательно точно таким же порядком или процессом)
Вы можете предположить, что ввод является прямоугольным, если предпочтительнее. Конечный пробел не требуется и не запрещен.
Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Примеры:
Input:
40
Output:
____
\/ 40
Input:
____
\/ 40
Output:
________
/ ____
\/ \/ 40
Input:
/|
|
|
_|_
Output:
_____
/ /|
/ |
\ / |
\/ _|_
Input:
# #
# #
#####
#
#
Output:
_______
/ # #
/ # #
\ / #####
\ / #
\/ #
Ответы:
Python 2 , 196 байт
Попробуйте онлайн!
-2 байта благодаря Step Hen
-13 байтов благодаря Джонатану Аллану
источник
/
будет работать тоже. Спасибо.i+l//2
input()
оценивает необработанный ввод). И'_'*len(Q[0])+'__'
есть'_'*(2+len(Q[0]))
.SOGL V0.12 , 27 байт
Попробуй здесь! (
→
добавлено для простоты использования; программа ожидает ввода в стеке)источник
Древесный уголь , 32 байта
Попробуйте онлайн! Ссылка на подробную версию кода. 29-байтовая версия, которая предполагает прямоугольный ввод:
источник
Python 3 ,
138147 байтПеременная 'l' - это список строк, каждая строка - строка. Читаемая версия:
Формирует символ квадратного корня с полным V, затем соответственно сбривает левый.
Попробуйте онлайн!
источник
l
качестве входных данных. Вы также должны включить частьl
, в которую вводится, либо в качестве параметра функции, либо функции input () и т. Д. (PS В вашем ответе также не хватает нескольких пробелов.)Python 2 ,
131130 байтПолная программа, принимающая список строк в качестве входных данных с учетом только прямоугольника (фактически первая строка является одной из самых длинных).
Попробуйте онлайн!
источник
Java 8, 244 байта
Очень длинное решение, но, вероятно, близко к самому короткому для Java. Эта лямбда принимает строки ввода как a
String[]
и возвращает aString
. Все строки должны иметь одинаковую длину.Основываясь на выходных данных примера, я предположил, что нет необходимости добавлять пробел к каждой строке ввода, поэтому программа этого не делает.
Спасибо Джонатану Аллану за напоминание об
~
операторе.Попробуйте онлайн
Ungolfed
Подтверждения
источник
h+a+h%2
которой вы используете два раза в коде:l->{int h=l.length,w=l[0].length(),a=h/2,i=w+3,x=h+a+h%2;String s="",t=s;for(;--i>0;)t+="_";for(;i++<x;)s+=" ";t=s+t;for(i=0;i<h;)t+="\n"+s.substring(0,i<a?x+~i:i-a)+(i<a?"":"\\"+s.substring(0,(h+~i)*2))+"/"+s.substring(0,i+1)+l[i++];return t;}
. (Я также использовал верхний и нижний колонтитулы в ссылке TIO, чтобы вы могли изолировать свой действительный код в гольфе от тестового кода.)Japt , 46 байт
Ведущий перевод строки является частью программы. Ввод и вывод - это массив строк, представляющих строки.
Попробуйте онлайн! используя
-R
флаг, чтобы соединить результирующий массив с символами новой строки.источник
U
как это массив, а не строка.JavaScript (ES6), 140 байт
Принимает ввод как массив строк / возвращает массив строк.
Контрольные примеры
Показать фрагмент кода
источник
Perl 5 ,
177185160 байтПопробуйте онлайн!
Changelog:
источник
<>
вместо того<STDIN>
,print" "x$f
чтобы вместоfor(1..$f){print" "}
использованияxxx for yyy
вместоfor(yyy){xxx}
использования$_
в цикле for вместо явных переменных (for$i(..){..}
) ...x$f
и не мог заставить его работать: o пытаясь снова сейчас ...C ++, 291 байт
Функция предполагает, что все строки в векторе, переданные в качестве параметра, имеют одинаковую длину
источник
Дьялог АПЛ, 95 байт
Попробуйте онлайн!
источник
C 485 байтов
Эта программа берет до 999 символов из стандартного ввода и считывает их в массив. Он выводит их по одному за раз в стандартный вывод с указанными изменениями. Предполагается, что вход является прямоугольным.
источник
Perl 5 , 159 байт
Попробуйте онлайн!
источник