Para minha aula de CS, meu instrutor nos deu a tarefa de criar um retângulo feito de asteriscos com linhas diagonais desenhadas em Java.
Ele também nos disse para escrevê-lo no menor número possível de bytes. Eu o reduzi para 190 bytes, mas preciso encontrar alguns para simplificar esse código ainda mais para diminuir bytes. Alguém pode me ajudar com isso?
Este código é funcional:
interface d{static void main(String[]a){for(int z=0,w=new Byte(a[0]),h=new Byte(a[1]);z<h*w;){int y=z/w,x=z++%w;System.out.print((x>w-2)?"*\n":(y%(h-1)*x*((y-x)%3)==0)?"*":" ");}}}
Entrada é 10 10
.
Resultado:
**********
** * * *
* * * **
* * * *
** * * *
* * * **
* * * *
** * * *
* * * **
Respostas:
logicamente, deve haver Asterik ("*") todas as vezes
i == j
&i+j==w-1
(para diagonais),i == 0
&j == 0
(para a linha superior e o lado esquerdo) ej == w-1
&i==h-1
(para o lado direito e a linha inferior).fonte
System.out.println()
espaços em branco inúteis e inúteis entre os tubos OR (||
) e o operador ternário.O código que você forneceu pode ser reduzido fazendo o seguinte:
O código resultante seria:
Nota: a última linha está ausente no exemplo de saída da pergunta! A saída do código de amostra é diferente.
fonte
Na verdade, eu não tenho Java no meu computador, então não posso testar isso, mas acho que ele deve funcionar para 174 bytes e quase definitivamente poderia ser mais jogado.
espaço em branco para maior clareza:
imprima "* \ n" para o último caractere em cada linha, "*" para todas as primeira e última linhas e a primeira coluna e "*" para qualquer momento em que a soma da linha e coluna for par; caso contrário, será impressa ""
fonte