Pracujesz jako stażysta dla matematyka, który naprawdę nienawidzi TeXa, LaTeXa itp. Do tego stopnia, że postanowił porzucić wszelkie składanie i zmusić cię do formatowania w ASCII. Zmęczyło cię to po pewnym czasie i postanowiłeś rozpocząć automatyzację jego części, zaczynając od pierwiastków kwadratowych.
Oto jak powstaje pierwiastek kwadratowy:
### 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
/ ###
\ / ###
\/ ###
I to wszystko!
Zasady
Masz stworzyć program lub funkcję, która pobiera ciąg, listę ciągów (tj. Wierszy) lub tablicę znaków i wyprowadza dane wejściowe przetworzone zgodnie z powyższym opisem (niekoniecznie w tej samej kolejności lub procesie)
Możesz założyć, że wejście jest prostokątne, jeśli jest to preferowane. Końcowe białe znaki nie są wymagane ani zabronione.
To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
Przykłady:
Input:
40
Output:
____
\/ 40
Input:
____
\/ 40
Output:
________
/ ____
\/ \/ 40
Input:
/|
|
|
_|_
Output:
_____
/ /|
/ |
\ / |
\/ _|_
Input:
# #
# #
#####
#
#
Output:
_______
/ # #
/ # #
\ / #####
\ / #
\/ #
Odpowiedzi:
Python 2 , 196 bajtów
Wypróbuj online!
-2 bajty dzięki Step Hen
-13 bajtów dzięki Jonathanowi Allanowi
źródło
/
też działa. Dzięki.i+l//2
input()
ocenia dane wejściowe surowe). Też'_'*len(Q[0])+'__'
jest'_'*(2+len(Q[0]))
.SOGL V0.12 , 27 bajtów
Wypróbuj tutaj! (
→
dodano dla łatwości użycia; program oczekuje danych wejściowych na stosie)źródło
Węgiel drzewny , 32 bajty
Wypróbuj online! Link jest do pełnej wersji kodu. Wersja 29-bajtowa, która przyjmuje dane prostokątne:
źródło
Python 3 ,
138147 bajtówZmienna „l” to lista ciągów, każdy ciąg linii. Wersja do odczytu:
Tworzy symbol pierwiastka kwadratowego z pełnym V, a następnie odpowiednio goli lewą.
Wypróbuj online!
źródło
l
jako dane wejściowe. Musisz również obejmować część, gdziel
jest wejście, albo jako parametr funkcji lub funkcji input () itp (PS odpowiedź również wydaje się być brak kilku white-space-dopełnienie).Python 2 ,
131130 bajtówPełny program przyjmujący listę wierszy jako dane wejściowe z naddatkiem tylko prostokątnym (w rzeczywistości pierwszy wiersz jest jednym z najdłuższych).
Wypróbuj online!
źródło
Java 8, 244 bajty
Bardzo długie rozwiązanie, ale prawdopodobnie zbliżone do najkrótszego dla Java. Ta lambda przyjmuje linie danych wejściowych jako a
String[]
i zwraca aString
. Wszystkie linie muszą mieć tę samą długość.Na podstawie przykładowych danych wyjściowych założyłem, że nie ma potrzeby dodawania spacji do każdej linii na wejściu, więc program nie.
Podziękowania dla Jonathana Allana za przypomnienie mi o
~
operatorze.Wypróbuj online
Bez golfa
Podziękowanie
źródło
h+a+h%2
którego używasz dwa razy w kodzie: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;}
. (Użyłem również nagłówka i stopki w łączu TIO, abyś mógł odizolować swój rzeczywisty kod golfowy od kodu testowego.)Japt , 46 bajtów
Wiodąca nowa linia jest częścią programu. Dane wejściowe i wyjściowe to tablica ciągów znaków reprezentujących linie.
Wypróbuj online! używając
-R
flagi, aby połączyć wynikową tablicę z nowymi liniami.źródło
U
jest tablicą, a nie łańcuchem.JavaScript (ES6), 140 bajtów
Pobiera dane wejściowe jako tablicę ciągów / zwraca tablicę ciągów.
Przypadki testowe
Pokaż fragment kodu
źródło
Perl 5 ,
177185160 bajtówWypróbuj online!
Dziennik zmian:
źródło
<>
zamiast<STDIN>
,print" "x$f
zamiast , zamiastfor(1..$f){print" "}
,xxx for yyy
zamiastfor(yyy){xxx}
, użycie$_
w pętli for zamiast zmiennych jawnych (for$i(..){..}
) ...x$f
i nie mogłem go uruchomić: o próbuję teraz ...C ++, 291 bajtów
Funkcja zakłada, że wszystkie ciągi w wektorze przekazane jako parametr mają tę samą długość
źródło
Dyalog APL, 95 bajtów
Wypróbuj online!
źródło
C, 485 bajtów
Ten program pobiera do 999 znaków ze standardowego wejścia i odczytuje je w tablicy. Drukuje je pojedynczo na standardowym wyjściu ze zmianami wskazanymi przez wyzwanie. Zakłada się, że wejście jest prostokątne.
źródło
Perl 5 , 159 bajtów
Wypróbuj online!
źródło