PSM

プログラミング 初心者の メモ書き です

初めてAtCoder Beginner Contestで全完した話

競技プログラミングというものを初めて1ヶ月経ちました. 情報系の専攻とかでは全くなく,最初は「プログラミング?よくわかんないけど頭めちゃくちゃ良くないとできなさそう……」とひたすらビビりまくっていましたが ,徐々にその面白さにハマりつつありま…

Pythonでオセロをつくってみる

天啓により,Pythonでオセロを作ることを思い立ちました. まずは簡単なボードの実装から始めて,候補手(合法手)を出してくれる機能を追加したり,UIをちゃんと(クリックで駒が置けるなど)していきたいと考えています. 将来的には,自分で学習させたCom…

Python3でグラフの実装&深さ優先探索・幅優先探索の実装

競技プログラミングのある問題に取り組んでいるとき,解き方はわかったのに,pythonでのグラフとその探索の実装の仕方が分からず,悲しい思いをしたのでまとめました.ちょくちょく更新していきます. グラフの入力 グラフの表現 グラフの探索 深さ優先探索 …

ウソつき問題とGW法

たまに見るウソつき問題にGW法という名前の万能の解法があることを知ったので,納得できるまで考えてみました. はじめに GW法の概要 GW法 まとめ 余談 はじめに ウソつき問題とは以下のようなタイプの問題です. 誰しも小学生の頃にクイズ本やテレビのクイ…

Python3で再帰関数

python3での再帰関数とメモ化についてまとめました. はじめに 例1:階乗 例2:ユークリッドの互除法を用いた最大公約数 本題:フィボナッチ数列 単純 末尾再帰 繰り返し 行列 メモ化 実行時間の比較 はじめに 再帰関数とは. 定義の中に,自分自身を呼び…

Python3で組み合わせ計算を高速化

初めに Pythonで組み合わせ計算を計算しようとすると,少々問題が発生します. nやrが小さいうちはいいんですが,これが大きくなってくると計算が非常に長くなってくるのです. 実務や研究では少々計算が遅くても別に問題はないと思うのですが,競技プログラ…

Python3で最小木問題とプリム法

最小木問題を解くアルゴリズムのうち,プリム法をPython3で実装したのでメモ. プリム法の実装の理解だけでなく,matplotlibを使ったので良い練習になりました.wikipedia:プリム法 import matplotlib.pyplot as plt import random import numpy as np impor…

Python3で任意長のリストを取ろうと思ったらいつのまにかリスト内包表記を勉強していた

Python3で任意長のリストを宣言しておくのってどうしたらいいんだと思って調べていたら,いつの間にかリスト内包表記を勉強していました.これを使うと, 1.とりあえずfor文で回した結果を片っ端からappendなどでリストに突っ込む ↓↓↓ 2.要素1つ1つ判…

Python3で二分探索

wikipediaに載っているc++のスクリプトをpythonで書き直しただけですが,”忘れた時にとりあえずコピペしたら動く”がモットーなので自分用にメモ.[wiki:二分探索]実装は以下. #二分探索 def binarySearch(ary, key, imin, imax): if ( imax < imin ): retur…

Pythonで2進法方のリストを作る

Pythonで二進法の各桁を各要素とするようなリストをつくって,降順に出力することを考えました. その際,文字列の各要素のリスト化や文字列のゼロパディングなど,いくつか覚えておきたい操作があったのでメモしておきます. 操作 数値型のリストのソート …

python3での標準入出力

pythonでの標準入出力を求められる機会って稀によくありますよね. pythonって2だったり3だったり紛らわしいし,調べてみてもコピペで動いてくれるスクリプトが載っている記事を見つけられなかったので,自分の検索能力のなさを嘆きつつ苦しんだ結果をメモ…

プログラミング初心者がUnityチュートリアルで苦しんだポイント

1 はじめに 2 つまづいた部分 2.1 Assetについて 2.2 Unity Web PlayerとWebGL 2.3 Gameウィンドウの設定 2.4 スクリプトエディターについて 2.5 RIgidbodyの取得 2.6 Mathf 2.7 public float speedなど 3 まとめ 4 この記事を書くにあたって参考にさせてい…

大数の法則

1 はじめに 中心極限定理について直感ではいまいち納得できなかったのでちょっとまとめようとおもったのですが,その前にまず大数の法則についてまとめてみます.wikipedia先生に中心極限定理について聞いてみます. 大数の法則によると、ある母集団から無作…

Pythonで麻雀の戦績を集計してみた

1 初めに 前回の投稿に引き続き,記録をとっていた最近の戦績を集計してみました. 基本的にはpythonのpandasしか使ってないのですが,集計してみたり,for文回してみたり,DataFrame 結合してみたり,ブロードキャストについて思い出したりと結構よい勉強に…

pythonでcsvファイルを読み込む

1 はじめに いつか集計しようと思って,趣味の麻雀の記録をexcelでとっていたのですが,この度ついに実行に移すことになりました. 2 やったこと exelで集計していたデータをpythonで読み込みます. 使用環境は3系(python3.6.0)でJupyter Notebookを利用し…

ファイルを一括で検索して移動

1.はじめに ダウンロードしてきたフリーペーパーがPDFなのはいいんだけど,各章ごとに別フォルダに分割されちゃっていました. この中に1つずつバラバラに各章のPDFが入っている感じです. 印刷したり読んだりするのに,いちいちフォルダを開いたり閉じた…

Pythonで実行ファイルから相対パスでデータを取得する

Pythonを触っていて,相対パスと絶対パスの取得まわりで手間取ったので,メモしておきます.環境 MacOS Python3.6.0 はじめに 相対パスの取得のしかた ディレクトリ構造 コード はじめに pythonでデータを読み込む際,データの絶対パスが必要なときがありま…

1週間で「ゼロから作るDeep Learning」に挑戦することにしました

1.はじめに AlpfaGoの活躍で一躍話題となったDeep Learning.機会があって「ゼロから作るDeep Learining」という本をいただいたので勉強してみるるのですが,せっかくなので敢えて1週間と短い時間設定で挑戦することにしました.そもそも機械学習に関する…

np.sum()より早い方法

1.はじめに サイズの小さなベクトルに対してnumpy.sum()より早い方法例のごとくまったく知らないので調べるしかないですが,せっかくなので,本当に早いのか処理時間をはかるところまでやってみます.やりたいことを切り分けると,結局以下の3つの方法を…

0.3 != 3*0.1問題

pythonで以下のように書くと >>> 0.3 == 3 * 0.1 False とかえってきます.いや0.3が0.3じゃないってどういうことやねんと思っていろいろ調べてみると >>> 0.1 + 0.1 + 0.1 0.30000000000000004 なるほど. つまりpythonの0.1や0.3が,人間の思っているような…

プログラミング初心者がUnityでゲーム作ってみました1 Roll a Ball

プログラミングスキルがほぼ皆無の素人ですが,突然Unityの勉強を始めることになりました.別に深い理由があってのことではなく,単純に面白そうだったからです.紹介してくれたそっちに精通する友人もとにかくやべえやべえと繰り返していたので,まあやべえ…