- 1. Pythonで2分探索木の動作を可視化
- 2. ゼロから始めるLeetCode Day60「1481. Least Number of Unique Integers after K Removals」
- 3. JavaScript版strftime(組み込みオブジェクトDateの拡張)
- 4. 小説「吾輩は猫である」でベンフォードの法則が成り立っているかを確かめてみる
- 5. Windows Master File Table($MFT) をElasticsearchにimportする
- 6. Anacondaコマンドリスト
- 7. JAXの自動微分で二階微分を求める
- 8. 普通のグラフを散布図っぽくアレンジ|Pandas
- 9. ゼロから始めるLeetCode Day59 「1221. Split a String in Balanced Strings」
- 10. [初心者用] Pythonでの標準入力まとめ (解説付き)
- 11. 倒立振子ロボット製作記~ハードウェア編~
- 12. 人工知能学会全国大会2020を盛り上げた組織はどこか?
- 13. 【Python3】tkinterでonChange的なイベントを捕まえたい
- 14. 学習の吐き出し1(Python編1)
- 15. Python初心者がクイックソートを整理する
- 16. ゼロから始めるLeetCode Day58 「20. Valid Parentheses」
- 17. python3での競プロの標準入力部分のテンプレートらしきもの
- 18. Docker-Compose&Python3.6+NGINX+MariaDB10+uWSGIのDjango環境構築におけるMigrationエラー対処法について
- 19. ラズベリーパイZERO-WHの監視カメラを動かすための環境構築作業
- 20. Pythonによる.txtファイルの読み込み
Pythonで2分探索木の動作を可視化
#探索木の動作
平衡2分探索木の考えですが、以下の関係を壊さないように、気に対してノードの`追加`と`削除`進めていきます。
`左の子ノードの値 ≦ ノードの値 ≦ 右の子ノードの値`
加えて、木の平衡状態、つまり
**各ノードの左右の部分木の高さの差が1以下にする**
という状態を保つために
ノードの`追加`や`削除`が行われた後に`回転`が行われます。このロジックの理解を深めるため、どのように木が変化していくかを可視化してみます。
こんな感じです。
ゼロから始めるLeetCode Day60「1481. Least Number of Unique Integers after K Removals」# 概要
海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。
どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。
早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。
と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。
ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。
[Leetcode](https://leetcode.com/)
Python3で解いています。
[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)
前回
[ゼロから始めるLeetC
JavaScript版strftime(組み込みオブジェクトDateの拡張)
#strftimeって?
PythonやCなどにある、日付オブジェクトのフォーマット関数。あらかじめ決められたキーワードを入力することで、該当箇所が日付のパラメータに置換される。“`python:Python
import datetimed = datetime.datetime.now()
d.strftime(‘%Y-%m-%d’)
# “2020-06-18”
d.strftime(‘%c’)
# “Thu Jun 18 13:25:31 2020″
“`
#使い方“`javascript:JavaScript
var d = new Date();
d.strftime(‘%Y-%m-%d’)
//”2020-06-18″
d.strftime(‘%c’)
//”Thu Jun 18 13:25:31 2020”
“`
###対応指定子
|指定子|意味|使用例|
|—–|—–|—–|
|`%a`|ロケールの曜日名を短縮形で表示します。|Sun, Mon, …, Sat|
|`%A`|ロケールの曜日名を表示します。|Sunday, Mo
小説「吾輩は猫である」でベンフォードの法則が成り立っているかを確かめてみる
#1.はじめに
プログラミングを学習し始め自然言語処理に興味を持ったので,[自然言語処理100本ノック2020](https://nlp100.github.io/ja/)を勉強し始めた.[第4章:形態素解析](https://nlp100.github.io/ja/ch04.html)を参考にしながら夏目漱石の小説『吾輩は猫である』の文章中の数字を抽出してベンフォードの法則が成り立っているか調べることにした.
#2.目次
1.はじめに
2.目次
3.ベンフォードの法則
4.コード
5.まとめ
参考
#3.ベンフォードの法則
ベンフォードの法則とは住所,株価,電話料金など我々の身の回りにあるものの数字の最初の一桁目の分布についてなり立つ法則である.それらの数字は1〜9の数字のいずれかであり,その分布は一桁目の数字をn,その分布をpとすると
$$ p = \log_{10}\frac{n+1}{n} $$
となる.これを表にすると以下のようになる.|n|1|2|3|4|5|6|7|8|9|
|:——–|:—|:—|:—|:—|:—|:—|:—|:
Windows Master File Table($MFT) をElasticsearchにimportする
# Overview
[Windows EventLogをElasticSearchにimportする](https://qiita.com/sumeshi/items/491891d83c3aca224880)
[Windows EventLogをElasticSearchにimportする(のを100倍早くする)](https://qiita.com/sumeshi/items/cb2fbafe59c2c83e3085)
[Windows EventLogをjson形式に変換する](https://qiita.com/sumeshi/items/f3e87f0412f9b05f85a3)このへんの記事のMFT版です :sushi:
DFIRをする際に, たまにMFT(Windowsのファイル管理テーブル)を調査する必要があるので自分用にライブラリ化しました.
内部でRust製ライブラリを使用しているのでなかなかに高速です.僕のようにフォレンジック以外の用途として, ファイルを高速に検索するサービスを作ってる人もいるようです(凄い!).
Pythonで検索サービスなんか
Anacondaコマンドリスト
#anacondaのコマンド備忘録
###仮想環境の作成
“`conda create -n {ENV_NAME} python={VERSION}“`###削除
“`conda remove -n {ENV_NAME} –all“`###仮想環境のリスト表示
“`conda info -e“`###複製
“`conda create -n {NEW_ENV_NAME} –clone {ORIGINAL_ENV_NAME}“`###環境の適用
“`conda activate {ENV_NAME}“`###環境の無効化
“`conda deactivate“`###インストール
“`conda install {PACKAGE_NAME}“`###アンインストール
“`conda uninstall {PACKAGE_NAME}“`
JAXの自動微分で二階微分を求める
# はじめに
複雑な関数の微分を求めたい時に、自動微分が便利ですよね。そんな時、私は今まで[Pytorchの自動微分](https://helve-python.hatenablog.jp/entry/pytorch-automatic-differentiation)を利用していました。しかし、自動微分だけ使いたいのにpytorchのパッケージがかなり重いので、もっと軽量なパッケージはないかなと探していたところ、[JAX](https://github.com/google/jax)にたどりつきました。# JAXとは?
[公式](https://github.com/google/jax)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570899/137ddbb6-c4db-080f-a317-993e409b6224.png)
[Autograd](https://github.com/HIPS/autograd)(今はメンテナンスされていない)の更新バージョンです。GPUを使
普通のグラフを散布図っぽくアレンジ|Pandas
#散布図の描画を利用してグラフ作成
散布図と言いますとだいたいこんなイメージですよね。
こういったデータ分析に強いのが**Pandas**ライブラリです。これを使ってフツーのグラフを散布図風に描画してみました。
まずはソースコードです。
“`Python:scatterSample.py
# Pandas ライブラリ
# 2020.06.18.ProOJI
# Matplotlib.pyplot、 そしてNumpyも使用
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np# 等差数列 linspace(初項、最終項、要素数)
# 例:np.l
ゼロから始めるLeetCode Day59 「1221. Split a String in Balanced Strings」
# 概要
海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。
どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。
早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。
と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。
ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。
[Leetcode](https://leetcode.com/)
Python3で解いています。
[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)
前回
[ゼロから始めるLeetC
[初心者用] Pythonでの標準入力まとめ (解説付き)
#はじめに
__*この記事は、AtCoder や paiza などで、標準入力がわからず困っている方用です。__
たくさん種類があり、難しそうに見えるかもしれませんが、実際は入力の種類に合わせたものを選択しているだけです。
初めのうちは、覚える必要は全くないので、一回一回確認しながら、少しづつ慣れていきましょう。
注)__この記事は初心者の方のための記事となっております。__初心者の方の理解を優先するため、一部不十分な言い回し等が含まれていますが、ご理解いただくようよろしくお願いいたします。
# どのコードを使えばいいか
Atcoder や paiza の問題において、どのコードで標準入力を受け取るかは、主に次の二つを考慮します。
– 入力がどの種類のものか (一行 or 複数行、文字列 or 数字)
– その入力をどのように受け取りたいか (変数に入れる、リストにする、etc)このうち、二つ目は繰り返し問題を解くうちに、徐々にわかってくるので、この記事では一つ目に焦点を当てて解説していきます。
# 一行 入力が一つ
入力
“`
abc # 文字列
12
倒立振子ロボット製作記~ハードウェア編~
倒立振子ロボットを製作しました。
今回はハードウェア編です。##1.材料
[ラズパイタンク](https://qiita.com/shi78ge/items/e4d9dd90dc8274431e45)の材料に追加で購入したものです。■機構部品
↓タミヤ楽しい工作シリーズ
・スポーツタイヤセット
・ユニバーサルプレートセット
・ユニバーサルアームセット
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569342/8a9667de-c2e9-1ff4-e675-79e22552944b.png)↓その他
・六角オネジ・メネジ MB26-11
・M2.6のビス、ナット
※M3でも問題なし?M3のほうが入手性がよいです。■電装部品
・BMX055使用9軸センサーモジュール
・ユニバーサル基板Cタイプ
・ピンヘッダ
・ピンソケット##2.ベースの作製
![image.png](https://qiita-image-store.s3.ap-northe
人工知能学会全国大会2020を盛り上げた組織はどこか?
# はじめに
近年盛り上がりを見せている人工知能領域は学術機関だけでなく企業や自治体まで注目しています。
この領域の学術的祭典とも言えるのが年1回開催される人工知能学会全国大会です。今回は何番煎じかわからない出涸らしのような記事ですが
オンラインで開催された人工知能学会全国大会2020にどのような組織が発表していたか確認することで、
近年の学術的祭典を盛り上げている組織を Python を利用して分析してみます。触発されて書いてみたものなのでお手柔らかにお願いします。
# データ
今回利用するのは下記の記事で利用している github 上に公開されている集計データです。
[人工知能学会2020&2019年の集計(データセットあり)](https://qiita.com/keeeeei0315/items/5f4879d8935b97868e8c)この記事の執筆時点にてタグによるバージョン管理がされておりましたので [v0.2.0](https://github.com/tobara289/jsai-datasets/tree/v0.2.0) を利用します。
ディレクトリ
【Python3】tkinterでonChange的なイベントを捕まえたい
# 目的
Tcl/Tkには他のGUIインターフェースを持つ言語によくある『テキストボックスの中身が変更されたら発生するイベント』が元から実装されていない。よって、なるべく簡便に実装できる方法を考え、実際に作ってみる。## ことの経緯
[Teratailのこの記事](https://teratail.com/questions/268691)
バーコードリーダからキーボードインタフェースで入力されるデータを監視し、Entryにバーコードデータが入ったら自動で次のEntryにフォーカスを持っていきたいという話。
バーコードリーダーは機器側の設定でデータの末尾に改行を付与することができるので、テキストの変更を検知して末尾の改行を読み取ればよい。# 実装
## 最初の実装
StackOverflowで見つけた記事 [Python tkinter text modified callback](https://stackoverflow.com/questions/40617515/python-tkinter-text-modified-callback)を参考にEntry中の`cr
学習の吐き出し1(Python編1)
学習の吐き出しです。
今回主に学んだのは、文字列についてでした。### エスケープ
\のこと。文字列の改行***\n***でよく使われる。
こんな感じ。“`py
>>> palindrome = ‘A man, \nA plan,\nA canal:\nPanama’
>>> print(palindrome)
A man,
A plan,
A canal:
Panama
“`
また、***\t***でテキストの位置調整ができる。“`py
>>> print(‘\tabc’)
abc
>>> print(‘a\tbc’)
a bc
>>> print(‘ab\tc’)
ab c
>>> print(‘abc\t’)
abc
“`そしてクォートを文字として使いたい場合も、\が必要。
“`py
>>> testimonyb = “\”I did nothing!\” he said. \”Not that either! Or the other thing.\””
>>> print(testimonyb)
“I did nothing!” he sai
Python初心者がクイックソートを整理する
###これは備忘録です
ホントに忘れそう
#引用サイト
今回は先に整理するために拝見させていただいたサイトを紹介させていただきます– [アルゴリズム参考](https://qiita.com/muijp/items/257e8b9b49d891137d56)
– [トレース参考](https://www.suzu6.net/posts/68-quicksort/)それぞれ少しだけアルゴリズム自体が違いますが同じクイックソートなので@muijpさんのアルゴリズムを元に整理させていただきます
#プログラム
[@muijpさんのクイックソート](https://qiita.com/muijp/items/257e8b9b49d891137d56#%E3%82%AF%E3%82%A4%E3%83%83%E3%82%AF%E3%82%BD%E3%83%BC%E3%83%88-quick-sort)に先日@shiracamusさんからアドバイスをいただいたランダム配列のプログラムとデバッグ用の出力を入れました“`q_sort.py
def qSort(a):
print(a
ゼロから始めるLeetCode Day58 「20. Valid Parentheses」
# 概要
海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。
どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。
早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。
と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。
ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。
[Leetcode](https://leetcode.com/)
Python3で解いています。
[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)
前回
[ゼロから始めるLeetC
python3での競プロの標準入力部分のテンプレートらしきもの
#初めに
最近、自分のスキルアップのためにAtCoderで競技プログラミングを始めてみました。
正直、周りのつよつよエンジニアの解く速度に圧倒されていますが、少しずつ解けるようになってきて楽しいです。始めたての時にまず詰まるのが、与えられたデータの入力をどう処理するかです。
初心者用の問題でよくあるのが、整数の入力だったり、N個の数値が入力されたり…。
Pythonを使っている側からすると、正直あんまり標準入力とか使わないんですよね(私だけではないですよね…?)
そこで、最初の入力系でよく使う個人的なテンプレートみたいなのをまとめたいと思います。#Pythonでの標準入力
私が実際に使っているのは、sys.stdin.readline()で、一行ずつ読み込んでくれます。
改行コードも読み込みますが、使いやすいので使っています。
事前にinputにsys.stdin.readlineを代入しておくと、input()だけで使えるので便利です。
このinputでは、文字列が得られます。“`python:input.py
import sysinput = sys.s
Docker-Compose&Python3.6+NGINX+MariaDB10+uWSGIのDjango環境構築におけるMigrationエラー対処法について
“Docker-ComposeでPython3.6+NGINX+MariaDB10+uWSGIのDjango環境欲張りセット”のおまけ。
https://qiita.com/NickelCreate/items/bed3dc9d088b57127ba7@NickelCreate ++
環境
– Python 3.6.10
– Django 3.0.7# トラブル発生
つらつらと環境欲張りセットを実行していくと、マイグレーションコマンド実行でバージョン互換エラーが発生。
> docker-compose run web ./manage.py makemigrations
`django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.`
モジュールを確認すると、以下のような構成(バージョンは最新版を当てたい)
“` requirements.txt
django
djangorestframework
django-filt
ラズベリーパイZERO-WHの監視カメラを動かすための環境構築作業
# はじめに
前々回からQiitaにて監視カメラの記事を投稿しています。
監視カメラをもう一つ構築するので、環境構築についてもすこしまとめてみました。## 1) 準備するもの
* Raspberry Pi Zero WH
* microSD カード(32GB、16GBでもOK)## 2) 設定する前に必要なもの
設定作業を行う上で必要な周辺機器です。
* PC(windows or mac) OSのダウンロードやmicroSDカードの作成ほか
* USB2.0のハブ(USB2.0-microUSB変換アダプタが必要)
* USB マウス(USBハブに接続)
* USB キーボード(USBハブに接続)
* HDMI接続できるモニタ(接続ケーブルが必要。HDMI-miniHDMIケーブルもしくはminiHDMIに変換できるアダプタが必要
* マイクロUSB電源アダプタ
* USBのSDカードリーダ(MicroSDカードの場合はSD用のアダプタが必要)。PCに接続します。# OSのイメージをmicroSDに作成する。
1. microSDカードをWin
Pythonによる.txtファイルの読み込み
paizaラーニングの環境でPythonの基礎をひと通り勉強した後にAtomに移行したら標準入力ができないことに困惑してしまい、どうしたら外部からのデータを読み込めるか調べた時のまとめです。
初心者の自分用にまとめたものなので間違いなどあったら教えてくださると幸いです。以下のサイトを参考にさせていただきました。
**note.nkmk.me**様
– [Pythonでカレントディレクトリを取得、変更(移動)](https://note.nkmk.me/python-os-getcwd-chdir/)
– [Pythonでファイルの読み込み、書き込み(作成・追記)](https://note.nkmk.me/python-file-io-open-with/)
**crukky**様
– [atom・pythonで競技プログラミングのテスト環境構築](https://qiita.com/crukky/items/73c1322f5929b1ca5834)
##カレントディレクトリを取得してパスをつなげる
“`python:pass.py
import os
path = os.ge