Sua tarefa é receber uma entrada inteira e imprimir um padrão em zigue-zague usando barras e barras invertidas.
- A entrada inteira determina o comprimento de cada zig e zag, bem como o número de zig e zags
- O padrão sempre começa da direita para a esquerda
Casos de teste
4->
/
/
/
/
\
\
\
\
/
/
/
/
\
\
\
\
2->
/
/
\
\
0->
1->
/
8->
/
/
/
/
/
/
/
/
\
\
\
\
\
\
\
\
/
/
/
/
/
/
/
/
\
\
\
\
\
\
\
\
/
/
/
/
/
/
/
/
\
\
\
\
\
\
\
\
/
/
/
/
/
/
/
/
\
\
\
\
\
\
\
\
Respostas:
C (gcc) ,
10810210198807672 bytesN-n-1
paraN+~n
Z
o incremento para a condição de loopprintf("%c\n",...)
vez deputchar(...)
e,puts("")
printf("%*s",n,"");
para imprimirn
espaços em vez de usar um loopj;for(j=n;j--;)putchar(32);
e combinar as duasprintf(...);
chamadasprintf("%*c",-~n,...);
vez deprintf("%*s%c",n,"",...);
Experimente online!
fonte
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 bytes . Removidos os colchetes, colocando tudo dentro dos loops; e alteradoN-n-1
paraN+~n
.Z%2?...:...
e substituindoZ<N;Z++
porZ++<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);}
. Experimente online!Carvão ,
16109 bytesExperimente online! Link é a versão detalhada do código.
fonte
InputNumber
Também foi quebrado no modo de golfe?)MATL , 17 bytes
Experimente online!
Explicação
fonte
C # (.NET Core) ,
117103101 bytesExperimente online!
fonte
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 bytes Você não precisa de todos esses parênteses; você pode combinar oint
; e adicione apenas+"\n"
uma vez.a=>{for(int z=a+1,e=0;e<a*a;)System.Console.WriteLine(e++/a%2<1?"/".PadLeft(--z):@"\".PadLeft(z++));}
101 bytesSOGL V0.12 ,
13129 bytesExperimente aqui!
pode ter 8 bytes
╝F{±↔}P}
se o caso de teste 0 não for necessárioExplicação:
fonte
Python 2 ,
696862 bytes-1 byte graças a Jonathan Frech
Experimente online!
fonte
Mathematica, 84
90bytesNão tenho idéia do porquê
\
é obviamente mais sombrio do que/
.fonte
(n=#;Grid@Array[If[Abs[n-(s=Mod[#-1,2n])-.5]==#2-.5,If[s<n,"/","\\"],""]&,{n^2,n}])&
Jq 1.5 ,
9489 bytesExplicação
Execução de amostra
Experimente online!
fonte
Java 8,
140134116 bytes-24 bytes graças a @Nevay .
Explicação:
Experimente aqui.
fonte
c-->f*(b-n-~b)
(-6 bytes).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 bytes* reduziu 1 byte com ES8 graças a Shaggy
Teste aqui
fonte
i
um parâmetro padrão. A contagem de bytes também parece desativada.Pitão , 20 bytes
Experimente online!
fonte
PowerShell , 81 bytes
Experimente online!
Ugh, isso é feio. Tanto código repetido, mais 7 bytes necessários para explicar
0
um caso especial. Sugestões de golfe são bem-vindas.fonte
Pitão, 17 bytes
Experimente online: Demonstração
Explicação:
fonte
Python 3:
90 bytes82 bytesObrigado a Jonathan Frech por apontar que a impressão não era necessária e que o primeiro zig era o caminho errado
fonte
] for
->]for
.print(...)
, uma função retornando uma string seria válida. Além disso, acho que seu zig inicial está orientado da maneira errada (\ em vez de /).(abs(...)-1)
->~-abs(...)
.05AB1E ,
1716 bytesExperimente online!
Explicação
Melhor tentativa atual usando a tela:
fonte
C ++,
9291 bytes-1 bytes graças a Kevin Cruijssen
Graças ao poder da magia
printf
fonte
int i=0,j
loop forfor(int i=0,j;i<n;++i)
para salvar um byte.Java (OpenJDK 8) ,
13110698969491 bytesExperimente online!
fonte
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 bytes).Dyalog APL ,
39363534 bytesExperimente online!
1 byte economizado graças a Zacharý
fonte
⎕IO
ser0
e remova¯1+
.(⌽,⊢)⍳⍵
vez de(⌽⍳⍵),⍳⍵
Perl 5 , 70 + 1 (
-n
) = 71 bytesExperimente online!
fonte
Kotlin , 102 bytes
Experimente online!
fonte
Excel VBA,
8483 bytesFunção de janela imediata VBE anônima que leva a entrada do intervalo
[A1]
e sai para a janela imediata VBEfonte
Gelatina , 15 bytes
Experimente online!
Programa completo.
fonte
Haskell ,
8685 bytesExperimente online!
Guardado um byte graças a Laikoni
Repita um zig ++ um zag e pegue as primeiras
n*n
linhas.fonte
cycle$ ...
em vez decycle( ... )
salvar um byte.J ,
39 35 33 3225 bytesExperimente online!
fonte
Dyalog APL,
4140 bytes⎕IO
deve ser0
.Experimente online!
fonte
D , 105 bytes
Experimente online!
Retirado da resposta C ++ de HatsuPointerKun.
fonte