We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
replace_color
starline.py の replace_color 関数の高速化の提案です: https://github.com/mattyamonaca/starline/blob/main/starline.py#L30-L75
starline.py
現在のアルゴリズムは以下のような流れになっています:
color_1
color_2
このアルゴリズムは color_1 の外側の領域から徐々に浸食していくイメージです。ただ、この方法だと全ピクセルの走査が何度も行われるので、時間がかかってしまいます。
そこで、幅優先探索を使って color_1 の境界付近のセルを順に上書きしていく方法を提案します。これにより、一回の走査で対象のピクセルを上書きできるようになります。
手元の環境では、元のアルゴリズムで replace_color に約 60 秒かかっていた入力が、この新しい方法では 0.6 秒ほどに短縮されました。
以下が提案するコードです。一部高速化のためのトリッキーなコードがありますが、根幹は基本的な幅優先探索です (これがないと 4 秒ほどになりました) https://github.com/koyumeishi/starline/blob/main/starline.py#L30-L99
The text was updated successfully, but these errors were encountered:
No branches or pull requests
starline.py
のreplace_color
関数の高速化の提案です:https://github.com/mattyamonaca/starline/blob/main/starline.py#L30-L75
現在のアルゴリズムは以下のような流れになっています:
color_1
で塗られているピクセルを列挙するcolor_1
やcolor_2
ではない色で塗られているピクセルがあるなら、その色で上書きするこのアルゴリズムは
color_1
の外側の領域から徐々に浸食していくイメージです。ただ、この方法だと全ピクセルの走査が何度も行われるので、時間がかかってしまいます。そこで、幅優先探索を使って
color_1
の境界付近のセルを順に上書きしていく方法を提案します。これにより、一回の走査で対象のピクセルを上書きできるようになります。手元の環境では、元のアルゴリズムで
replace_color
に約 60 秒かかっていた入力が、この新しい方法では 0.6 秒ほどに短縮されました。以下が提案するコードです。一部高速化のためのトリッキーなコードがありますが、根幹は基本的な幅優先探索です (これがないと 4 秒ほどになりました)
https://github.com/koyumeishi/starline/blob/main/starline.py#L30-L99
The text was updated successfully, but these errors were encountered: