From 8f523fc06ede48edda50861e7d1c15332687fa9b Mon Sep 17 00:00:00 2001 From: aysegulyildizz <139223718+aysegulyildizz@users.noreply.github.com> Date: Sat, 15 Nov 2025 21:57:28 +0300 Subject: [PATCH 1/2] Add function to calculate pyramid height --- Week03/pyramid_aysegul_yildiz.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 Week03/pyramid_aysegul_yildiz.py diff --git a/Week03/pyramid_aysegul_yildiz.py b/Week03/pyramid_aysegul_yildiz.py new file mode 100644 index 00000000..b32f744d --- /dev/null +++ b/Week03/pyramid_aysegul_yildiz.py @@ -0,0 +1,15 @@ +def calculate_pyramid_height(number_of_blocks): + height = 0 + used_blocks = 0 + + for level in range(1, number_of_blocks + 1): + # Taş ihtiyacı: level*(level+1)/2 + blocks_needed = level * (level + 1) // 2 + + if used_blocks + blocks_needed > number_of_blocks: + break + + used_blocks += blocks_needed + height = level + + return height From 43daf7ec49ac782a1fcf4ee06e1bb087d3c54c22 Mon Sep 17 00:00:00 2001 From: aysegulyildizz <139223718+aysegulyildizz@users.noreply.github.com> Date: Sat, 15 Nov 2025 22:04:06 +0300 Subject: [PATCH 2/2] Optimize pyramid height calculation function Refactor pyramid height calculation to use a mathematical formula instead of iteration. --- Week03/pyramid_aysegul_yildiz.py | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/Week03/pyramid_aysegul_yildiz.py b/Week03/pyramid_aysegul_yildiz.py index b32f744d..0564077c 100644 --- a/Week03/pyramid_aysegul_yildiz.py +++ b/Week03/pyramid_aysegul_yildiz.py @@ -1,15 +1,11 @@ -def calculate_pyramid_height(number_of_blocks): - height = 0 - used_blocks = 0 +import math - for level in range(1, number_of_blocks + 1): - # Taş ihtiyacı: level*(level+1)/2 - blocks_needed = level * (level + 1) // 2 +def calculate_pyramid_height(n: int) -> int: + if n <= 0: + return 0 - if used_blocks + blocks_needed > number_of_blocks: - break + # h(h+1)/2 <= n → h ≤ (sqrt(1 + 8*n) - 1) / 2 + + h = (math.isqrt(1 + 8*n) - 1) // 2 + return int(h) - used_blocks += blocks_needed - height = level - - return height