Sie arbeiten als Praktikant für einen Mathematiker, der TeX, LaTeX usw. wirklich hasst. So sehr, dass er beschlossen hat, alle Schriftsätze aufzugeben und Sie alle Formatierungen in ASCII vornehmen zu lassen. Nach einer Weile haben Sie es satt und beschlossen, Teile davon zu automatisieren, beginnend mit Quadratwurzeln.
So wird eine Quadratwurzel gebildet:
### 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
/ ###
\ / ###
\/ ###
Und das ist es!
Regeln
Sie müssen ein Programm oder eine Funktion erstellen, die eine Zeichenfolge, eine Liste von Zeichenfolgen (dh Zeilen) oder ein Array von Zeichen aufnimmt und die gemäß der obigen Beschreibung transformierte Eingabe ausgibt (nicht unbedingt in genau derselben Reihenfolge oder demselben Prozess).
Bei Bedarf können Sie davon ausgehen, dass die Eingabe rechteckig ist. Nachgestellte Leerzeichen sind weder erforderlich noch unzulässig.
Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Beispiele:
Input:
40
Output:
____
\/ 40
Input:
____
\/ 40
Output:
________
/ ____
\/ \/ 40
Input:
/|
|
|
_|_
Output:
_____
/ /|
/ |
\ / |
\/ _|_
Input:
# #
# #
#####
#
#
Output:
_______
/ # #
/ # #
\ / #####
\ / #
\/ #
Antworten:
Python 2 , 196 Bytes
Probieren Sie es online!
-2 Bytes dank Step Hen
-13 Bytes dank Jonathan Allan
quelle
/
würde aber auch funktionieren. Vielen Dank.i+l//2
input()
wertet die unformatierten Eingaben aus). Auch'_'*len(Q[0])+'__'
ist'_'*(2+len(Q[0]))
.SOGL V0.12 , 27 Bytes
Probieren Sie es hier aus! (
→
zur Vereinfachung hinzugefügt; das Programm erwartet die Eingabe auf dem Stack)quelle
Holzkohle , 32 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. 29-Byte-Version, die eine rechteckige Eingabe annimmt:
quelle
Python 3 ,
138147 BytesDie Variable 'l' ist eine Liste von Zeichenfolgen, wobei jede Zeichenfolge eine Zeile ist. Lesbare Version:
Bildet ein Quadratwurzelsymbol mit einem vollständigen V und schneidet die linke Seite entsprechend ab.
Probieren Sie es online!
quelle
l
als Eingabe annimmt . Sie müssen auch den Teill
einfügen, in dem die Eingabe erfolgt, entweder als Funktionsparameter oder als input () -Funktion usw. (PS: Ihrer Antwort fehlen anscheinend auch einige Leerzeichen.)Python 2 ,
131130 BytesEin vollständiges Programm, das eine Liste von Zeilen als Eingabe verwendet, wobei nur ein Rechteck zulässig ist (tatsächlich ist die erste Zeile eine der längsten).
Probieren Sie es online!
quelle
Java 8, 244 Bytes
Eine sehr lange Lösung, aber für Java wahrscheinlich die kürzeste. Dieses Lambda nimmt Eingabezeilen als a
String[]
und gibt a zurückString
. Alle Zeilen müssen gleich lang sein.Anhand der Beispielausgaben ging ich davon aus, dass nicht an jede Zeile in der Eingabe ein Leerzeichen angehängt werden muss, das Programm also nicht.
Dank Jonathan Allan für mich daran erinnert , über den
~
Betreiber.Probieren Sie es online
Ungolfed
Danksagung
quelle
h+a+h%2
die Sie zwei Mal in Ihrem Code verwenden: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;}
. (Ich habe auch die Kopf- und Fußzeile im TIO-Link verwendet, damit Sie Ihren aktuellen Golfcode vom Testcode isolieren können.)Japt , 46 Bytes
Führende Newline ist Teil des Programms. Eingabe und Ausgabe ist ein Array von Zeichenfolgen, die Linien darstellen.
Probieren Sie es online! Verwenden Sie das
-R
Flag, um das resultierende Array mit Zeilenumbrüchen zu verbinden.quelle
U
es sich um ein Array und nicht um eine Zeichenfolge handelt.JavaScript (ES6), 140 Byte
Nimmt Eingaben als ein Array von Zeichenfolgen / gibt ein Array von Zeichenfolgen zurück.
Testfälle
Code-Snippet anzeigen
quelle
Perl 5 ,
177185160 BytesProbieren Sie es online!
Änderungsprotokoll:
quelle
<>
anstelle von<STDIN>
,print" "x$f
anstelle vonfor(1..$f){print" "}
, mitxxx for yyy
anstelle vonfor(yyy){xxx}
, mit$_
in der for-Schleife anstelle von expliziten Variablen (for$i(..){..}
) ...x$f
und konnte es nicht zum Laufen bringen: o versuche es jetzt noch einmal ...C ++, 291 Bytes
Die Funktion setzt voraus, dass alle Zeichenfolgen im als Parameter übergebenen Vektor dieselbe Länge haben
quelle
Dyalog APL, 95 Bytes
Probieren Sie es online!
quelle
C 485 Bytes
Dieses Programm nimmt bis zu 999 Zeichen aus der Standardeingabe auf und liest sie in ein Array. Es druckt sie jeweils 1 auf die Standardausgabe mit den von Ihnen angegebenen Änderungen. Es wird davon ausgegangen, dass die Eingabe rechteckig ist.
quelle
Perl 5 , 159 Bytes
Probieren Sie es online!
quelle