読者です 読者をやめる 読者になる 読者になる

絵を描くプログラム

エクセルとシェルとHTMLで絵を描くことができて、コードを少量追加すれば好きなもので絵を描くこともできるプログラムを書きました。

github.com

このプログラムで何ができるかはgithubのREADMEに譲るとして、このプログラムの中身がどうなっているかここにまとめました。

続きを読む

日本語の文章を解析するためのクラス

前回作ったプログラムで青空文庫のテキストを普通の日本語の文章にすることに成功したので、それを解析するプログラムを書きました。長いプログラムなのでコピペ用のプログラムは張ってません。

github.com

動かす

demoフォルダに漱石の文章がいくつか入っており、demo.pyを実行するとがこれらの文章が解析されます。

>python demo.py
---------------------こころ.txt----------------------
文字数(空白含まず), 160230
空白文字数, 1241
文数, 5168
文の平均文字数, 31.244389
一番長い文の文字数, 148
一番長い文, "学問をやり始めた時に..."
段落数(見出し除く), 1218
段落の平均文字数, 131
見出しの数, 113
一番長い段落の文字数, 978
一番長い段落, " 私はしばらくそこに..."
--------------------------------------------------
---------------------それから.txt---------------------
文字数(空白含まず), 170294
空白文字数, 1503
文数, 6140
文の平均文字数, 27.979967
一番長い文の文字数, 226
一番長い文, "登山の途中雪崩れに圧..."
段落数(見出し除く), 1800
段落の平均文字数, 94
見出しの数, 110
一番長い段落の文字数, 902
一番長い段落, "「何故働かないつて、..."
--------------------------------------------------
--------------------イズムの功過.txt--------------------
...(略)
続きを読む

青空文庫のテキストを簡略化する

漱石没後100年ということで漱石の文章を解析してみようと思い立ちました。しかし青空文庫の文章にはルビや注があって解析ができる状態ではありません。また漱石の文章をなんの装飾もせず公開している物好きなサイトも見当たりません。

そこで解析のための下準備として、青空文庫のテキストファイルからルビや注を取り除き、さらに一文ごとに改行をいれて解析しやすくするプログラムを描きました。

github.com

めんどくさい部分が多かった割にプログラム的には大したことやってませんが、正規表現の練習になりました。

続きを読む

シェルで絵を描く

シェルには背景や文字の色を変える機能があります。通常はデフォルトの色が気に入らない場合に変更するのに使いますが、この機能を使って絵を描くプログラムを書きました*1

動かす

記事の最後にあるシェルスクリプトを保存し、実行権限を与えて実行すると、nyancatがシェルに現れます*2

f:id:e-yuki67:20161225193534p:plain

手持ちの画像で試す場合には、記事の最後にあるpythonソースコードを適当な名前(例えばshell.py)で保存して

python3 shell.py hoge.jpg -n 75

とすれば、 hoge.jpgを描くシェルスクリプトhoge.shが作られます。nオプションを使ってシェルで表示される画像の横幅を調節できます。

なお起動にはPillowという画像処理パッケージが必要です。以下のコマンドでインストールできます。

python3 -m pip install pillow

*1:BashZshでは256色使えるが、Bash on Windowsでは16色しか使えない。そのため生成されるスクリプトも色が変になる。

*2:シェルにコピペしてもうまく動かない。長すぎて一度に貼り付けられないようだ。

続きを読む

フォルダのサイズを表示するプログラム作った

この記事はIS17er Advent Calendarの18日目が空いていたので、「無いよりはなんかあった方がいいだろう」と思ってその日のうちに書かれたものです。
17日目の記事はこちら

Windows標準のエクスプローラはフォルダのサイズを表示してくれないので、目立たない名前のフォルダが数ギガバイトも食ってたりしても気づきくくて厄介です。
そこでフォルダのサイズを表示するプログラムを書きました。

[2017/1/13追記]
githubリポジトリ作りました。
github.com
以下の記事は2016/12/18時点でのプログラムについての記事となります。

参考資料

プログラムを作るのに使ったモジュールや関数はAutomate the Boring Stuff with Pythonに載っていたものが多いです。この本はアルゴリズムやデータ構造のことなど考えずに、「pythonでなんかやろう!」というコンセプトのもと書かれた本で、プログラミングやpythonの入門(≠ 情報科学の入門)として最適だと思います。オンラインでなら無料で読めるので気になった方はぜひ。

動かす

python3の標準モジュールだけを使っているのでpythonがあれば動きます。WindowsUbuntuで動くことを確認しましたが、Macではわかりません。
記事の一番下にあるコードをコピペして、FolderSizeExplorer.pyなどの名前で保存した後

