Słynna podstawowa podszewka C64
10 PRINT CHR$(205.5+RND(1)); : GOTO 10
drukuje labirynt ukośników i odwrotnych ukośników.
\\/\\\//\/\////\\/\/
\/\///\\///////\//\/
/\\\//\//\////\\//\\
\////\//\//\/\\\\\\/
/\/\\///\\\\/\\\\/\\
\/\//\\\\\\//\/\////
/\//\\///\/\///\////
\/\\\//\\/\\\//\\/\/
//////\\/\\/\/\/\///
\\/\/\\////\/\/\\/\/
Przeczytaj w takim labiryncie wykonanym z ukośnych ścian ze standardowego ekranu i wydrukuj ten sam labirynt z poziomymi i pionowymi ścianami składającymi się ze znaku ściany „#”
Na przykład mały labirynt
/\\
\\/
///
przetłumaczyć na
#####
# #
# # # #
# # # #
##### # # #
# #
#########
#####
Mówiąc ściślej, każdy izolowany segment ściany ma długość pięciu znaków, przylegające segmenty ściany mają wspólny narożnik. Przesunięcie znaku w prawo / lewo / góra / dół w matrycy ukośników i ukośników odwrotnych odpowiada translacji po przekątnej o 2 znaki w pionie i 2 znaki w kierunku poziomym w macierzy #.
Odpowiedzi:
Python 3,
226224 bajtyMój pierwszy golf w Pythonie, więc prawdopodobnie bardzo nieoptymalny. Tworzy mnóstwo spacji końcowych, ale nie ma poprzedzających znaków nowej linii i co najwyżej dwóch poprzedzających spacji. Dane wejściowe należy podawać ręcznie z wiersza poleceń (być może ktoś zna krótszy sposób uzyskania wejścia wieloliniowego w Pythonie ...).
Chodzi o to, aby zainicjować ogromną tablicę spacji
r
, a następnie iterować dane wejściowe i zamieniać spacje#
w razie potrzeby, a na końcu wydrukować całą tablicę. Sztuczka, której użyłem, to porównanie znakówz = '0'
zamiast testowania równości do'/'
lub'\'
, co pozwala zaoszczędzić sporo bajtów.źródło
Julia, 258 bajtów
Funkcjonalne rozwiązanie ...
W kolejności pojawiania się:
f
obejmuje „/” i „\” ich 5 * 5 bitowymi wzorami,h
składa co piąty i następną linię w jedną linię (przywołaj „sąsiednie segmenty ściany dzielą róg”) ig
robi to samo dla kolumn. Na konieci-j,i+j
obraca obraz.źródło
JavaScript (ES6), 258
Funkcja z labiryntem jako parametrem, zwracająca dane wyjściowe.
Nie jestem pewien, czy jest poprawny, z powodu reguł wejścia / wyjścia (i tak było fajnie)
źródło