Mae向きなブログ

Mae向きな情報発信を続けていきたいと思います。

Python

覆面算

『パズルで鍛えるアルゴリズム力』の第2章で紹介されている「覆面算」をPythonで取り組んでみました。 2_2_fukumen_solver.py 実行 % python 2_2_fukumen_solver.py 3 SEND MORE MONEY The num of solutions: 1 9 5 6 7 1 0 8 5 1 0 6 5 2 % python 2_2_fuku…

虫食算

『パズルで鍛えるアルゴリズム力』の第1章で紹介されている「虫食算」をPythonで取り組んでみました。 1_3_mushikui_solver.py 実行 % python 1_3_mushikui_solver.py Mushikuizan Input: 2 2 *1 2* **3 *4* **** The num of solutions: 1 1 th solution: 71…

小町算

『パズルで鍛えるアルゴリズム力』の第1章で紹介されている「小町算」をPythonで取り組んでみました。 1_2_komachi_solver.py 実行 TARGETを2023とすると、1通りしかないんですね。 % python 1_2_komachi_solver.py The number of solutions: 1 1 + 2 * 3 + …

テンパズル

『パズルで鍛えるアルゴリズム力』の第1章で紹介されている「テンパズル」をPythonで取り組んでみました。 1_1_ten_puzzle_solver.py 実行 % python 1_1_ten_puzzle_solver.py 1 th number: 3 2 th number: 4 3 th number: 7 4 th number: 8 target number: …

勾配降下法を使って最小値探索

勾配降下法を使ってある問題に取り組んでいたのですが、うまくいかないので簡単な数式に立ち返って試してみました。 gradient_descent.py numpyは使ってません。 実行 % python gradient_descent.py 1.3333333335464594 -0.666666666566563 0.99937896531948…

フェアフィールドの公式

以前、Zeller(ツェラー)の公式を使うと日付の曜日を求められることを、なんとのバイブルで知ったのですが、他にもフェアフィールドの公式というものがあるんですね。 プログラミングの繰り返し文の課題でよくある問題ですが、数式で求められるというのは驚き…

Lucasの定理を用いて、nCr(mod p)を求めるPythonスクリプト

Lucasの定理を用いてを求めるPythonスクリプトを作ってみました。 lucas.py 7行目は、フェルマーの小定理 より、 を用いています。(p:素数) 実行 % python lucas.py 13 3 3 1 参考 Lucasの定理とその証明 | 高校数学の美しい物語

令和5年度 大学入学共通テスト 情報関係基礎 第2問

令和5年度大学入学共通テスト 情報関係基礎の第2問は暗号に関する問題でした。 大学入試の問題にソリティア帝国とかシャッフル王国が登場することが面白いですね。 以下は、暗号化のルールですが、暗号文中での対応する文字列は、復号するときに一意に定まる…

令和5年度 大学入学共通テスト 情報関係基礎 第3問

令和5年度大学入学共通テスト 情報関係基礎の第3問は綱渡りをしながら、各ロープに巻かれているリボンに触れることで特典を獲得して、できるだけ多くの得点を競うゲームでした。 具体的には、 ゲームのキャラクターは、1本目の55m地点から始める。 キャラク…

D - Change Usernames

D - Change Usernames rootから辿っていって、ループがないかチェックしています。ただし、入力例2のような場合、rootが存在しないことになるので、最後にチェックをしています。 最初、以下のような結果となり悩んだのですが、原因は、再帰の上限回数に達し…

分割数のリストを求めるPythonスクリプト

