W tym wyzwaniu musisz przenieść grafikę ASCII (zwykle 2D) do 3D!
W jaki sposób?
lubię to,
X X DD
X D D
X X DD
do...
X X DD
X X DD D
X X DDDD
X XDDD
X X DD
Wtedy Jak robimy to ?
Biorąc pod uwagę sztukę ascii i N
powtórz te N
czasy.
- dla każdej postaci (nazwiemy to
A
): - niech
B
będzie postacią, która ma dokładnie 1 prawo i 1 w górę odA
- jeśli
B
jest spacją lub jest niezdefiniowany: - ustawiony
B
naA
.
Okular
- Pierwszym wejściem może być ciąg znaków ze znakami nowej linii lub lista ciągów reprezentujących grafikę 2D ASCII.
- Możesz użyć
%END%
do oznaczenia końca danych wejściowych, ale nie jest to wymagane. - Drugie wejście będzie
N
. Będzie to dodatnia liczba całkowita. - wszystkie linie ciągów będą tej samej długości.
Przykłady
Wejście: ("###\n###",1)
Wynik:
###
####
###
Zasady
Obowiązują podstawowe zasady gry w golfa .
również, jeśli masz pytania, pamiętaj o zadaniu w komentarzach!
Odpowiedzi:
Perl, 81 bajtów
Kod 75 bajtów + 6 dla
-i -n0
.Pamiętaj, że
\e
znaki są ASCII,\x1b
ale\e
są używane do ułatwienia testowania.Należy pamiętać, że to rozwiązanie wykorzystuje sekwencje specjalne ANSI i wymaga zgodnego terminala, a także
-i
argumentu wiersza poleceń do podania liczby „wymiarów”, które chcesz.Stosowanie:
W terminalu zgodnym z systemem Linux uruchom
PS1=
najpierw, aby upewnić się, że monit nie zastąpi wyświetlanego obrazu.źródło
CJam,
2524 bajtówNienazwany blok, który oczekuje listy ciągów i liczby powtórzeń na stosie i zamiast tego pozostawia nową listę ciągów.
Sprawdź to tutaj.(Zawiera opakowanie testowe, które dla wygody odczytuje ciąg STDIN).
Wyjaśnienie
źródło
S
działa na początkowej przestrzeni? Czy dozwolone jest także używanie zmiennych (które mogły zostać nadpisane) w funkcji?S
nie działa, ponieważf
zamiast tego będzie mapowany na tym ciągu. Jeśli chodzi o funkcje, uważam, że w „normalnych” językach istnieje również wiele funkcji przesyłanych w oparciu o globale, które nie są modyfikowane między wywołaniami.APL, 49 bajtów
Wejście: wektor wektorów znaków. Przykład:
Jak to działa:
↑⍵
zamienia argument w macierz znaków⎕UCS
od char do liczby całkowitej(32∘≠×⊣)
zastąp spacje (32) zerami...⍣⍺⊣
zastosuj ⍺ (lewy argument) razy funkcję po lewejs←0⍪⍵,0
obramowanie z zerami na górze i po prawej stronie argumentu1⊖¯1⌽
obróć 1 w górę i 1 w prawos+(s=0)×
sumuje do oryginału wersję przesuniętą, ale tylko nad zerami oryginału32⌈
zamienia zera w 32s⎕UCS
od liczby całkowitej do znakuźródło
MATL , 24 bajty
Format wejściowy to
Innym przykładem jest
Dane wyjściowe zawierają dodatkowe białe znaki, co jest dozwolone przez wyzwanie.
Wypróbuj online!
Jeśli tablica znaków 2D jest akceptowalna jako dane wejściowe (poprosiłem OP dwa razy ...), pierwszy
c
można usunąć, więc 23 bajty :Format wejściowy w tym przypadku to (wszystkie ciągi mają jednakową długość, co może wymagać poprawnego wypełnienia spacjami):
Wypróbuj online!
Wyjaśnienie
źródło
Wypukły , 23 bajty
Liczba bajtów zakłada kodowanie CP-1252.
Nienazwany blok, który oczekuje listy ciągów i liczby powtórzeń na stosie i zamiast tego pozostawia nową listę ciągów.
Wypróbuj online!
Jest to bezpośredni port mojej odpowiedzi CJam na wypukłą (która jest w dużej mierze oparta na CJam). Jedyną różnicą jest to, że Convex używa
Ë
zamiaster
transliteracji, oszczędzając jeden bajt. Dzięki GamrCorps za poinformowanie mnie o tym.źródło
Pyth,
5433 bajtyZestaw testowy.
źródło
;
?;
nie jest powszechny;
w językach programowania.;
jest zmienną.;
w lambdas ...I
,.?
,V
,F
,;
, (jednoznacznych wypowiedzi) bardzo mniej, a oni zostaną zastąpione?
,m
,u
,F
,M
,L
,R
,#
, ...JavaScript (ES6), 128 bajtów
Akceptuje i zwraca tablicę ciągów, przygotowuje dodatkowy wiersz dla wyniku, zapewnia, że każdy wiersz zawiera co najmniej spację, dzieli je wszystkie na znaki, zapętla, chociaż próbuje skopiować znaki do powyższego wiersza i kolumny po prawej, a następnie rekurencyjnie wywołuje się, aby zakończyć pętlę.
źródło
Python 2, 116 bajtów
Niedługo będę grać w golfa.
źródło
lambda
nie jest krótszy?e
. Ponadto,exec
jest stwierdzenie, więc to nie może być w lambda.Rubinowy, 95 bajtów
Każdy
<Esc>
jest dosłownie znakiem ESC (0x1b
).Stosowanie
Przypisz lambda do zmiennej np
func
.Nie golfił
forward
Sekwencja ucieczki,\e[1C
przemieszcza kursor do przodu (w prawo) powierzchni 1 i\e[<n>A
przesuwa gon
linii. Zasadniczo kod ten drukuje „warstwy” od tyłu do przodu, zastępując spacjeforward
sekwencją, aby uniknąć zastąpienia innych warstw spacją.źródło
f=
przed->
w wersji golfowej. Usuń go dla -2 bajtów.