python3 FolderSizeExplorer.py

とすれば、現在のフォルダの中身を探索してサイズ順に表示します。
そのあとはフォルダの名前を入れればフォルダを移動でき、qと入力すれば終了できます。

pオプションで最初に探索するフォルダを変更できます。フォルダの内容が多い場合には探索に時間がかかります(自分の環境では100GB使用済みのCドライブ全体を探索すると1分程度かかりました)。見えるファイル全てにアクセスしているのでエラーがたくさん出ますが、問題ありません。

> python .\FolderSizeExplorer.py -p ~
target folder : C:\Users\iiyuk
No saved shelve found.
Collectiong imformation about C:\Users\iiyuk. This may take some time...
Permission denied : C:\Users\iiyuk\AppData\Local\Application Data
Permission denied : C:\Users\iiyuk\AppData\Local\History
.
.
.
Permission denied : C:\Users\iiyuk\NetHood
Permission denied : C:\Users\iiyuk\PrintHood
Permission denied : C:\Users\iiyuk\Recent
Permission denied : C:\Users\iiyuk\SendTo
Permission denied : C:\Users\iiyuk\Templates
Permission denied : C:\Users\iiyuk\スタート メニュー
You can reduce errors by running script as administrator.
------------Contents of C:\Users\iiyuk------------
100.00%   34155.90MB All contents
 44.82%   15309.09MB .\Documents
 20.13%    6875.94MB .\OneDrive
 15.41%    5262.00MB .\AppData
 12.50%    4269.39MB .\Pictures
  5.49%    1874.84MB .\Downloads
  1.32%     451.81MB .\.PyCharm2016.2
  0.22%      75.02MB .\.vscode
  0.05%      18.62MB Files in this folder
  0.05%      16.00MB .\.nuget
  0.01%       3.08MB .\3D Objects
  0.00%       0.05MB .\.ipython
  0.00%       0.04MB .\.matplotlib
  0.00%       0.02MB .\.pylint.d
  0.00%       0.01MB .\Desktop
  0.00%       0.01MB .\Favorites
  0.00%       0.00MB .\Searches
  0.00%       0.00MB .\Links
  0.00%       0.00MB .\Videos
  0.00%       0.00MB .\Music
  0.00%       0.00MB .\Contacts
  0.00%       0.00MB .\Saved Games
  0.00%       0.00MB .\.ssh
  0.00%       0.00MB .\.config
  0.00%       0.00MB .\Templates
Enter folder name. (or q to quit) :

qを押して終了するときに、探索の結果を保存することができます。保存しておけば次回同じフォルダを表示しようとしたときにロードできます。

続きを読む

クリッカーゲームを攻略する

[2017/1/13追記]
githubリポジトリ作りました。
github.com
以下の記事は2016/12/11時点のプログラムについての記事です。

この記事はIS17er Advent Calendar11日目の記事として書かれたものです。
10日目の記事はこちら

Cookie Clickerに代表される、「クリックでポイントを獲得 -> アップグレードを購入 -> クリックでポイントを獲得 ->...」を繰り返してポイントを増やしていくゲームのことをクリッカーゲームといいます。単純極まりないクリッカーゲームを、放置しておくだけでそれなりの効率で攻略するために、クリックを記録して高速で再生する単純なプログラムを作ったので解説します。

何ができるか、できないか

  • クリックの記録・再生ができる。
  • 左クリック以外は記録できない。
  • 半透明のウィンドウをクリックして記録するので、記録してる間はゲームが進展しない。
  • クリックの座標と順番だけ記録し、クリック間の時間は記録しない。
  • フェイルセーフ(暴走したときに実行を止める処理)は無い。

ないないづくしですが、クリッカーゲームを攻略するには十分なはずです。

動かす

Windowsではpythonの標準ライブラリだけで動きますが、MacLinuxではpyautoguiというモジュールが必要なので入れてください。pyautoguiにはPillowも必要です。ちなみにpython3です。

sudo python3 -m pip install pillow
sudo python3 -m pip install pyautogui

ダウンロード・解凍したフォルダでコマンドプロンプトを開いて以下のコマンドを打つと説明が現れるので、それに従ってください。-nオプションは無くてもかまいません。

python record.py -n cookieBaker

クリックの記録が済んだら、以下のコマンドで記録を再生できます。

python play.py cookieBaker.py -d 10 -r 0.5

dオプションで記録を再生する時間を、rオプションでクリックから次のクリックまでの間を設定できます。クリックから次のクリックまでの間をあまり小さくしすぎるとうまく動きません(0,001ぐらいが限度)。

続きを読む