Você está trabalhando como estagiário para um matemático que realmente odeia TeX, LaTeX, etc. Tanto que ele decidiu abandonar toda a tipografia e fazer com que você fizesse toda a formatação em ASCII. Você se cansou disso depois de um tempo e decidiu começar a automatizar partes dele, começando com raízes quadradas.
Aqui está como uma raiz quadrada é feita:
### 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
/ ###
\ / ###
\/ ###
E é isso!
Regras
Você deve criar um programa ou função que inclua uma string, lista de strings (ou seja, linhas) ou matriz de caracteres e produza a entrada transformada de acordo com a descrição acima (não necessariamente pela mesma ordem ou processo exato)
Você pode assumir que a entrada é retangular, se preferir. O espaço em branco à direita não é necessário nem proibido.
Isso é código-golfe , então a resposta mais curta em bytes vence.
Exemplos:
Input:
40
Output:
____
\/ 40
Input:
____
\/ 40
Output:
________
/ ____
\/ \/ 40
Input:
/|
|
|
_|_
Output:
_____
/ /|
/ |
\ / |
\/ _|_
Input:
# #
# #
#####
#
#
Output:
_______
/ # #
/ # #
\ / #####
\ / #
\/ #
Respostas:
Python 2 , 196 bytes
Experimente online!
-2 bytes graças ao Step Hen
-13 bytes graças a Jonathan Allan
fonte
/
funcionaria também. Obrigado.i+l//2
input()
avalia a entrada bruta). Também'_'*len(Q[0])+'__'
é'_'*(2+len(Q[0]))
.SOGL V0.12 , 27 bytes
Experimente aqui! (
→
adicionado para facilitar o uso; o programa espera a entrada na pilha)fonte
Carvão , 32 bytes
Experimente online! Link é a versão detalhada do código. Versão de 29 bytes que assume entrada retangular:
fonte
Python 3 ,
138147 bytesA variável 'l' é uma lista de cadeias, cada cadeia uma linha. Versão legível:
Forma um símbolo de raiz quadrada com um V completo e raspa a esquerda de acordo.
Experimente Online!
fonte
l
como entrada. Você também deve incluir a parte em quel
é recebido, quer como um parâmetro de função ou função input (), etc. (PS sua resposta também parece faltar algumas-espaço-preenchimento branco.)Python 2 ,
131130 bytesUm programa completo que recebe uma lista de linhas como entrada com a permissão somente retangular (na verdade, a primeira linha é uma das mais longas).
Experimente online!
fonte
Java 8, 244 bytes
Uma solução muito longa, mas provavelmente a mais curta para Java. Este lambda recebe linhas de entrada como a
String[]
e retorna aString
. Todas as linhas devem ter o mesmo comprimento.Com base nas saídas de exemplo, presumi que não havia necessidade de acrescentar um espaço a cada linha da entrada, portanto o programa não.
Agradeço a Jonathan Allan por me lembrar sobre o
~
operador.Experimente Online
Ungolfed
Agradecimentos
fonte
h+a+h%2
que você usa duas vezes em seu código: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;}
. (Eu também usei o cabeçalho e rodapé no link TIO, assim você pode isolar o código Golfed real do código de teste.)Japonês , 46 bytes
A nova linha líder faz parte do programa. Entrada e saída é uma matriz de seqüências representando linhas.
Experimente online! usando o
-R
sinalizador para ingressar na matriz resultante com novas linhas.fonte
U
é uma matriz e não uma string.JavaScript (ES6), 140 bytes
Recebe a entrada como uma matriz de strings / retorna uma matriz de strings.
Casos de teste
Mostrar snippet de código
fonte
Perl 5 ,
177185160 bytesExperimente online!
Changelog:
fonte
<>
vez de<STDIN>
, emprint" "x$f
vez defor(1..$f){print" "}
, usar emxxx for yyy
vez defor(yyy){xxx}
, usar$_
no loop for em vez de variáveis explícitas (for$i(..){..}
) ...x$f
e não consegui fazê-lo funcionar: o tentando novamente agora ...C ++, 291 bytes
A função assume que todas as seqüências de caracteres do vetor transmitidas como parâmetro têm o mesmo comprimento
fonte
Dyalog APL, 95 bytes
Experimente online!
fonte
C, 485 bytes
Este programa pega até 999 caracteres da entrada padrão e os lê em uma matriz. Imprime-os 1 de cada vez na saída padrão com as alterações indicadas pelo seu desafio. Assume que a entrada é retangular.
fonte
Perl 5 , 159 bytes
Experimente online!
fonte