20240718

Rye

astral-sh/rye

Rye is a comprehensive project and package management solution for Python. Rye picks and ships the right tools so you can get started in minutes:

Resolving dependencies and installing packages never be bottlenecks, and it's more important to make it easy to set up CI pipelines.

From that standpoint, dependabot seems to lack its native support, whereas poetry which has the most stars on GitHub is natively supported and Ddependabot can create pull requests automatically.

About GitHub Actions, rye generates requirements.lock which can be used as a normal requirements.txt in pip, so it was not difficult to have GitHub Actions workflows.

Its performance is quite impressive, but at the moment I'm writing this entry, poetry is the go-to option for me. It has the largest community, and when having issues, I can easily find solutions on the internet.

dependabot

Configuration options for the dependabot.yml file

This page guides me on how to configure dependabot of GitHub. Only issue I faced is

Tip: For package managers such as pipenv and poetry, you need to use the pip YAML value. For example, if you use poetry to manage your Python dependencies and want Dependabot to monitor your dependency manifest file for new versions, use package-ecosystem: “pip” in your dependabot.yml file.

So, I need to set package-ecosystem: "pip" instead of "poetry".

Not sure my configuration will work correctly. The format check has passed, but I will keep seeing the repository and its behavior.

version: 2
updates:
  - package-ecosystem: "pip"
    directory: "/"
    schedule:
      interval: "weekly"
    reviewers:
      - "huyfififi"
    versioning-strategy: "increase"

1992D. Test of Love

I implemented the greedy approach yesterday, and now I'm trying dynamic programming.

I don't see much differences between the greedy approach and the dynamic programming approach though.

The meaning of dpi in this problem and the way I can iterate m for each position should be remembered.

import math


def possible(n: int, m: int, k: int, a: list[str]) -> bool:
    # dpi => total swim at position i
    res = [math.inf] * (n + 2)
    res[0] = 0

    def _try_jump(ai: int, m: int, res: list[int], a: list[str]) -> None:
        for i in range(1, m + 1):
            if ai - i + 1 < 0:
                break
            if ai - i + 1 == 0 or a[ai - i] == "L":  # left bank or log
                res[ai + 1] = min(res[ai + 1], res[ai - i + 1])
        res[ai + 1] = min(res[ai + 1], res[ai] + 1)  # no jump

    for ai in range(n + 1):
        if ai < n and a[ai] == "C":
            continue
        else:  # ai == n or a[ai] in ("W", "L")
            _try_jump(ai, m, res, a)

    return res[n + 1] <= k


for _ in range(int(input())):
    n, m, k = map(int, input().split())
    a = list(input())
    if possible(n, m, k, a):
        print("YES")
    else:
        print("NO")

Ketone 20 mg/dl

Protein shake 5g Salmon 5g Cheese 10g Bacon Egg 10g

Total carbohydrate 30g

6k run


MUST:

TODO:


index 20240717 20240719