Skip to content

Task8#822

Open
andreyv24 wants to merge 19 commits intoKFalcon2022:masterfrom
andreyv24:task8
Open

Task8#822
andreyv24 wants to merge 19 commits intoKFalcon2022:masterfrom
andreyv24:task8

Conversation

@andreyv24
Copy link

getHappyTicketChanceVer1 - данное решение не было засчитано. Предлагается несколько более быстрых способов подсчета счастливых билетов.

getHappyTicketChanceVer2 – пять циклов, от 0 до 9 и определение шестой цифры через пять первых.

getHappyTicketChanceVer3 – четыре цикла, исходя из того, что можно посчитать суммы трёх цифр, возвести в «квадрат» чтобы получить общее число комбинаций, и не считать суммы от 0 до 27 (9+9+9) а только половину - суммы от 0 до 13 и в конце удвоить получившееся значение.

getHappyTicketChanceVer4 – два цикла, считаем опять только половину сумм от 0 до 13 и исходим из того, что сумма трёх чисел определяется числом вариаций второй цифры, заданной через сумму и первую цифру.

# 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 и исходим из того, что сумма трёх чисел определяется числом вариаций второй цифры, заданной через сумму и первую цифру.
@KFalcon2022 KFalcon2022 self-assigned this Feb 4, 2025
static double getHappyTicketChanceVer1() {
int leftDigits = 0;
int rightDigits = 0;
double Equality = 0;
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

переменные в джава именуются с маленькой буквы

long startTimeV1 = System.currentTimeMillis();
getHappyTicketChanceVer1();
long endtTimeV1 = System.currentTimeMillis();
System.out.println("1. Время выполнения версии с 2-мя циклами от 0 до 999 = " + (endtTimeV1 - startTimeV1) + "мс");
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Длина строки кода должна быть ограничена 120 символами. Считается, что именно столько влазит в один экран при стандартных настройках

}

System.out.println("Вероятность счастливого билета = " + Equality / (1000000));
return Probability = Equality / (1000000);
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Зачем нам нужна переменная 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)
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тело if всегда должно находиться в фигурных скобках. Даже однострочное


for (int i = 0; i < 14; i++) {
int luckyTiketsNumberInOneAmount = 0;
for (int j = 0 ; j < Math.min(10, i + 1); j++) {
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

лишний пробел после 0. Math.min(10, i + 1) я бы предложил вынести в переменную, чтобы за счет названия сообщить контекст этого выражения - он не очевиден

double luckyTiketsNumber = 0;
double Probability;

for (int i = 0; i < 14; i++) {
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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;
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Math.pow()?

}
}
}
}
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

алгоритм смешной, ситуация - страшная. В коде стараются не допускать более 3 (иногда - 2) уровней вложенности. В метода выше уровень вложенности - 6

luckyTiketsNumber *= 2;

System.out.println("Вероятность счастливого билета = " + luckyTiketsNumber / (1000000));
return Probability = luckyTiketsNumber / (1000000);
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

зачем скобки вокруг литерала? Повсеместно их вижу

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

Comments