Wprowadzenie
Krótko mówiąc: kilka dni temu przypadkowo zacząłem robić na drutach skarpetę, a dość logiczna struktura prostych ściegów doprowadziła mnie do pomysłu: dlaczego nie zrobimy skarpety ASCII?
Wejście
Dane wejściowe to parzysta liczba całkowita N w zakresie [2,30]
.
Wynik
Wyjście jest oczywiście skarpetą.
Struktura
Ponieważ będziemy używać tylko ściegów prostych, będziesz używać tylko v
ściegu w dół i >
ściegu po prawej stronie. Pozwól mi wyjaśnić pełną strukturę na przykładzie N=8
:
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvv>>>
vvvvvv>>>>>>
vvvvv>>>>>>>>>
vvvv>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>
- Pierwszy blok to górna część. Ma szerokość
N
i wysokośćN*1.5
- Następnie zaczyna się pięta. Odejmujesz jeden
v
na rząd od prawej strony, aż uzyskaszN/2
taką szerokość. Następnie dodajeszN/2
rzędy o szerokościN/2
poniżej, aby zakończyć dzianiny w dół. Zauważ, że daje w sumieN/2 + 1
wiersze o szerokościN/2
pierwsza część:
vvvvvvvv //begin with width N
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv // N*1.5 times
vvvvvvv // reduce
vvvvvv
vvvvv
vvvv // till here
vvvv // repeat N/2 times
vvvv
vvvv
vvvv
- Teraz zaczynają się dzianiny totemów bocznych. Zaczynasz od pierwszego zmniejszonego rzędu, wypełniasz,
>
aż uzyskasz szerokośćN
i dodajesz dwa kolejne. Kontynuuj ten proces, włączając pierwszy wiersz oN/2
szerokości - Wypełnij rzędy poniżej tego poziomu i dodaj do tego
N*1.5
czasy>
- Pozostaw zewnętrzne części w obecnej postaci i dodaj rząd pod pierwszą i nad laserem jeszcze dwie,
>'s
aż się skończy
druga część:
vvvvvvvv
vvvvvvv>>> //fill to N and add two >
vvvvvv>>>>>> //repeat
vvvvv>>>>>>>>>
vvvv>>>>>>>>>>>> //till here
vvvv>>>>>>>>>>>>>>>>>>>>>>>> //fill to the row above and add N*1.5 times >
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>> //add two more '>' than the row above
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>> //add two more '>' than the row beneath
vvvv>>>>>>>>>>>>>>>>>>>>>>>>
Zasady
Końcowe nowe linie są w porządku.
Możesz wybierać między wielkimi i małymi literami, V
ale musi być spójna.
To jest golf golfowy, więc wygrywa najkrótszy kod w bajtach.
Przypadki testowe
N=2
vv
vv
vv
v>>>
v>>>>>>
N=4
vvvv
vvvv
vvvv
vvvv
vvvv
vvvv
vvv>>>
vv>>>>>>
vv>>>>>>>>>>>>
vv>>>>>>>>>>>>
N=6
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvv>>>
vvvv>>>>>>
vvv>>>>>>>>>
vvv>>>>>>>>>>>>>>>>>>
vvv>>>>>>>>>>>>>>>>>>>>
vvv>>>>>>>>>>>>>>>>>>
N=12
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvv>>>
vvvvvvvvvv>>>>>>
vvvvvvvvv>>>>>>>>>
vvvvvvvv>>>>>>>>>>>>
vvvvvvv>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
v
lubV
zamiennie? Zakładam, że w tej chwiliv
jest to jedyny dozwolony, ale pozwolenieV
wpłynie na liczbę bajtówOdpowiedzi:
Pyth - 93 bajtów
Wyjaśnienie:
Możesz spróbować tutaj!
źródło
Mathematica, 104 bajty
Funkcja bez nazwy, przyjmująca dodatnią parzystą liczbę całkowitą jako dane wejściowe i zwracająca ciąg znaków (z końcowym znakiem nowej linii). Zauważ, że nowa linia między dwoma wierszami kodu powyżej jest częścią kodu. Główna praca jest wykonywana przez funkcję
c
, której nieokreślona definicjatworzy tabelę list, z których każda składa się z kilku
"v"
s z rzędu, po których następuje kilka">"
s, po których następuje nowa linia. Na szczęście zakres#3
wartości zewnętrznejTable
może mieć nazwę zmiennej, do której można się odwoływać w wyrażeniach#1
i#2
; pozwala to na wywołanie funkcjic
zarówno z argumentami stałymi, jak i zmiennymi. Reszta to tylko obliczenia, a operator łączenia łańcuchów""<>
spłaszcza zagnieżdżone listy, które powstają za darmo.źródło
Python, 3,5
183177 bajtówWyjaśnienie przychodzące.
Wypróbuj online!
źródło
n,v=int(input()),'v'
? Wtedy nic nie oszczędza.Groovy, 168 bajtów
To jest nienazwane zamknięcie. Podejście jest całkowicie podobne do mojej odpowiedzi w Pythonie 3.5 .
Wypróbuj online!
źródło
Partia, 279 bajtów
Uwaga: druga linia kończy się spacją. Wsad ma problemy z powtarzaniem echa
>
w zmiennych, więc muszę: a) użyć substytutu b) wywołać podprogram, aby powtórzyć poprawiony ciąg. W rzeczywistości mam trzy podprogramy:a
służy do pięty. Jedenv
jest usuwany za każdym razem, a trzy>
s są dodawane.>
Dodano dwa dodatkowe s, aby podprogram mógł wpaść wb
podprogram.b
służy do dolnej części stopy. Dwa>
s są usuwane za każdym razem. Podprogram następnie przechodzi doc
podprogramu.c
drukuje bieżący rząd skarpety, zastępując znak zastępczy, aby>
drukować poprawnie.Czwarta linia obsługuje szerokość nogi, podczas gdy piąta linia obsługuje jej długość. Siódma linia obsługuje długość stopy, podczas gdy ósma linia obsługuje górną połowę wysokości stopy, dodając dwie
>>
do każdej linii po wydrukowaniu. Działa to dla rozmiarów skarpet, które są wielokrotnościami 4, a dla innych rozmiarów skarpet wprowadzana jest korekta, aby najdłuższa linia się nie powtarzała.źródło
PHP, 229 bajtów
dość leniwe podejście
wypisuje wiodącą nową linię. Uruchom z
-nr
.awaria
źródło
dc , 269 bajtów
W porządku, cóż ... to jest ogromne . Nie było to łatwe, powiem ci tyle, co ze wszystkimi odniesieniami do rejestru, porównań, makr, brakiem możliwości manipulowania łańcuchami itp. Niemniej jednak dobrze się bawiłem, łącząc to ze sobą, i to wszystko jest naprawdę ważne, prawda ? ;)
Wypróbuj online!
źródło