- 1. 積の最小化
- 2. タイルの敷き詰め
- 3. Python製のシンプルなゲーム開発用フレームワークを作った
- 4. 抽選ツール④
- 5. 【2024年】Pythonの学習にオススメ技術書TOP5
- 6. 元素間距離のヒストグラム描画ログ
- 7. pythonの辞書型メモ
- 8. 崖に落ちるか判定
- 9. 終了判定 2 Python3編
- 10. LeetCode日記(Day 2)
- 11. HuggingFaceの読込速度の比較(ローカルパス、キャッシュ、pickle)
- 12. PHPとPythonの比較勉強ー複数行にわたる入力 (paizaランク D 相当)
- 13. 2023年のQiita人気タグをアニメーションで振り返る
- 14. 【Python OSSライブラリ製作】話題の時系列変化を可視化する”アニメ化”ワードクラウドを作成するライブラリをリリースした
- 15. 九九の一覧表作成
- 16. [Python][Julia]Project euler10 (プロジェクトオイラー10)
- 17. pandas.DataFrameのループ速度比較(iterrows vs apply)
- 18. pythonのECDSA署名鍵読み込みが意外と雑だった
- 19. 数値のスペース埋め(入力でデータの数とスペースで何桁の数にするか指定する)
- 20. [Python][Julia]Project euler9 (プロジェクトオイラー9)
積の最小化
https://paiza.jp/works/mondai/conditions_branch/conditions_branch__complex_boss
前回の問題を教訓に
どちらかが0の場合は問答無用に0が最小になるので
こんな感じで書いてみました。
つまり、最初の数値を基準に、小さくなったらそれを採用するみたいな感じですね。
で、A~Bの間をループさせると。負の数が含まれていても結局あんまり関係ないなということで
こうなりました。“`py
A,B = map(int,input().split())
result = 0
for i in range(A,B+1):
for j in range(A,B+1):
if A == 0 or B == 0:
break
if result == 0:
result = i * j
elif result > i * j:
result = i * jprint(result)
“`
でも解答の場合は、もうちょっとロ
タイルの敷き詰め
https://paiza.jp/works/mondai/conditions_branch/conditions_branch__complex_step8
“`py
H,W = map(int,input().split())
if H > 0 and W > 0:
if H % 2 == 0 and W % 2 == 0:
print(‘YES’)
else:
print(‘NO’)
else:
print(‘NO’)“`
最初は最初のif文なかったんだけど、
テストケースでHやWが0だったときにこれだめなんですよね。
で最初のif文を付け加えたら正解になりました。ちなみに、上のは入れ子になってますが、最初のif文を逆にしたらelseがいらなくなります。
(ということに今気づいた)
ただし、この場合、andだとだめでorにしないとどちらかが0の場合にNoにならないです。“`py
H,W = map(int,input().split())
if H == 0 or W == 0:
Python製のシンプルなゲーム開発用フレームワークを作った
## 崩壊しないシステマティックなゲーム開発がしたい
ということで、Python 製のミニマルなゲーム開発用フレームワーク Pigframe を作りました。
![Pigframe](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1419783/064ce5c7-8f76-acdb-f096-e29ff6ee7863.jpeg)https://github.com/passive-radio/pigframe
主には、Pygame, Pyxel などの Python 製のゲーム開発エンジンを使ってゲームを開発したいと思っている、開発を始めた個人開発者・学習者向けになります。
依存している外部ライブラリはないので、自分がゲーム開発で使いたい Pygame, Pyxel などの開発エンジンと併せて使うことが出来ます。
#### ◼ 一体全体なにができるの?
Pigframe は以下のような仕様を持っています。
| 機能 | 対
抽選ツール④
**抽選ツール**に結果待ちの間に演出メッセージの処理を並列に動かす非同期処理を実装しました。
“`python3
###################################################
### お題抽選ツール
#####################################################ランダムモジュールを呼び出す
import random
import openpyxl
import subprocess
import asyncio
import time#配列を定義する
array1 = []
array2 = []
#人数変数
N = 0
#エクセルファイルのファイル名変数
out_file = “prezen1.xlsx”
wb = openpyxl.load_workbook(out_file)
#書き込むワークシートを定義する
ws = wb[‘select’]
#行数の定義
start_row = 3
# 待ち時間変数
sleep_time = 10# 非同期処理で10秒待つ
asyn
【2024年】Pythonの学習にオススメ技術書TOP5
# [ChatGPTと学ぶPython入門 「Python×AI」で誰でも最速でプログラミングを習得できる!](https://amzn.to/3TVGxmS)
[![画像タイトル](https://m.media-amazon.com/images/I/81-4Xhe52HL._SL1500_.jpg)](https://amzn.to/3TVGxmS)
**「Python×AI」で誰でもあっという間にプログラムを作れるようになる!
世界一やさしいPython入門書!**「Pythonの構造をしっかり理解した上でコード作成をAI(ChatGPT)にサポートしてもらう」というコンセプトのPythonプログラミング入門書が新登場!
プログラミングに必要な基礎をしっかり身につけつつ、プロンプトプログラミングのスキルも手に入れ、自動であっという間にコード作成ができるようなる、1冊で2つのスキルを学ぶことができるお得な書籍。
もちろん「AIに全てお任せ」ではなく、はじめてプログラミングを学ぶ人に向けて基本をしっかり押さえ、スタンダードな知識も同時に身につけられる内容になっています。
元素間距離のヒストグラム描画ログ
## 目的:閾値の決定
結晶構造において,元素が結合を作る結合距離の最大値(閾値)を見積もる.
その際,ここで描く元素間距離のヒストグラムと,[1]を参考に決定する.[1] スマート,L.・E.ムーア 著,河本 邦仁・平尾 一之 訳,入門 固体化学,化学同人(1996)
## 目標
ある元素間の距離を取得し,ヒストグラムとして描画する.## 手順
## 作成済み一覧
+ C-O
+ N-H
+ P-H
+ Al-Cl
+ B-F
+ B-H
+ Br-O
+ Cl-O
+ C-N
+ I-O
+ N-O
+ Mn-O
+ O-H
+ S-O
+ Se-O## 実行ログ
“`terminal
pwd
/mnt/ssd_elecom_c2c_960gb/scripts/plot_PH_dist_histgraml
PH_dist_1d_list.npy* figure/ plot_PH_dist_list.py*
Untitled.ipynb*
pythonの辞書型メモ
## 元素記号と元素名(英語)
+ 原子番号順
+ 希ガスは除く
+ 原子番号53番まで“`python
elements = {
“H”: “Hydrogen”,
“Li”: “Lithium”,
“Be”: “Beryllium”,
“B”: “Boron”,
“C”: “Carbon”,
“N”: “Nitrogen”,
“O”: “Oxygen”,
“F”: “Fluorine”,
“Na”: “Sodium”,
“Mg”: “Magnesium”,
“Al”: “Aluminium”,
“Si”: “Silicon”,
“P”: “Phosphorus”,
“S”: “Sulfur”,
“Cl”: “Chlorine”,
“K”: “Potassium”,
“Ca”: “Calcium”,
“Sc”: “Scandium”,
“Ti”: “Titanium”,
“V”: “Vanadium”,
“Cr”
崖に落ちるか判定
https://paiza.jp/works/mondai/conditions_branch/conditions_branch__complex_step7
小数点があるということで、int型でなくてfloat型にしてみました。
でも解答だと普通にintでもよかったみたいです。
まあ、仕様を見ると、小数点のある数字を混ぜたときにfloat型になってしまうようなので
問題ないのかな。“`py
N,K,T = map(float,input().split())
X = T + 0.1if N * K < X: print('YES') else: print('NO') ``` PHPだとこうですね。 さらに変数を使わないようにしました 行数が減りました ```php
終了判定 2 Python3編
https://paiza.jp/works/mondai/conditions_branch/conditions_branch__complex_step5
さて久しぶりにPythonから。
ここでwhileを使いました。たぶんpythonでPaizaやり始めてから初めてじゃないかな。“`py
N,K = map(int,input().split())
cnt = 0
while N < K: cnt += 1 N = N * 2 print(cnt) ``` ところでなんで、+=は知ってるのに、*=はなぜしなかったの?と自分で自分を突っ込んでしまった。いやおっしゃるとおり。 こうですね。 ```py N,K = map(int,input().split()) cnt = 0 while N < K: cnt += 1 N *= 2 print(cnt) ``` とりあえずphpでもやっておきます。 ```php5
LeetCode日記(Day 2)
# 初めに
前回に続き,LeetCodeの解答と解説をまとめていこうと思います~~## LeetCode(Palindrome Number)
>Given an integer x, return true if x is a
palindrome, and false otherwise.凄くシンプルな問題ですね.
これは「回文ならTrueを返してね.そうでなければFalseでお願い」ということですね.
じゃあ,さっそく解いてみましょう~#解答・解説
“`python
def isPalindrome(self, x: int) -> bool:
x_str = str(x)x_str_reversed = x_str[::-1]
if x_str == x_str_reversed:
return True
else:
return False
“`これは一瞬で書けますね!
与えられた数字を文字列として置き換えて,反転させたも
HuggingFaceの読込速度の比較(ローカルパス、キャッシュ、pickle)
# 概要
HuggingFaceのモデルのロード速度を3つの方法で比較しました。* ローカルパス:model_nameにダウンロードしたものモデルフォルダのパス(e.g. “./mulitlingual-e5-large”)を指定してロード
* キャッシュ:model_nameにURLのモデル名(e.g. “intfloat/multilingual-e5-large”)を指定してキャッシュ済みのモデルをロードする
* pickle: pickleでダンプしたインスタンスをロード結果としてはpickleが一番早かったです。ローカルパスとキャッシュは同じくらいでした。
# 背景
HuggingFaceのモデルをなるべく早くロードできる方法が何か知りたくて調べました。
# 環境
* M1 MacBookAirのメモリ16GB、SSD 1TB# 実装
`intfloat/multilingual-e5-large`の読込み速度を比較します。2GB以上あるので、より軽量なモデルで試したい場合は適宜、変更ください。## ローカルパス
huggingface_hubを使ってモデル
PHPとPythonの比較勉強ー複数行にわたる入力 (paizaランク D 相当)
https://paiza.jp/works/mondai/c_rank_level_up_problems/c_rank_std_in_out_step3
PHPを仕事であんまり使わなくなって今Pythonをやっているんですよね。
で、やらなくなっているとなんというか腕が鈍ってしまったりしまして。
それだとだめだなと思ったので今年から1日1回はPHPも解くようにしました。ひとまずPythonで書いてみます
“`py
n = int(input())
for _ in range(n):
print(input())
“`
簡単ですね。
では次にPHP“`php
“`
一応正解はしたのですが。
fgets(STDIN)で取得したものはtrimしないといけないみたいです。
なんでなのか調べたら、どうやら、入力されたときの改行を除去するため、という
意味があるそうです。
問題
2023年のQiita人気タグをアニメーションで振り返る
## 結果から
![output (1).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2602537/4d013a9e-6272-b2de-0e91-04cbb410e77b.gif)## はじめに
つい先週に、ワードクラウドの時系列変化をアニメーション化する[AnimatedWordCloud](https://github.com/konbraphat51/AnimatedWordCloud)というライブラリが出ましたhttps://github.com/konbraphat51/AnimatedWordCloud
こちらも読むべき: [【Python OSSライブラリ製作】話題の時系列変化を可視化する”アニメ化”ワードクラウドを作成するライブラリをリリースした](https://qiita.com/konbraphat51/items/1d72404203e4c63d8cda)
[ミーハーの王、ミーハーキング](https://qiita.com/uts1_6/items/11e34
【Python OSSライブラリ製作】話題の時系列変化を可視化する”アニメ化”ワードクラウドを作成するライブラリをリリースした
## 作ったもの
イーロンマスクのツイートにおける頻出単語の時系列変化を可視化したgif画像です。
![image.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2602537/cc0b3710-904e-9d3c-b39f-ad7b93fad66a.gif)“`
pip install AnimatedWordCloudTimelapse
“`でインストールして、
“`python
from AnimatedWordCloud import animateanimate(data)
“`と記述するだけで、上記のgif画像が作成できる`Python`ライブラリ[AnimatedWordCloud](https://github.com/konbraphat51/AnimatedWordCloud)を作成しました。
:::note
`GitHub`レポジトリ(スター⭐くれると泣きながら喜びます、本当に): https://github.com/konbraphat51/Anim
九九の一覧表作成
九九の一覧表を作りました。
ルール
①各段の最後の回答以外、「 | 」で区切る
②回答はスペース埋めで2桁にする
③各段の区切りを「=」で各行の文字数に合わせる実装したコードです。
“`python3
#####################################
### 九九の一覧表作成
######################################各段の変数定義
startn = 1
endn = 10
#桁数変数の定義
keta = 2
# スペース関数
def space1():
print()# 罫線関数
def div1():
print(“=” * (keta*(endn – startn) + 3 * (endn – startn -1)))for i in range(startn,endn):
for j in range(startn,endn):
ans = i * j
if j == 9:
print(f”{ans:>{keta}}”,end=””)
els
[Python][Julia]Project euler10 (プロジェクトオイラー10)
#### Project euler Ploblem 7 (プロジェクトオイラー7)
[Summation of Primes](https://projecteuler.net/problem=10)備忘のために残しておく。
## 問題
#### 問題文 (意訳)
10より下の素数の和は 2 + 3 + 5 + 7 = 17。
2,000,000より下の全ての素数の和を求めよ。#### 原文
The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17.
Find the sum of all the primes below two million.## 解答
#### 答え
142913828922#### 解答の方針
エラトステネスのふるいを使って素数のリストを作成し、合計する。
[[Python][Julia]Project euler7 (プロジェクトオイラー7)](https://qiita.com/fujihop/items/776d1135d52944529941)
のコードを参考に改変し
pandas.DataFrameのループ速度比較(iterrows vs apply)
# 概要
pandas.DataFrameで行ごとの処理をする場合の、iterrowsとapplyの速度比較を行ったコードのメモです。iterrowsのほうが遅いという話はよく聞きますが、実際どの程度遅いのか、実感を掴むためにやりました。新規性は特にありません。# 実装
wikipediaの記事を文単位で分割して新たなDataFrameをつくるというタスクで計測します。
列名の変更など一部無駄な処理があるのは、他のプロジェクトのためのコードを流用しているためです。
コードはGPT4の力を借りて作りました。wikipediaの記事をhuggingfaceからダウンロードします。
“`Python
from datasets import load_dataset# URL of the dataset
dataset_url = “izumi-lab/wikipedia-ja-20230720”# Load the dataset
dataset = load_dataset(dataset_url)# To view basic information or m
pythonのECDSA署名鍵読み込みが意外と雑だった
# はじめに
いきなりですが, [ECDSA](https://ja.wikipedia.org/wiki/%E6%A5%95%E5%86%86%E6%9B%B2%E7%B7%9ADSA) という楕円曲線を使った署名技術が存在します[^2]. そして,
“`
$ python3 pip install ecdsa
“`で導入されるライブラリを使うと, pythonでECDSAの鍵生成や署名をはじめとして, DER/PEM形式での鍵のインポートやエクスポートも可能となります.
今回いろいろあってこのあたりの構造を調べていたら, タイトルの通り署名鍵インポートが適当だったことが判明したので, 自分への備忘録も兼ねてこれを記している次第です.
なお, はじめに断っておくとこれはバグではなく, ただ単に(それを承知の上で)実装されていないだけです.
# 環境
“`
$ python3 –version
Python 3.10.12$ python3 -m pip list | grep ecdsa
ecdsa
数値のスペース埋め(入力でデータの数とスペースで何桁の数にするか指定する)
***数値のスペース埋め***(入力でデータの数とスペースで何桁の数にするか指定する)
のプログラミング課題を解きました。“`Python3
#入力するデータ数とスペース埋めで何桁で出力するか入力する
data1 = input(“数値のデータの数とスペース埋めで何桁の数に指定するかスペース区切りで入力してください”)
array1 = data1.split(‘ ‘)
N = int(array1[0])
keta = int(array1[1])
for i in range(0,N):
num = input()
ans = “{: >{}}”.format(num,keta)
print(ans)
“`
[Python][Julia]Project euler9 (プロジェクトオイラー9)
#### Project euler Ploblem 9 (プロジェクトオイラー9)
[Special Pythagorean Triplet](https://projecteuler.net/problem=9)備忘のために残しておく。
## 問題
#### 問題文 (意訳)
ピタゴラスの三つ組数は 3つの自然数のセットであり、a