Twoim zadaniem jest przyjęcie jednej liczby całkowitej i wydrukowanie wzoru zygzakowatego za pomocą ukośników i odwrotnych ukośników.
- Liczba całkowita określa długość każdego zygzaka i zag, a także liczbę zygzaków i zag
- Wzór zawsze zaczyna się od prawej do lewej
Przypadki testowe
4->
/
/
/
/
\
\
\
\
/
/
/
/
\
\
\
\
2->
/
/
\
\
0->
1->
/
8->
/
/
/
/
/
/
/
/
\
\
\
\
\
\
\
\
/
/
/
/
/
/
/
/
\
\
\
\
\
\
\
\
/
/
/
/
/
/
/
/
\
\
\
\
\
\
\
\
/
/
/
/
/
/
/
/
\
\
\
\
\
\
\
\
Odpowiedzi:
C (gcc) ,
10810210198807672 bajtyN-n-1
w golfaN+~n
Z
inkrementację w warunek pętliprintf("%c\n",...)
zamiastputchar(...)
i,puts("")
printf("%*s",n,"");
do drukowanian
spacji zamiast używania pętlij;for(j=n;j--;)putchar(32);
i łączenie obuprintf(...);
wywołańprintf("%*c",-~n,...);
zamiastprintf("%*s%c",n,"",...);
Wypróbuj online!
źródło
Z,n,j;f(N){for(Z=0;Z<N;Z++)for(n=N;n--;putchar(Z%2?92:47),puts(""))for(j=Z%2?N+~n:n;j--;)putchar(32);}
102 bajty . Usunięto nawiasy klamrowe, wkładając wszystko do pętli; i zmieniłemN-n-1
naN+~n
.Z%2?...:...
i zastępowanieZ<N;Z++
zZ++<N;
.i;f(N){for(i=0;i<N*N;i++)printf("%*c\n",i/N%2?i%N+1:N-i%N,i/N%2?92:47);}
. Wypróbuj online!Węgiel drzewny ,
16109 bajtówWypróbuj online! Link jest do pełnej wersji kodu.
źródło
InputNumber
zepsuty również w trybie golfowym?)MATL , 17 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
C # (.NET Core) ,
117103101 bajtówWypróbuj online!
źródło
a=>{var o="";for(int z=a+1,e=0;e<a*a;)o+=(e++/a%2<1?"/".PadLeft(--z):@"\".PadLeft(z++))+"\n";return o;}
103 bajty Nie potrzebujesz wszystkich tych nawiasów; możesz połączyćint
; i dodaj tylko+"\n"
raz.a=>{for(int z=a+1,e=0;e<a*a;)System.Console.WriteLine(e++/a%2<1?"/".PadLeft(--z):@"\".PadLeft(z++));}
101 bajtówSOGL V0.12 ,
13129 bajtówWypróbuj tutaj!
może być 8 bajtów,
╝F{±↔}P}
jeśli 0 przypadków testowych nie jest wymaganeWyjaśnienie:
źródło
Python 2 ,
696862 bajtów-1 bajt dzięki Jonathan Frech
Wypróbuj online!
źródło
Mathematica, 84
90bajtyNie mam pojęcia, dlaczego
\
jest oczywiście ciemniejszy niż/
.źródło
(n=#;Grid@Array[If[Abs[n-(s=Mod[#-1,2n])-.5]==#2-.5,If[s<n,"/","\\"],""]&,{n^2,n}])&
Jq 1,5 ,
9489 bajtówWyjaśnienie
Przykładowy przebieg
Wypróbuj online!
źródło
Java 8,
140134116 bajtów-24 bajty dzięki @Nevay .
Wyjaśnienie:
Wypróbuj tutaj.
źródło
c-->f*(b-n-~b)
(-6 bajtów).n->{String r="";for(int a=0,b,c;a++<n;)for(b=n;b-->0;r+=a%2>0?"/\n":"\\\n")for(c=b-n+b|-a%2;++c<b;r+=" ");return r;}
JavaScript ES8,
83797876757471 bajtów* zmniejszono 1 bajt dzięki ES8 dzięki Shaggy
Przetestuj tutaj
źródło
i
parametr domyślny. Liczba bajtów również wydaje się wyłączona.Pyth , 20 bajtów
Wypróbuj online!
źródło
PowerShell , 81 bajtów
Wypróbuj online!
Ugh, to jest brzydkie. Tyle powtarzającego się kodu plus 7 bajtów wymaganych do uwzględnienia
0
specjalnego przypadku. Sugestie dotyczące gry w golfa mile widziane.źródło
Pyth, 17 bajtów
Wypróbuj online: demonstracja
Wyjaśnienie:
źródło
Python 3:
90 bajtów82 bajtówDzięki @Jonathan Frech za zwrócenie uwagi, że wydruk nie był potrzebny i że pierwszy zygzak był niewłaściwy
źródło
] for
->]for
.print(...)
, funkcja zwracająca ciąg znaków byłaby poprawna. Myślę też, że twój początkowy zig jest źle ustawiony (\ zamiast /).(abs(...)-1)
->~-abs(...)
.05AB1E ,
1716 bajtówWypróbuj online!
Wyjaśnienie
Bieżąca najlepsza próba użycia płótna:
źródło
C ++,
9291 bajtów-1 bajty dzięki Kevin Cruijssen
Dzięki mocy magii
printf
źródło
int i=0,j
pętlę for,for(int i=0,j;i<n;++i)
aby zapisać bajt.Java (OpenJDK 8) ,
13110698969491 bajtówWypróbuj online!
źródło
i->{for(int j=0;j<i*i;System.out.printf("%"+(j/i%2<1?i-j%i+1:j%i+2)+"s",j++/i%2<1?"/\n":"\\\n"));}
(98 bajtów).Dyalog APL ,
39363534 bajtówWypróbuj online!
1 bajt zapisany dzięki Zacharýmu
źródło
⎕IO
się0
, a następnie usunąć¯1+
.(⌽,⊢)⍳⍵
zamiast(⌽⍳⍵),⍳⍵
Perl 5 , 70 + 1 (
-n
) = 71 bajtówWypróbuj online!
źródło
Kotlin , 102 bajty
Wypróbuj online!
źródło
Excel VBA,
8483 bajtówAnonimowa funkcja bezpośredniego okna VBE, która przenosi dane wejściowe z zakresu
[A1]
i wyjścia do bezpośredniego okna VBEźródło
Galaretka , 15 bajtów
Wypróbuj online!
Pełny program
źródło
Haskell ,
8685 bajtówWypróbuj online!
Oszczędność jednego bajtu dzięki Laikoni
Powtórz zig ++ a zag i weź pierwsze
n*n
linie.źródło
cycle$ ...
zamiastcycle( ... )
zapisuje bajt.J ,
39 35 33 3225 bajtówWypróbuj online!
źródło
Dyalog APL,
4140 bajtów⎕IO
musi być0
.Wypróbuj online!
źródło
D , 105 bajtów
Wypróbuj online!
Usunięto z odpowiedzi C ++ HatsuPointerKun.
źródło