20260920

TODO: check definitions of dimentions

20260919

Today’s Stretches

Daily Reps

20260918

Today’s Stretches

Daily Reps

## Daily Report — Sep 18, 2026

- **Weight:** 73.4 kg
- **Calories:** ~2,300 kcal
- **Meals:** Fruits 100, Fries 400, Egg Benedict 400, BLT 400, Pancakes 400, Rice 100, Omelette 400, Soup 100
- **Hunger:** 3/10
- **Stress:** 4/10
- **Steps:** 2,206
- **Exercise:** 21m
  - Strength: 20m — 11 sets
- **Active Calories (COROS):** 273 kcal
- **Sleep:** 9h 02m
- **HRV:** 61 ms — Above normal (baseline 48 ms; normal 43–53)
- **COROS Stress:** 20

**Soft target:** ~2,100 kcal/day

**Note:** Friday IHOP with my wife. Still resting my right ankle and avoiding running.

**Summary:** 2,300 kcal is right at the upper end of the range we expected when aiming for 2,100, and hunger was only 3/10. Given that this was a Friday meal with your wife, I wouldn't treat the extra ~200 kcal as something that needs correcting tomorrow. Weight is 73.4 kg, still firmly in the recent 73.x range. Activity remains intentionally low while the ankle recovers.

20260917

Today’s Stretches

Daily Reps

20260916

I sprained my right ankle. I will refrain from jogging for a few days.

Today’s Stretches

Daily Reps

20260915

Today’s Stretches

Daily Reps

20260914

Today’s Stretches

Daily Reps

## Daily Report — Sep 14, 2026

- **Weight:** 73.5 kg
- **Calories:** ~2,200 kcal
- **Meals:** Chestnut 100, Protein shake 100, Potatoes 400, Breads 400, Salad 100, Fruits 100, Rice 200, Beef 600, Natto 100, Soup 100
- **Hunger:** 4/10
- **Stress:** 4/10
- **Steps:** 6,208
- **Exercise:** 1h 08m
  - Outdoor run: 5.32 km — 28m (5:13/km)
  - Strength: 26m — 17 sets
  - Yoga: 14m
- **Active Calories (COROS):** 753 kcal
- **Sleep:** 4h 05m
- **HRV:** 54 ms — Above normal (baseline 47 ms; normal 41–53)
- **COROS Stress:** 22

**Soft target:** ~2,100 kcal/day

**Summary:** The new target is behaving as intended: aiming for 2,100 resulted in a comfortable 2,200-kcal day with hunger at 4/10. Weight returned to 73.5 kg, matching the recent low, while activity was substantial. The main thing to watch today is the short recorded sleep rather than calories.

20250913

Today’s Stretches

This is a sample code AI generated (fixing my solution), but I won’t care much about it (at least for now)

class Solution:
    def minOperations(self, nums: list[int]) -> int:
        num_operations = 0

        def decade(d, k):
            # (smallest, largest) k-digit number whose leading digit is d
            if k == 1:
                return d, d
            return d * 10 ** (k - 1), (d + 1) * 10 ** (k - 1) - 1

        def mirror(prefix_str, length):
            if length % 2 == 0:
                return int(prefix_str + prefix_str[::-1])
            else:
                return int(prefix_str + prefix_str[-2::-1])

        for num in nums:
            if num < 10:
                continue  # single digits are always palindromes

            num_str = str(num)
            L = len(num_str)
            half_len = (L + 1) // 2
            prefix_with_middle = num_str[:half_len]
            prefix_val = int(prefix_with_middle)
            leading_digit = int(prefix_with_middle[0])
            required_parity = num % 2

            best_diff = float("inf")

            # same length: keep the prefix, or shift it by 1
            for candidate_prefix in (prefix_val - 1, prefix_val, prefix_val + 1):
                if candidate_prefix <= 0:
                    continue
                candidate_str = str(candidate_prefix)
                if len(candidate_str) != half_len:
                    continue  # crosses a digit-length change; handled below
                candidate = mirror(candidate_str, L)
                if candidate % 2 == required_parity:
                    best_diff = min(best_diff, abs(candidate - num))

            # same length, but the natural neighborhood has the wrong parity:
            # jump to whichever adjacent decade has the correct leading-digit parity
            if leading_digit % 2 != required_parity:
                k = half_len
                for d in (leading_digit - 1, leading_digit + 1):
                    if 1 <= d <= 9:
                        lo, hi = decade(d, k)
                        h = hi if d < leading_digit else lo
                        candidate = mirror(str(h), L)
                        best_diff = min(best_diff, abs(candidate - num))

            # shrink to L-1 digits: largest (L-1)-digit palindrome with correct parity
            if L > 1:
                d = 9 if required_parity == 1 else 8
                k2 = ((L - 1) + 1) // 2
                _, hi = decade(d, k2)
                best_diff = min(best_diff, abs(mirror(str(hi), L - 1) - num))

            # grow to L+1 digits: smallest (L+1)-digit palindrome with correct parity
            d = 1 if required_parity == 1 else 2
            k3 = ((L + 1) + 1) // 2
            lo, _ = decade(d, k3)
            best_diff = min(best_diff, abs(mirror(str(lo), L + 1) - num))

            num_operations += best_diff // 2

        return num_operations

