Ok, moje pierwsze pytanie w golfa. Proszę, bądź łagodny :) Wiem, że jest zbyt wiele zagadek ascii: P, ale proszę bardzo.
Zadanie jest proste, użyj ulubionego języka programowania, aby wydrukować tętnienie trójkąta. Dane wejściowe powinny mieć wielkość tętnienia.
Każdy trójkąt jest równomiernie rozmieszczony. Zasadniczo dodajesz trójkąty, dopóki nie będzie wystarczającej ilości miejsca dla najmniejszego trójkąta.
Dozwolone są białe miejsca w dowolnym miejscu, o ile zmarszczki są takie same jak w przykładzie o prawidłowym rozmiarze.
Przykład
q)g 1
__
\/
q)g 2
____
\ /
\/
q)g 3
______
\ /
\ /
\/
q)g 4
________
\ __ /
\ \/ /
\ /
\/
q)g 5
__________
\ ____ /
\ \ / /
\ \/ /
\ /
\/
q)g 6
____________
\ ______ /
\ \ / /
\ \ / /
\ \/ /
\ /
\/
q)g 7
______________
\ ________ /
\ \ __ / /
\ \ \/ / /
\ \ / /
\ \/ /
\ /
\/
q)g 8
________________
\ __________ /
\ \ ____ / /
\ \ \ / / /
\ \ \/ / /
\ \ / /
\ \/ /
\ /
\/
Jak zwykle wygrywa najkrótszy kod :)
Odpowiedzi:
Pyth, 31 bajtów
Demonstracja.
Wyjaśnienie:
źródło
GNU sed -nr, 210
Początek:
Dane wejściowe są dodatnią liczbą całkowitą jednoargumentową za pośrednictwem STDIN, zgodnie z tym meta-pytaniem .
Wynik:
źródło
C, 165 bajtów
Przed etapami gry w golfa, które niszczą czytelność:
Zapętla to wszystkie znaki w prostokącie zawierającym figurę i ocenia równania liniowe oddzielające wnętrze trójkąta od zewnątrz, a także te, które oddzielają różne części trójkąta.
źródło
n,x,y,b,c;main(c,v)char**v;{for(n=atoi(v[1]);y<=n;++y)for(x=-n;x<=n;putchar(x++-n?b>6*y?95:b<6*y-4&c>0&c%4==1?"/\\"[x<1]:32:10))c=(b=2*n-abs(2*x+1))-2*y+2;}
Siatkówka , 182 bajty
Traktuje dane wejściowe jako jednoargumentowe.
Każda linia powinna przejść do własnego pliku i
#
powinna zostać zmieniona na nową linię w plikach. Jest to niepraktyczne, ale możesz uruchomić kod w postaci jednego pliku z-s
flagą, zachowując#
znaczniki. Jeśli chcesz, możesz zmienić te#
znaki wyjściowe na nowe wiersze w celu zwiększenia czytelności. Na przykład:Kod nie jest jeszcze zbyt dobrze golfowany (jeszcze).
źródło
C - 206 bajtów
i,j,m,k,a,b;main(i,v)char**v;{m=atoi(v[1])*2;while(k<m*(m/2+1)){i=k/m;j=k%m;a=i*3,b=(i+j)%2;putchar("_\\/ "[j>=a&&j<m-a?0:j>i-2&&b&&j<i*3-1&&j<m/2?1:j<=m-i&&!b&&j>m-a&&j>=m/2?2:3]);if(j==m-1)puts("");k++;};}
Przykładowe dane wyjściowe
źródło
int
. Ponadto, jeśli zadeklarujesz je w zakresie globalnym, zostaną one automatycznie zainicjowane na 0. Zamiast posiadania wieluputchar()
wywołań w różnych gałęziach, możesz użyć pojedynczego wywołania i zastąpićif
instrukcje operatorami trójskładnikowymi. Oczywiście staje się to trudne do odczytania w ten sposób, ale w duchu tej witryny jest napisanie brzydkiego kodu, jeśli jest krótszy. :)JavaScript ( ES6 ) 165
180 204Uruchom snippet w przeglądarce Firefox, aby przetestować. Jeśli zwracanie ciągu nie jest wystarczające, użycie alertu dla wyjścia to 2 znaki więcej.
źródło