Для моего класса CS мой инструктор дал нам задание создать прямоугольник из звездочек с диагональными линиями, проведенными через него в Java.
Он также сказал нам написать это как можно меньше байтов. Я сократил его до 190 байт, но мне нужно найти несколько, чтобы еще больше упростить этот код для уменьшения байтов. Кто-нибудь может мне с этим помочь?
Этот код функционален:
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)?"*":" ");}}}
Вход есть 10 10
.
Выход:
**********
** * * *
* * * **
* * * *
** * * *
* * * **
* * * *
** * * *
* * * **
Ответы:
логически, каждый раз должен быть знак «звездочка» («*»)
i == j
&i+j==w-1
(для диагоналей),i == 0
&j == 0
(для верхней и левой сторон) иj == w-1
&i==h-1
(для правой и нижней линий).источник
System.out.println()
и все бесполезные пробелы между OR pipe (||
) и троичным оператором.Код, который вы предоставили, можно уменьшить, выполнив это:
Результирующий код будет:
Примечание: последняя строка отсутствует в примере вывода вопроса! Вывод примера кода отличается.
источник
Я на самом деле не имею Java на моем компьютере, поэтому я не могу проверить это, но я думаю, что он должен работать на 174 байта и почти наверняка может быть больше в гольфе
пробел, вставленный для ясности:
выведите «* \ n» для последнего символа в каждой строке, «*» для всех первой и последней строк и первого столбца, и «*» для любого времени, когда сумма строки и столбца является четной, в противном случае печатается ""
источник