Para mi clase de CS, mi instructor nos ha asignado la tarea de crear un rectángulo hecho de asteriscos con líneas diagonales dibujadas a través de él en Java.
También nos dijo que lo escribiéramos en la menor cantidad de bytes posible. Lo he reducido a 190 bytes, pero necesito encontrar algunos para simplificar aún más este código para disminuir los bytes. Puede alguien ayudarme con esto?
Este código es 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 es 10 10
.
Salida:
**********
** * * *
* * * **
* * * *
** * * *
* * * **
* * * *
** * * *
* * * **
Respuestas:
lógicamente, debería haber Asterik ("*") cada vez
i == j
&i+j==w-1
(para diagonales),i == 0
&j == 0
(para la línea superior y el lado izquierdo) yj == w-1
&i==h-1
(para el lado derecho y la línea inferior).fuente
System.out.println()
espacios en blanco inútiles y todos inútiles entre los tubos OR (||
) y el operador ternario.El código que proporcionó podría reducirse haciendo esto:
El código resultante sería:
Nota: ¡falta la última línea en el resultado de ejemplo de la pregunta! La salida del código de muestra es diferente.
fuente
En realidad no tengo Java en mi computadora, así que no puedo probar esto, pero creo que debería funcionar para 174 bytes y casi definitivamente podría jugar más.
espacio en blanco para mayor claridad:
imprima "* \ n" para el último carácter en cada línea, "*" para todas las líneas primera y última y la primera columna, y "*" para cualquier momento en que la suma de la fila y la columna sea par, de lo contrario imprime ""
fuente