Conversation
# Conflicts: # src/main/java/com/walking/intensive/chapter1/task5/Task5.java
…два цикла от 0 до 999. getHappyTicketChanceVer1 - данное решение не было засчитано. Предлагается несколько более быстрых способов подсчета счастливых билетов. getHappyTicketChanceVer2 – пять циклов, от 0 до 9 и определение шестой цифры через пять первых. getHappyTicketChanceVer3 – четыре цикла, исходя из того, что можно посчитать суммы трёх цифр, возвести в «квадрат» чтобы получить общее число комбинаций, и не считать суммы от 0 до 27 (9+9+9) а только половину - суммы от 0 до 13 и в конце удвоить получившееся значение. getHappyTicketChanceVer4 – два цикла, считаем опять только половину сумм от 0 до 13 и исходим из того, что сумма трёх чисел определяется числом вариаций второй цифры, заданной через сумму и первую цифру.
| static double getHappyTicketChanceVer1() { | ||
| int leftDigits = 0; | ||
| int rightDigits = 0; | ||
| double Equality = 0; |
There was a problem hiding this comment.
переменные в джава именуются с маленькой буквы
| long startTimeV1 = System.currentTimeMillis(); | ||
| getHappyTicketChanceVer1(); | ||
| long endtTimeV1 = System.currentTimeMillis(); | ||
| System.out.println("1. Время выполнения версии с 2-мя циклами от 0 до 999 = " + (endtTimeV1 - startTimeV1) + "мс"); |
There was a problem hiding this comment.
Длина строки кода должна быть ограничена 120 символами. Считается, что именно столько влазит в один экран при стандартных настройках
| } | ||
|
|
||
| System.out.println("Вероятность счастливого билета = " + Equality / (1000000)); | ||
| return Probability = Equality / (1000000); |
There was a problem hiding this comment.
Зачем нам нужна переменная Probability? Она ведь фактически бесполезна
| for (int l = 0; l < 10; l++) { | ||
| for (int m = 0; m < 10; m++) { | ||
| int n = i + j + k - (l + m); | ||
| if (n >= 0 && n < 10) |
There was a problem hiding this comment.
Тело if всегда должно находиться в фигурных скобках. Даже однострочное
|
|
||
| for (int i = 0; i < 14; i++) { | ||
| int luckyTiketsNumberInOneAmount = 0; | ||
| for (int j = 0 ; j < Math.min(10, i + 1); j++) { |
There was a problem hiding this comment.
лишний пробел после 0. Math.min(10, i + 1) я бы предложил вынести в переменную, чтобы за счет названия сообщить контекст этого выражения - он не очевиден
| double luckyTiketsNumber = 0; | ||
| double Probability; | ||
|
|
||
| for (int i = 0; i < 14; i++) { |
There was a problem hiding this comment.
14 стоит вынести в переменную (в идеале - в константу, но с ними пока не знакомы), чтобы через название или название и комменты (в случае с константой - Java-doc) сообщить ее смысл
| for (int j = 0 ; j < Math.min(10, i + 1); j++) { | ||
| luckyTiketsNumberInOneAmount += Math.min(9, i - j) - Math.max(0, i - j - 9) + 1; | ||
| } | ||
| luckyTiketsNumber += luckyTiketsNumberInOneAmount * luckyTiketsNumberInOneAmount; |
| } | ||
| } | ||
| } | ||
| } |
There was a problem hiding this comment.
алгоритм смешной, ситуация - страшная. В коде стараются не допускать более 3 (иногда - 2) уровней вложенности. В метода выше уровень вложенности - 6
| luckyTiketsNumber *= 2; | ||
|
|
||
| System.out.println("Вероятность счастливого билета = " + luckyTiketsNumber / (1000000)); | ||
| return Probability = luckyTiketsNumber / (1000000); |
There was a problem hiding this comment.
зачем скобки вокруг литерала? Повсеместно их вижу
getHappyTicketChanceVer1 - данное решение не было засчитано. Предлагается несколько более быстрых способов подсчета счастливых билетов.
getHappyTicketChanceVer2 – пять циклов, от 0 до 9 и определение шестой цифры через пять первых.
getHappyTicketChanceVer3 – четыре цикла, исходя из того, что можно посчитать суммы трёх цифр, возвести в «квадрат» чтобы получить общее число комбинаций, и не считать суммы от 0 до 27 (9+9+9) а только половину - суммы от 0 до 13 и в конце удвоить получившееся значение.
getHappyTicketChanceVer4 – два цикла, считаем опять только половину сумм от 0 до 13 и исходим из того, что сумма трёх чисел определяется числом вариаций второй цифры, заданной через сумму и первую цифру.