Изучите несколько способов печати треугольников в Java с помощью циклов for.
1. введение
В этом уроке мы рассмотрим несколько способов печати треугольника на Java.
Естественно, существует много типов треугольников. Здесь мы рассмотрим только несколько из них: правый и равнобедренный треугольники.
2. Построение прямоугольного треугольника
Прямоугольный треугольник-это самый простой тип треугольника, который мы будем изучать. Давайте быстро взглянем на результат, который мы хотим получить:
Здесь мы замечаем, что треугольник состоит из 5 рядов, каждый из которых имеет количество звезд, равное текущему номеру строки. Конечно, это наблюдение можно обобщить: для каждой строки от 1 до N мы должны вывести r звезды , где r – текущая строка и N – общее количество строк.
Итак, давайте построим треугольник, используя две петли for :
public static String printARightTriangle(int N) < StringBuilder result = new StringBuilder(); for (int r = 1; r result.append(System.lineSeparator()); > return result.toString(); >
3. Построение Равнобедренного треугольника
Теперь давайте посмотрим на форму равнобедренного треугольника:
Если бы ТРЕУГОЛЬНИКИ были в майнкрафте | Майнкрафт машинима
Что мы видим в этом случае? Мы замечаем, что, в дополнение к звездам, нам также нужно напечатать несколько пробелов для каждой строки. Итак, мы должны выяснить, сколько пробелов и звездочек мы должны напечатать для каждой строки. Конечно, количество пробелов и звездочек зависит от текущей строки.
Во-первых, мы видим, что нам нужно напечатать 4 пробела для первой строки, и, когда мы спускаемся по треугольнику, нам нужно 3 пробела, 2 пробела, 1 пробел и вообще никаких пробелов для последней строки. Обобщая, нам нужно напечатать N – r пробелы для каждой строки .
Во-вторых, сравнивая с первым примером, мы понимаем, что здесь нам нужно нечетное количество звезд: 1, 3, 5, 7…
Итак, нам нужно напечатать r x 2 – 1 звезды для каждой строки .
3.1. Использование вложенных циклов for
Основываясь на приведенных выше наблюдениях, давайте создадим наш второй пример:
public static String printAnIsoscelesTriangle(int N) < StringBuilder result = new StringBuilder(); for (int r = 1; r for (int c = 1; c result.append(System.lineSeparator()); > return result.toString(); >
3.2. Использование одного цикла for
На самом деле, у нас есть другой способ, который состоит только из одного для цикла – он использует библиотеку Apache Commons Lang 3 .
Мы собираемся использовать цикл for для перебора строк треугольника, как мы делали в предыдущих примерах. Затем мы будем использовать метод StringUtils.repeat () , чтобы сгенерировать необходимые символы для каждой строки:
public static String printAnIsoscelesTriangleUsingStringUtils(int N) < StringBuilder result = new StringBuilder(); for (int r = 1; r return result.toString(); >
Или мы можем проделать ловкий трюк с методом substring ()|/.
Мы можем извлечь методы StringUtils.repeat() выше, чтобы построить вспомогательную строку, а затем применить к ней метод String.substring () . Вспомогательная строка-это конкатенация максимального количества пробелов и максимального количества звезд, которые нам нужны для печати строк треугольника.
Глядя на предыдущие примеры, мы замечаем, что нам нужно максимальное количество N – 1 пробелов для первой строки и максимальное количество N x 2 – 1 звезды для последнего ряда:
String helperString = StringUtils.repeat(‘ ‘, N — 1) + StringUtils.repeat(‘*’, N * 2 — 1); // for N = 10, helperString = » *********»
Например, когда N и r , нам нужно напечатать ” *****”, который включен в переменную helperString . Все, что нам нужно сделать, это найти правильную формулу для метода substring () .
Теперь давайте рассмотрим полный пример:
public static String printAnIsoscelesTriangleUsingSubstring(int N) < StringBuilder result = new StringBuilder(); String helperString = StringUtils.repeat(‘ ‘, N — 1) + StringUtils.repeat(‘*’, N * 2 — 1); for (int r = 0; r < N; r++) < result.append(helperString.substring(r, N + 2 * r)); result.append(System.lineSeparator()); >return result.toString(); >
Точно так же, немного поработав, мы могли бы перевернуть треугольник вверх ногами.
4. Сложность
Если мы еще раз взглянем на первый пример, мы заметим, что внешний цикл и внутренний цикл имеют максимум N шагов. Следовательно, у нас есть O(N^2) временная сложность, где N – количество строк треугольника.
Второй пример аналогичен — с той лишь разницей, что у нас есть два внутренних цикла, которые являются последовательными и не увеличивают временную сложность.
В третьем примере, однако, используется только цикл for с N шагами. Но на каждом шаге мы вызываем либо метод StringUtils.repeat () , либо метод substring() в вспомогательной строке, каждый из которых имеет O(N) сложность. Таким образом, общая временная сложность остается прежней.
Наконец, если мы говорим о вспомогательном пространстве, мы можем быстро понять, что для всех примеров сложность остается в переменной StringBuilder . Добавляя весь треугольник к переменной result , мы не можем иметь меньше O(N^2) сложности.
Конечно, если бы мы непосредственно печатали символы, у нас была бы постоянная сложность пространства для первых двух примеров. Но в третьем примере используется вспомогательная строка, и сложность пространства будет O(N) .
5. Заключение
В этом уроке мы узнали, как печатать два распространенных типа треугольников в Java.
Во-первых, мы изучили прямоугольный треугольник, который является самым простым типом треугольника, который мы можем напечатать на Java. Затем, мы исследовали два способа построения равнобедренного треугольника. Первый использует только для циклов, а другой использует преимущества метода StringUtils.repeat() и String.substring() и помогает нам писать меньше кода.
Наконец, мы проанализировали сложность времени и пространства для каждого примера.
Как всегда, все примеры можно найти на GitHub .
Источник: javascopes.com
Карта Треугольник
Треугольник (The Triangle) – это карта, которая выполнена в жанре паркур. Да, жанр уже надоел многим игрокам, но автор карты проявил максимум фантазии, когда создавал ее для Minecraft Bedrock Edition.
Особенности карты The Triangle
Вся карта — это один гигантский уровень в Minecraft Pocket Edition, который разбит на этапы. Их в Майнкрафте больше ста штук. Здесь вам попадутся различные структуры, объекты, и прочие интересные места.
К сожалению, Треугольник (The Triangle) не поддерживает мультиплеер – на ней настроены команды таким образом, что исключают его. Если вы попробуете запустить многопользовательскую игру, MCBE попросту вылетит.
Совместимо с устройствами: iOS / Android / Windows 10
Скачать карту The Triangle (.mcworld) [Обязательно!]
Скачать The Triangle
Скачать [16.70 Mb] скачиваний: 0
Источник: planet-mc.net
Если бы ТРЕУГОЛЬНИКИ были в майнкрафте | Майнкрафт машинима
Нравится MINECRAFT Русское Амино? Вступите в сообщество.
Создано ПростоЯ
Занятия
Избранная запись
Мобозверинец: Тихоня
Нравится MINECRAFT Русское Амино? Вступите в сообщество.
Другие записи ПростоЯ
Занятия
Еще записи из подборки
Мобозверинец: Тихоня
10 ч. назад
[ :seedling: ] Феκсu ⸙ 10 ч. назад
MINECRAFT Русское Амино
Количество участников: 213,610
Мы живем в Minecraft!
Вступить Создать запись
Дата вступления Mar 2019
Репутация
Подписки
Подписчики
Общие чаты
Другие записи ПростоЯ
Арты на заказ
Подписка
(Фейс) Мой калашников — Приколы в майнкрафт
Политика в отношении файлов «Cookie»
Данный веб-сайт сохраняет файлы cookie в вашем браузере в целях совершенствования навигации в сети и отображения персонализированного контента. Прочитайте нашу Политику конфиденциальности и Политику в отношении файлов cookie, чтобы получить подробную информацию и узнать, как настроить параметры.
Источник: aminoapps.com