Estás trabajando como pasante para un matemático que realmente odia a TeX, LaTeX, etc. Tanto que ha decidido abandonar toda la composición tipográfica y hacerte formatear todo en ASCII. Se cansó de esto después de un tiempo y decidió comenzar a automatizar partes, comenzando con raíces cuadradas.
Así es como se hace una raíz cuadrada:
### 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
/ ###
\ / ###
\/ ###
¡Y eso es!
Reglas
Debe crear un programa o función que tome una cadena, una lista de cadenas (es decir, líneas) o una matriz de caracteres, y genere la entrada transformada de acuerdo con la descripción anterior (no necesariamente por el mismo orden o proceso exacto)
Puede suponer que la entrada es rectangular si lo prefiere. El espacio en blanco al final no es obligatorio ni está prohibido.
Este es el código de golf , por lo que gana la respuesta más corta en bytes.
Ejemplos:
Input:
40
Output:
____
\/ 40
Input:
____
\/ 40
Output:
________
/ ____
\/ \/ 40
Input:
/|
|
|
_|_
Output:
_____
/ /|
/ |
\ / |
\/ _|_
Input:
# #
# #
#####
#
#
Output:
_______
/ # #
/ # #
\ / #####
\ / #
\/ #
Respuestas:
Python 2 , 196 bytes
Pruébalo en línea!
-2 bytes gracias a Step Hen
-13 bytes gracias a Jonathan Allan
fuente
/
también funcionaría. Gracias.i+l//2
input()
evalúa la entrada sin formato). También'_'*len(Q[0])+'__'
es'_'*(2+len(Q[0]))
.SOGL V0.12 , 27 bytes
Pruébalo aquí! (
→
agregado para facilitar su uso; el programa espera la entrada en la pila)fuente
Carbón , 32 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Versión de 29 bytes que supone una entrada rectangular:
fuente
Python 3 ,
138147 BytesLa variable 'l' es una lista de cadenas, cada cadena es una línea. Versión legible:
Forma un símbolo de raíz cuadrada con una V completa y luego afeita la izquierda en consecuencia.
Pruébalo en línea!
fuente
l
como entrada. También debe incluir la parte dondel
se ingresa, ya sea como parámetro de función o como función input (), etc. (PS, su respuesta también parece carecer de algunos espacios en blanco).Python 2 ,
131130 bytesUn programa completo que toma una lista de líneas como entrada con la asignación de solo rectangular (en realidad, la primera línea es una de las más largas).
Pruébalo en línea!
fuente
Java 8, 244 bytes
Una solución muy larga, pero probablemente cercana a la más corta para Java. Esta lambda toma líneas de entrada como a
String[]
y devuelve aString
. Todas las líneas deben tener la misma longitud.Según los resultados del ejemplo, supuse que no es necesario agregar un espacio a cada línea en la entrada, por lo que el programa no lo hace.
Gracias a Jonathan Allan por recordarme sobre el
~
operador.Pruébalo en línea
Sin golf
Expresiones de gratitud
fuente
h+a+h%2
la que se utilizan dos veces en su 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;}
. (También utilicé el encabezado y pie de página en el enlace TIO, para que pueda aislar su código real de golf del código de prueba)Japt , 46 bytes
La nueva línea líder es parte del programa. Entrada y salida es una matriz de cadenas que representan líneas.
Pruébalo en línea! usando la
-R
bandera para unir la matriz resultante con nuevas líneas.fuente
U
es una matriz y no una cadena.JavaScript (ES6), 140 bytes
Toma la entrada como una matriz de cadenas / devuelve una matriz de cadenas.
Casos de prueba
Mostrar fragmento de código
fuente
Perl 5 ,
177185160 bytesPruébalo en línea!
Registro de cambios:
fuente
<>
lugar de<STDIN>
, enprint" "x$f
lugar defor(1..$f){print" "}
, usar enxxx for yyy
lugar defor(yyy){xxx}
, usar$_
en el bucle for en lugar de variables explícitas (for$i(..){..}
) ...x$f
y no pude hacerlo funcionar: o intentándolo de nuevo ahora ...C ++, 291 bytes
La función asume que todas las cadenas en el vector pasado como parámetro tienen la misma longitud
fuente
Dyalog APL, 95 bytes
Pruébalo en línea!
fuente
C, 485 bytes
Este programa toma hasta 999 caracteres de la entrada estándar y los lee en una matriz. Los imprime 1 a la vez a la salida estándar con los cambios indicados por su desafío. Se supone que la entrada es rectangular.
fuente
Perl 5 , 159 bytes
Pruébalo en línea!
fuente