Daily Reps

20260912

Today’s Stretches

Daily Reps

20260911

Today’s Stretches

Daily Reps

20260910

It was so hot that I couldn’t sleep well. I didn’t perform well today.

Today’s Stretches

class Solution:
    def rob(self, nums: list[int]) -> int:
        if len(nums) == 1:
            return nums[0]

        def rob_linear(nums: list[int]) -> int:
            two_back = 0
            one_back = nums[0]
            for i in range(1, len(nums)):
                two_back, one_back = one_back, max(one_back, two_back + nums[i])

            return one_back

        return max(rob_linear(nums[1:]), rob_linear(nums[:-1]))

Daily Reps

20260909

Today’s Stretches

Daily Reps

20260908

Today’s Stretches

Daily Reps

20260907

Today’s Stretches

class Solution:
    def getRow(self, rowIndex: int) -> list[int]:
        row = [1]
        for row_i in range(rowIndex):
            row.append(1)
            for pos in range(len(row) - 2, 0, -1):
                row[pos] += row[pos - 1]

        return row
import collections


class Solution:
    def getRow(self, rowIndex: int) -> list[int]:
        row = collections.deque([1])
        for row_i in range(rowIndex):
            row.appendleft(1)
            for pos in range(1, len(row) - 1):
                row[pos] += row[pos + 1]

        return list(row)
import functools


class Solution:
    def rob(self, nums: list[int]) -> int:
        @functools.cache
        def max_earning(house: int) -> int:
            if house == 0:
                return 0
            if house == 1:
                return nums[0]

            return max(
                nums[house - 1] + max_earning(house - 2),
                max_earning(house - 1),
            )

        return max_earning(len(nums))
import functools


class Solution:
    def rob(self, nums: list[int]) -> int:
        if len(nums) <= 2:
            return max(nums[:2])
        @functools.cache
        def max_earning(house_i: int) -> int:
            if house_i == 0:
                return nums[0]
            if house_i == 1:
                return max(nums[:2])
            return max(
                nums[house_i] + max_earning(house_i - 2),
                max_earning(house_i - 1),
            )
        return max_earning(len(nums) - 1)
class Solution:
    def rob(self, nums: list[int]) -> int:
        if len(nums) <= 2:
            return max(nums)

        two_back = nums[0]
        one_back = max(nums[0], nums[1])
        for i in range(2, len(nums)):
            two_back, one_back = (
                one_back,
                max(nums[i] + two_back, one_back)
            )

        return one_back

Daily Reps

20260906

Today’s Stretches

Daily Reps

20260905

Today’s Stretches

Daily Reps

20260904

20260903

20260902

## Daily Report — Sep 2, 2026

- **Weight:** 73.9 kg
- **Calories:** ~2,200 kcal
- **Meals:** Fries 200, Soup 100, Sushi 300, Natto Salad 200, Chips 150, Protein Shake 150, Fruits 200, Eggs 200, Gyoza 300, Onigiri 200, Ice cream 100, Chocolate 100
- **Hunger:** 4/10
- **Stress:** 4/10
- **Steps:** 6,265
- **Exercise:** 1h 28m
  - Walk: 1.71 km — 25m
  - Indoor cycling: 9.33 km — 20m
  - Strength: 23m — 16 sets
  - Yoga: 18m
- **Active Calories (COROS):** 699 kcal
- **Sleep:** 9h 11m
- **HRV:** 46 ms — Normal (baseline 48 ms; normal 43–53)
- **COROS Stress:** 21

**Note:** Weight dropped substantially today, but I may have been somewhat dehydrated, and I had a bowel movement before weighing in. I won't interpret the entire drop as actual weight loss.

**Summary:** Calories landed exactly at the current soft target, with manageable hunger and stress. Today's 73.9 kg is encouraging but unusually low relative to recent measurements, so wait for subsequent weigh-ins before interpreting the change. No reason to lower the calorie target right now.

20260901


index 202608 202610