分割数のリストを求めるスクリプトを作ってみました。partition関数自体はわずか10行足らずなのですが、昔から再帰に苦手意識があって苦労しました。 partiton.py 実行 整数6を4つの和に分割しています。 % python partition.py 6 4 [1, 1, 1, 3] [1, 1, 2, …

合併-発見(Union Find)アルゴリズム

『アルゴリズムC〈第3巻〉グラフ・数理・トピックス』のp34で紹介されている「合併-発見アルゴリズム」をPythonで作ってみました。 「合併-発見アルゴリズム」は、以下のような用途で使われているようです。 グラフにおいて、その具体的な道を求める必要はな…

ウインターカップ都道府県別優勝回数

現在、「SoftBank ウインターカップ2022 令和4年度 第75回全国高等学校バスケットボール選手権大会」開催中ですが、都道府県別の優勝回数を調べてみました。 男子 都道府県 優勝回数 秋田 20 宮城 8 福岡 7 京都 4 東京 4 宮崎 2 愛知 2 福井 1 大阪 1 山形 …

令和7年度大学入学共通テスト試作問題『情報Ⅰ』第4問をPythonで解く

令和7年度大学入学共通テスト試作問題『情報Ⅰ』第4問をPythonで解いてみました。 R7_proto_info1_Q4.ipynb 参考 奥村 晴彦先生が書かれたページを参考にしました。 情報I試作問題 第4問 関連 令和7年度大学入学共通テスト試作問題『情報Ⅰ』第3問をPythonで解…

令和7年度大学入学共通テスト試作問題『情報Ⅰ』第3問をPythonで解く

令和7年度大学入学共通テスト試作問題『情報Ⅰ』第3問をPythonで解いてみました。 R7_proto_info1_Q3.py 実行 % python R7_proto_info1_Q3.py 3 46円を支払うのに、51円を支払って釣り銭5円を受け取る払い方では、支払いに2枚、釣り銭に1枚で、合計3枚となり…

GistへアップロードするPythonスクリプト

かねてからGistを利用しているのですが、いつも手動でファイル作成を行っていました。Pythonの勉強がてら、Gistへファイルをアップロードするスクリプトを作ってみました。 post_gist.py 実行 GistへアップロードするPythonスクリプト自身をアップロードして…

令和4年度秋期 応用情報午後問3

令和4年度秋期 応用情報技術者試験(AP)の午後問題3は、 迷路の探索処理 に関する問題でした。 春の「数独」に続き、今回も楽しい題材ですね。 問題文(pdf) プログラム例(r04a_ap_pmq3.py) 問題文の図1,2では、左下が原点になっていますが、プログラムでは、…

天気予報を読み上げるPythonスクリプト

Pythonの練習用で、指定した地域の天気予報を読み上げるスクリプトを作ってみました。sayコマンドを使っているのでMac専用です。 get_forecast.py 実行結果 実際は、以下の文章を読み上げた音声が流れます。「北部山沿い」は「ほくぶやまぞい」と読み上げて…

Pythonエンジニア育成推進協会監修 Python実践レシピ(5)

「Pythonエンジニア育成推進協会監修 Python実践レシピ(4) - Mae向きなブログ」の続きです。 Chapter 17 デバッグ ipdb を使ったデバッグをするときに、同じディレクトリに以前作成したdecorator.pyがあると、これが悪さをしているようでした。decorator.py…

日本の祝日を調べるスクリプト

来年度の行事予定の雛形などを作成するときに、祝日を調べる必要があるのですが、Pythonの勉強がてら作ってみました。 holidays.py 実行結果 来年(2023年)は、土曜と祝日が重なる日が3回ありますね。ちょっと損した気分です。 % python holidays.py -y 2023 …

Pythonエンジニア育成推進協会監修 Python実践レシピ(4)

「Pythonエンジニア育成推進協会監修 Python実践レシピ(3) - Mae向きなブログ」の続きです。 Chapter 14 インターネット上のデータを扱う RequestsはPythonでWebスクレイピングを行う際の定番ツール。 >>> import requests >>> r = requests.get('http://htt…

Pythonエンジニア育成推進協会監修 Python実践レシピ(3)

「Pythonエンジニア育成推進協会監修 Python実践レシピ(2) - Mae向きなブログ」の続きです。 Chapter 11 ファイルとディレクトリへのアクセス from pathlib import Path TEST_PATH = "/Users/foo/tmp/hoge.pdf" # ファイル名の取得 print(Path(TEST_PATH).na…

Pythonエンジニア育成推進協会監修 Python実践レシピ(2)

「Pythonエンジニア育成推進協会監修 Python実践レシピ - Mae向きなブログ」の続きです。 Chapter 6 テキストの処理 joinメソッドについて words = '''Beautiful is better than ugly. Explicit is better than implicit.'''.split() print(words) print('-'…

Pythonエンジニア育成推進協会監修 Python実践レシピ

Pythonを勉強しようと思ったことはこれまでに何度もあるのですが、仕事などで、ちょっとした処理を行うときなどは、つい使い慣れたRubyで書いてしまうので、なかなかPythonの技術が上達せずにここまできました。 2022年の目標としてPythonをしっかり学んでみ…

令和4年度春期 応用情報午後問3

令和4年度春期 応用情報技術者試験(AP)の午後問題3は、 数独(パズルの解答を求めるプログラム) に関する問題でした。 問題文(pdf) 数独は、Project EulerのProblem 96で取り組んだことがあるのですが、試行錯誤を繰り返しながら作ったプログラムを今、振り返…

Pythonによるプログラミング入門 東京大学教養学部テキスト:アルゴリズムと情報科学の基礎を学ぶ

ひと昔、プログラミングといえば、理系のコンピュータ系の学科に所属する学生が学ぶものというイメージがありましたが、大学生に限らず、今や小学生もプログラミングを学ぶ時代になってきました。 本書は、東大1年生向け好評講義テキストを書籍化したとのこ…

Excel×Python自動化の超基本

仕事でExcelを使う機会が多いので、Excelでの作業を自動化、省力化することが仕事を効率化することにつながっていきます。 ExcelVBAだと、Excelの世界でしか通用しない気がして、積極的に学んできませんでした。普段は、 Ruby rubyXL を使って自動化を行って…

プログラマのためのディープラーニングのしくみがわかる数学入門

難しいことをできるだけ簡単に、できるだけわかりやすい説明になるようにとの著者の苦労と思いやりが感じられる本だったように思います。 扱っている内容が内容なので、特に後半は理解できない部分も多かったですが、理解できなかったことよりも、分かったこ…

基本情報技術者試験午後Pythonサンプル問題

令和2年度春期 基本情報技術者試験(FE)からプログラム言語の選択問題で追加されるPythonのサンプル問題が公開されています。 出典:基本情報技術者試験 Pythonサンプル問題 今まで、Pythonを学習しようと思ったことは何度となくあるのですが、Rubyに慣れてい…