Как складывать фрукты в аккуратную стопку
Я выбрал Java для этого случая, потому что язык достаточно прост для любого перевода.
Каким должен быть математический алгоритм для определения количества фруктов, требуемого в нижней строке, чтобы сложить число фруктов в такой схеме? (игнорируя силу 2, которые я складываю в квадрат)
* 1
* 2 3 = 2
*
* 1 2
* 3 4 5 = 3
*
* 1
* 2 3
* 4 5 6 = 3
*
* 1 2 3
* 4 5 6 7 = 4
*
* 1 2
* 3 4 5
* 6 7 8 9 = 4
*
* 1
* 2 3
* 4 5 6
* 7 8 9 X = 4
*
* 1 2 3
* 3 4 5 6
* 7 8 9 X 1 = 5
Сначала я думал, что это будет легко, но, как только цифры выросли, я начинаю думать, что это скорее факториал.
Изменить: Добавление в код, переведенный из ответа, предоставленного ниже @templatetypedef
private int _getBottomLineCount() {
double insideSquareRoot = (8 * numberOfApples) +1;
double squareRoot = Math.sqrt(insideSquareRoot);
double val = (squareRoot -1) /2;
return (int) Math.ceil(val); // Round it up to nearest whole number
}
1 ответ
Количество плодов в пирамиде высотой n задается n -ным треугольным числом, определяемым уравнением
Tn = n (n + 1) / 2
Например, пирамида высотой 2 содержит 2 (2 + 1) / 2 = 3 фрукта. Пирамида высотой 4 содержит 4 (4 + 1) / 2 = 10 фруктов.
Если у вас есть k фруктов, которые нужно положить в стек, вы ищете наименьшее число n, такое что Tn ≥ k. Вы можете решить для этого непосредственно:
Тн = к
n (n + 1) / 2 = k
n2 + n = 2k
n2 + n - 2k = 0
Использование квадратной формулы дает
n = (-1 ±√(1 + 8k)) / 2
Отрицательный корень здесь можно игнорировать, поэтому ваш номер n должен быть задан как
n = (√(8k + 1) - 1) / 2
Это число может быть не целым числом, в этом случае вы хотите округлить.
Давайте попробуем несколько примеров. Предположим, что у вас есть 9 фруктов, чтобы сложить. Мы можем оценить формулу выше, чтобы получить
n = (√(72 + 1) - 1) / 2 = (√(73) - 1) / 2 = 3,772001873
При округлении до k = 4, поэтому вам понадобится стек высотой 4.
Предположим, у вас есть 137 фруктов в стеке. Эта же формула возвращает n = 16,060495162, поэтому вам понадобится стопка с высотой 17 для хранения фруктов.
Надеюсь это поможет!