Vous travaillez en tant que stagiaire pour un mathématicien qui déteste vraiment TeX, LaTeX, etc. À tel point qu'il a décidé d'abandonner toute composition et de vous faire faire tout le formatage en ASCII. Vous en avez eu assez après un certain temps et avez décidé de commencer à automatiser certaines parties, en commençant par les racines carrées.
Voici comment une racine carrée est faite:
### 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
/ ###
\ / ###
\/ ###
Et c'est tout!
Règles
Vous devez créer un programme ou une fonction qui prend une chaîne, une liste de chaînes (c'est-à-dire des lignes) ou un tableau de caractères, et génère l'entrée transformée conformément à la description ci-dessus (pas nécessairement selon le même ordre ou processus)
Vous pouvez supposer que l'entrée est rectangulaire si vous préférez. L'espace de fuite n'est ni requis ni interdit.
Il s'agit de code-golf , donc la réponse la plus courte en octets l'emporte.
Exemples:
Input:
40
Output:
____
\/ 40
Input:
____
\/ 40
Output:
________
/ ____
\/ \/ 40
Input:
/|
|
|
_|_
Output:
_____
/ /|
/ |
\ / |
\/ _|_
Input:
# #
# #
#####
#
#
Output:
_______
/ # #
/ # #
\ / #####
\ / #
\/ #
Réponses:
Python 2 , 196 octets
Essayez-le en ligne!
-2 octets grâce à Step Hen
-13 octets grâce à Jonathan Allan
la source
/
fonctionnerait aussi. Merci.i+l//2
input()
évalue l'entrée brute). Aussi'_'*len(Q[0])+'__'
est'_'*(2+len(Q[0]))
.SOGL V0.12 , 27 octets
Essayez-le ici! (
→
ajouté pour la facilité d'utilisation; le programme attend l'entrée sur la pile)la source
Fusain , 32 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Version 29 octets qui suppose une entrée rectangulaire:
la source
Python 3 ,
138147 octetsLa variable 'l' est une liste de chaînes, chaque chaîne une ligne. Version lisible:
Forme un symbole de racine carrée avec un V complet, puis rase la gauche en conséquence.
Essayez-le en ligne!
la source
l
en entrée. Vous devez également inclure la partie oùl
est entrée, en tant que paramètre de fonction ou fonction d'entrée (), etc. (PS, votre réponse semble également manquer de quelques espaces blancs.)Python 2 ,
131130 octetsUn programme complet prenant une liste de lignes en entrée avec l'allocation rectangulaire uniquement (en fait, la première ligne est l'une des plus longues).
Essayez-le en ligne!
la source
Java 8, 244 octets
Une solution très longue, mais probablement proche de la plus courte pour Java. Ce lambda prend les lignes d'entrée en tant que a
String[]
et renvoie aString
. Toutes les lignes doivent avoir la même longueur.Sur la base des exemples de sorties, j'ai supposé qu'il n'était pas nécessaire d'ajouter un espace à chaque ligne de l'entrée, donc le programme ne le fait pas.
Merci à Jonathan Allan de m'avoir rappelé l'
~
opérateur.Essayez-le en ligne
Non golfé
Remerciements
la source
h+a+h%2
laquelle vous utilisez deux fois dans votre code: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;}
. (J'ai également utilisé l'en-tête et le pied de page dans le lien TIO, afin que vous puissiez isoler votre code de golf réel du code de test.)Japt , 46 octets
La nouvelle ligne de tête fait partie du programme. L'entrée et la sortie sont un tableau de chaînes représentant des lignes.
Essayez-le en ligne! en utilisant l'
-R
indicateur pour joindre le tableau résultant avec des retours à la ligne.la source
U
s'agit d'un tableau et non d'une chaîne.JavaScript (ES6), 140 octets
Prend l'entrée comme un tableau de chaînes / renvoie un tableau de chaînes.
Cas de test
Afficher l'extrait de code
la source
Perl 5 ,
177185160 160 octetsEssayez-le en ligne!
Journal des modifications:
la source
<>
au lieu de<STDIN>
,print" "x$f
au lieu defor(1..$f){print" "}
, en utilisantxxx for yyy
au lieu defor(yyy){xxx}
, en utilisant$_
dans la boucle for au lieu de variables explicites (for$i(..){..}
) ...x$f
et je n'ai pas réussi à le faire fonctionner: o réessayer maintenant ...C ++, 291 octets
La fonction suppose que toutes les chaînes du vecteur passées en paramètre ont la même longueur
la source
Dyalog APL, 95 octets
Essayez-le en ligne!
la source
C, 485 octets
Ce programme prend jusqu'à 999 caractères de l'entrée standard et les lit dans un tableau. Il les imprime 1 à la fois en sortie standard avec les modifications indiquées par votre défi. Il suppose que l'entrée est rectangulaire.
la source
Perl 5 , 159 octets
Essayez-le en ligne!
la source