- 1. ACL Practice Contestをac-library-pythonで解いてみたよ。(G~L問題)
- 2. ACL Practice Contestをac-library-pythonで解いてみたよ。(A~F問題)
- 3. 【Python】四分木の中で最も複雑な領域を分割し続けるアートを実装してみた
- 4. 手軽に実現!OpenCVとWebカメラでQRコードの位置を特定する方法
- 5. OpenCVでwebカメラの映像を表示する
- 6. [Python][Julia]Project euler4 (プロジェクトオイラー4)
- 7. [Python][Julia]Project euler3 (プロジェクトオイラー3)
- 8. 駄目グラフ003
- 9. 【配列に対しての複雑な処理】集団行動
- 10. ヒューリスティック(AHC)用にoptunaで雑にパラメタチューニングできるようにした
- 11. [Python][Julia]Project euler2 (プロジェクトオイラー2)
- 12. Python初心者が実装で気づいたこと
- 13. ボウリング Python3編
- 14. 場所取り (paizaランク C 相当)
- 15. Django+Pythonでパスワードリセットを実装する+viewカスタイズ
- 16. アンモニウムイオンかどうかの判定アルゴリズムの作成(ログ)
- 17. asariを実行した時に発生したロケールのエラーの対処
- 18. Touchdesigner 2023 注目のアップデートまとめ
- 19. 面倒くさい作業をPythonにやらせてみた(NSight Systems測定結果の集計を楽にするツールの実装)
- 20. 骨格のランドマーク推定でダンスを比較する【スコア調整】
ACL Practice Contestをac-library-pythonで解いてみたよ。(G~L問題)
# はじめに
2023年8月にあった大幅なAtCoderの言語アップデートで、PythonにもACLとよばれる競プロライブラリが追加されました。https://github.com/not522/ac-library-python/
この記事では、そのライブラリの使い方を [ACL Practice Contest](https://atcoder.jp/contests/practice2) の問題を通して見ていきます。
この記事ではG問題以降を見ていきます。A~F問題については下の記事を見てください。
https://qiita.com/hyouchun/items/4958618268407a5442cc
:::note info
ac-library-pythonの具体的な使い方が分かります。
:::
:::note warn
内部の詳細な実装は、上のGitHubを参考にしてください。
核となる問題の解き方は、ユーザー解説などを参考にしてください。
:::# G – SCC
## 問題
https://atcoder.jp/contests/practice
ACL Practice Contestをac-library-pythonで解いてみたよ。(A~F問題)
# はじめに
2023年8月にあった大幅なAtCoderの言語アップデートで、PythonにもACLとよばれる競プロライブラリが追加されました。https://github.com/not522/ac-library-python/
この記事では、そのライブラリの使い方を [ACL Practice Contest](https://atcoder.jp/contests/practice2) の問題を通して見ていきます。
この記事ではF問題までを見ていきます。G問題以降については下の記事を見てください。
https://qiita.com/hyouchun/items/3eee499a7ef31ca55b46
:::note info
ac-library-pythonの具体的な使い方が分かります。
:::
:::note warn
内部の詳細な実装は、上のGitHubを参考にしてください。
核となる問題の解き方は、ユーザー解説などを参考にしてください。
:::# ac-library-pythonのインストール方法
1分で終わります。
タスクバーなどにあるパソコン内
【Python】四分木の中で最も複雑な領域を分割し続けるアートを実装してみた
# はじめに
数ヶ月前に、[このツイート](https://x.com/BaroqueEngine/status/1549009803925950464?s=20)が目に留まりました。https://x.com/BaroqueEngine/status/1549009803925950464?s=20
非常に魅力的で、自分でも作りたいと思ったのですが、アルゴリズムや実装が公開されているにもかかわらず、実際にやっている人が少ないようでした。
そこで、本記事では、Pythonの画像処理ライブラリPillow(PIL)を使用して、四分木の中で最も複雑な領域を分割し続けるアートの実装方法について解説します。
# アルゴリズム
以下の操作を再帰的に繰り返します。
– キャンバス上のすべての矩形領域の中から、最も複雑な領域を選んで四分割する。
– 新しくできた矩形領域において画像の複雑度(score)と平均色を求め、領域を平均色で塗りつぶす。詳しくは元記事を参照してください。
https://zenn.dev/baroqueengine/articles/ccf3ac7a2c93
手軽に実現!OpenCVとWebカメラでQRコードの位置を特定する方法
本記事では、OpenCVを使用してWebカメラからQRコードの位置を特定します。
![スクリーンショット 2023-12-30 134537.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/632959/e0c8664d-8434-8aaa-ee2d-142ece09e411.png)必要なもの
Python: プログラミング言語として使用。
OpenCV: 画像処理を行うためのオープンソースライブラリ。## 1: 環境設定
まず、Pythonがインストールされていることを確認してください。次に、OpenCVをインストールします。コマンドラインまたはターミナルで以下のコマンドを実行します。“`
pip install opencv-python
“`## 2: カメラからの映像取得
Webカメラから映像を取得するためのコードを書きます。OpenCVを使ってカメラにアクセスし、映像を取得し表示します。
“`
import cv2# カメラのキャプチャを開始
cap = cv2.Vi
OpenCVでwebカメラの映像を表示する
画像認識においてpythonでwebカメラの映像を使用することがよくあります。そこで今回は基本的なwebカメラの映像をOpenCVで取り込み表示するコードを書いてみたいと思います。
まず、PythonでOpenCVを使用するためには、OpenCVライブラリをインストールする必要があります。pip install opencv-pythonを実行することでインストールできます。
以下のコードはウェブカメラの映像を表示するための基本的なコードです。
“`python3:app.py
import cv2# ウェブカメラのキャプチャを開始
cap = cv2.VideoCapture(0)# キャプチャがオープンしている間続ける
while(cap.isOpened()):
# フレームを読み込む
ret, frame = cap.read()
if ret == True:
# フレームを表示
cv2.imshow(‘Webcam Live’, frame)# ‘q’キーが押されたらループから抜け
[Python][Julia]Project euler4 (プロジェクトオイラー4)
#### Project euler Ploblem 4 (プロジェクトオイラー4)
[Largest Palindrome Product](https://projecteuler.net/problem=4)備忘のために残しておく。
## 問題
#### 問題文
回文の数はどちらから読んでも同じである。2つの2桁の数字の積から作られる、最大の回文の数は 9909 = 91 * 99 である。
2つの3桁の数字の積から作られる最大の回文の数を求めよ。A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9909 = 91 * 99.
Find the largest palindrome made from the product of two 3-digit numbers.## 答え
906609#### 解答の方針
3桁どうしを掛けた値は最大で6桁(1000 ×
[Python][Julia]Project euler3 (プロジェクトオイラー3)
### Project euler Ploblem 3 (プロジェクトオイラー3)
#### Largest Prime Factor備忘のために残しておく。
2023/12/29 コメントで指摘の通り、誤ったコードを書いていたので修正しました。
(コメントありがとうございます)## 問題文
13195の素因数は5,7,13,29である。
600851475143の最大の素因数は?(原文)
The prime factors of 13195 are 5,7,13 and 29.
What is the largest prime factor of the number 600851475143?## 解答
#### 答え
6857#### 解答の方針
求める値の平方数までの素因数を前から順にリストに追加する。
例えば、12の場合だと[3,2]、25の場合だと[5]。
今回の場合は、[6857, 1471, 839, 71]
リストの一番前が、最大の素因数となる。
素数の判定アルゴリズムに「エラトステネスの篩」があるが、今回は使用しなかった
駄目グラフ003
ダイナマイトプロットは描かない
## ![20111210220621.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2611739/ed27d75a-0f9d-74d5-bdbe-211dc2d9f653.jpeg)
そもそも,エラーバーも何を基準にするか。何を基準にしても,わかりにくいことに違いはないが。
【配列に対しての複雑な処理】集団行動
https://paiza.jp/works/mondai/array_utilization_primer/array_utilization_primer__group_move
“`py
N,Q = map(int,input().split())
A = [a for a in range(1,N+1)]
for i in range(1,Q+1):
tmp = []
tmp = input().split()
if tmp[0] == ‘reverse’:
A.reverse()
elif tmp[0] == ‘swap’:
num = A[tmp[1]+1]
A[tmp[1]+1] = A[tmp[2]+1]
A[tmp[2]+1] = num
elif tmp[0] == ‘resize’:
c = int(tmp[1])
A = A[:c]
print(*A,sep=”\n”)“`
ヒューリスティック(AHC)用にoptunaで雑にパラメタチューニングできるようにした
# やった事
– スコアを出せるコードと調整するパラメタが決まっている状態でパラメタ探索をできるようにした
– google colab上で動く言語、コードなら調整すればいけそう
– 探索はoptunaに全まかせ
– 探索速度は少し妥協
– テスト毎にosでコードを実行している為# 動機
AHC_029に参加した際に、パラメタ探索の為に無駄に提出回数を稼いでしまった事を後悔しているので、どうにかしたいと思い作成しました![スクリーンショット 2023-12-27 16.58.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3292016/3c0a8c4c-7388-4ceb-e7b4-025b74e854ea.png)
# 参考にしたサイト
https://blog.knshnb.com/posts/ahc007-optuna/# 参考先と異なる点
– google colabで動かす事を重視
– pythonユーザーに使いやすく# 作成し
[Python][Julia]Project euler2 (プロジェクトオイラー2)
#### Project euler Ploblem 2 (プロジェクトオイラー2)
Even Fibonacci Numbers備忘のために残しておく。
## 問題文
フィボナッチ数列において、新しい項は前2項を足したもので生成される。
1と2から始めた場合、最初の10項は以下の通りである。
1,2,3,5,8,13,21,34,55,89,…
400万を超えない値のフィボナッチ数列の項を考えたとき、値が偶数の項の合計を求めよ。#### (原文)
Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be
1,2,3,5,8,13,21,34,55,89,…
By considering the terms in the Fibonacci sequence whose values do not exceed four million, fin
Python初心者が実装で気づいたこと
最近社内のpythonツールの修正を改善したく、実装してみました。
すると、はまったとか気づいたことがありますので、忘れないようそして他の方の参考になれるようにこの記事に書くようにします。# 勉強になった点
## int型でファイルへの書き込みはできない
pythonは変数定義の際に型の指定は必要ないが、method呼び出す際に型がチェックされることがあると今回のことでわかりました。
書き込みは以下のコードで実現しています。
“`Python
filePath = {ファイルのパス}
pageNoFile = open(filePath, ‘w’)
pageNoFile.write(pageCount)
pageNoFile.close()
“`pageNoみたいな数字をファイルに書き込むと以下のエラーになります。
“`
TypeError: write() argument must be str, not int
“`
pageCountが数字とかのint型である場合、以下のようにstring型に変換できます。
“`
str(p
ボウリング Python3編
https://paiza.jp/works/mondai/array_utilization_primer/array_utilization_primer__bowling
配列に入れるのに苦労した。
※配列の入れ方は注意“`py
p = []
#1の位置
sum_pin = 0
#1じゃない残り
ans = 0for i in range(4):
p += input().split()for i in range(10):
if p[i] == “1”:
ans += 1
sum_pin = 10 – iprint(sum_pin)
print(ans)“`
場所取り (paizaランク C 相当)
https://paiza.jp/works/mondai/array_utilization_primer/array_utilization_primer__line_up
参考になったのは
https://qiita.com/Atsulabo/items/14b63e43f8dbab0698cb
https://qiita.com/Atsulabo/items/f7467fbf69e89d2b1f94
1)とりあえずデータを取得しておく
2)ポップ関数で要素を頭から減らす
3)重複は1つだけにして減らしてB配列として定義
4)出力“`py
N,K,F = map(int,input().split())A = [int(input()) for _ in range(K)]
for i in range(F):
A.pop(0)#重複取り除いたのをB列へ
B = []
for i in range(len(A)):
if i == 0:
B.append(A[i])
else:
for i in
Django+Pythonでパスワードリセットを実装する+viewカスタイズ
## 環境
Windows11
Python 3.10.5
Django 4.2.7## 経緯
Django+Pythonで学習がてらBlog作成中、パスワードリセット機能もつけたいと思い。## views.py
class PasswordReset(PasswordResetView):
# パスワードリセット用URLの送信ページ
success_url = reverse_lazy(“blogapp:password_reset_done”)
# パスワード変更URL付きメールのカスタマイズ
email_template_name = “blogapp/password_reset_email.html”
template_name = “blogapp/password_reset_form.html”class PasswordResetDone(PasswordResetDoneView):
# パスワード変更用URL送信完了ページ
アンモニウムイオンかどうかの判定アルゴリズムの作成(ログ)
## 目標
POSCARファイルから,アンモニウムイオンを含むどうかを判定するアルゴリズムを作成する.## 前準備
0-1.元素種N, Hを含むPOSCARファイルから,POSCAR.nnlistを作成し,NとHの結合距離の分布図を描く.
0-2.0-1.よりアンモニウムイオンのNH間の結合距離の最大値を推定する.(注)## 結合探索アルゴリズム
1.POSCARファイルが元素種N, Hを含む
2.POSCAR.nnlistにおいて,原子Nから0-2.で推定したNH結合距離以内に,原子Nに対するNeigborsListに原子Hを4つ以上含む,中心原子Nが存在する.
####### 条件1:原子Nから原子Hに対して,結合手がちょうど4本生えているか? #######
3.2.の中心原子Nに対して,
1番近い原子がHであり,かつ2番目・3番目・4番目に近い原子もHである,中心原子Nが存在する.
4.2.の中心原子Nに対して,5番目に近い
asariを実行した時に発生したロケールのエラーの対処
SageMaker Notebookインスタンス上で、asariを使って日本語の感情分析(ポジティブ・ネガティブ)を実行しようとした時に発生したエラーと対処方法を記録したメモです。
# 発生したエラー
実行コマンド on Jupyter Noteboook
“`
! pip install asarifrom asari.api import Sonar
sonar = Sonar()
“`発生したエラーメッセージ
“`
RuntimeException: [ONNXRuntimeError] : 6 : RUNTIME_EXCEPTION : Exception during initialization: /onnxruntime_src/onnxruntime/core/providers/cpu/nn/string_normalizer.cc:100 onnxruntime::string_normalizer::Locale::Locale(const string&)::Failed to construct locale wit
Touchdesigner 2023 注目のアップデートまとめ
皆さんメリークリスマス!生体情報連動系インタラクティブコンテンツを作成しているまるです。
今年のTouchアドカレは今月5日に行われた、「Build 2023.11290」の大型アップデートについてまとめます。
個人的には熱望していた機能が沢山実装され、超絶アツいアップデート!
「これみんな知ってるとたぶん役立つぜ」、ってやつを要点絞って紹介していきます。
(その為細かいバグの修正みたいなものは省きます)まだ知らない方は要チェックです。
では早速いきましょう。## Body Track CHOP
![BodyTrack.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/217271/37d3ae2d-f082-d4b9-6d0d-69b02dbd3d28.jpeg)
まずはこれ!遂に来ました!
Kinectが不要になるボディトラッキングCHOPです。注意点としてはWindows専用であることと、NVidiaのMaxineシステムのSDKを使用
面倒くさい作業をPythonにやらせてみた(NSight Systems測定結果の集計を楽にするツールの実装)
この記事は[Python Advent Calendar 2023](https://qiita.com/advent-calendar/2023/python) シリーズ3 21日目の投稿です。
# 概要
NVIDIAが開発、公開してるNSight Systemsというプロファイラーを利用して測定した結果を集計する時にExcelで集計しやすい形式に変換するツールを実装します。# 事の起こり
業務でGPUアプリケーション(AIモデル)の性能測定を行っています。測定にはNSight Systemsを利用しています。このプロファイラーはなかなか優れ物で、機能も豊富、~~動作は鈍重~~、ということでGPUを利用するアプリケーションの性能測定には必須のツールです。GPUを搭載したサーバーで測定を実施後、自分の端末に結果ファイルをダウンロードしてGUIアプリケーション上で結果を見ている時に、CUDA GPU Kernel Summary等の数値を見たい時に、以下のウィンドウで数値を確認出来ます。![image.png](https://qiita-image-store.s3.ap-n
骨格のランドマーク推定でダンスを比較する【スコア調整】
## 概要
前回,音楽を元に同期された動画を入力し,ダンスの比較するプログラムを作った.
https://qiita.com/Killinneko/items/58b4377ba03da7a9c037
比較にはコサイン類似度を用いている.
遊び要素として,各フレームでのコサイン類似度の平均をスコアとしたが,
お手本の動画と関係がない動きをしても,だいたい40点くらいは取れてしまう.
そこで,スコアの計算にシグモイド関数や最低・最高点の設定を用いてスコアの調整を行う.## スコアの調整:シグモイド関数
### シグモイド関数とは
以下の`f(x)`で表される関数で,どのようなxを入力しても0~1の範囲に変換する関数.
ニューラルネットワークの活性化関数で0か1に近づけたいときに利用される.
今回のスコアの計算も同じように,2値化に近い計算をしたいので利用する.シグモイド関数のパラメータとして,`α`があるが,数値が大きいほど0から1の変化が急になる.
“`math
f(x) = \frac{1}{1+e^{-ax}}
““
### 実装閾値でスコアの調整