はむ吉(のんびり)の練習ノート

プログラミングとことばに関する話題を中心に,思いついたこと,試してみたこと,学んだことを,覚え書きを兼ねてまとめます.その際に役立った,技術書,参考書,辞書,機器などの紹介も行います.

プログラミング

Python 用の高速な数値積分ライブラリを探している(NumPy + SciPy を前提):quadpy の代替として

わけあって,NumPy + SciPy で書かれた関数(1 次元,2 次元)を高速に数値積分できる,Python 用 ライブラリを探している.まるでまとまりがないが,備忘録を兼ねて,とりあえず,現状を書き留めておく.

2020 年,書棚に迎えた本 10 選

2020 年も,残り少なくなりました.この記事では,私が本年に購入した本のうち,10 冊を取り上げ,記録を兼ねて簡単に紹介します.主に,コンピュータ・プログラミングとことばに関する書籍が主となっています.

Online Judge Template Generator を Windows 10 + Python で使う:AtCoder コンテストにおける提出コードの作成,テストから提出まで

Online Judge Template Generator (OJTG) *1は,提出コードのひな型作成や,ランダムテストケースの作成といった機能を備え,競技プログラミングの問題やコンテストへの取り組みを強力に支援するツール群です.本記事では,Windows 10 環境に OJTG を導入し…

pdoc を試してみた:Python パッケージ/モジュールの docstring から API ドキュメントを自動生成する

pdoc は,Python で書いたパッケージやモジュールの API ドキュメントを,docstring を読み取ることにより自動的に作成するツールです.この記事では,私がそれを試してみた結果について,備忘録を兼ねてまとめます.

第三回アルゴリズム実技検定 (PAST) @ AtCoder 参加記:簡単な解説とコード (Python) つき(A-I と K 問題)

私は,AtCoder でオンライン開催された,第三回アルゴリズム実技検定(略称:PAST)にリアルタイム参加しました.問題に関する言及が解禁されたため,受験時の取り組みを,解けた問題(A-I と K)の略解と,提出したコード (Python) とともに振り返ります.

Windows 10 上で atcoder-cli を online-judge-tools と連携させて使う:導入からテストと提出までの基本的操作

online-judge-tools は,オンラインジャッジを利用し,競技プログラミングの問題を解く際に行う作業を支援します.また,atcoder-cliは,これと連携し,AtCoder における一連の作業をさらに省力化します.本記事では,これらの強力なツールを Windows 10 環…

問題集から一問無作為に選び出題するのを繰り返したときの,既出の問題数:あるいは,多面サイコロを繰り返し振ったときの,出た目の種類数

問題集から一問無作為に選んで出題するのを繰り返したときに,既出の問題数にまつわる確率と期待値を,とある経緯で知りたくなりました.これは,面,あるいは目の数がかなり多いサイコロを繰り返し振ったときに,これまでに出た目の種類を考えるのと等価に…

カレントディレクトリにある複数の PDF 文書をファイル名順に Python の PyPDF2 で結合する:コンテキストマネージャ自作の学習を兼ねて

複数の PDF ファイルがあり,これを一定の規則で結合したい場合があります.規則が単純ならば既存のソフトウェアで対応できますが,そうでなければ自分でスクリプトを書いたほうが円滑です.典型例として,カレントディレクトリの PDF ファイルをモジュール …

Windows Subsystem for Linux で動く Debian GNU/Linux 環境に C/C++ の開発環境 (Visual Studio Code + Clang) を構築する

Windows 10 上の Windows Subsystem for Linux (WSL) により機能している Debian GNU/Linux 環境に,C/C++ の開発を行うための設定を施す手順を書き留めておきます.エディタとしては Visual Studio Code (VS Code)を,コンパイラとしては Clang をそれぞれ…

Windows Subsystem for Linux 上に Python 3 開発環境を構築する:Debian GNU/Linux 環境の初期設定から Anaconda + Visual Studio Code の導入まで

Windows 10 に備わっている Windows Subsystem for Linux (WSL) を使うと,手軽に Linux 環境を実現できます.本記事では,WSL に基づき Linux 環境を構築し,これに Python 3 ディストリビューション Anaconda およびエディタ Visual Studio Code を導入し…

yukicoder No.3032 Unavailability of Inequality Signs コメンタリーもどき(解説除く):April fool contest 2018

競技プログラミング練習サイトyukicoderにおいて,昨年までと同様に,風変わりなコンテストyukicoder April fool contest 2018が4月1日22時より開かれました.その中の一問として,私が作成した問題であるNo.3032 Unavailability of Inequality Signsを出題…

AtCoder に登録したら解くべき精選過去問 10 問 (AtCoder Beginners Selection) を F# で解く:別解

AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~ - Qiita (drken さん)で紹介されている 10 問を,二番煎じではありますが F# で解きました.Pythonista 兼駆け出し Haskeller の視点から,言語機能やライブラリの紹…

Windows Subsystem for Linux において Emacs を用いた C/C++ の開発環境を整える:auto-completeを用いた自動補完

この記事では,Windows 10 上で C/C++ の開発環境を整える方法についてまとめます.エディタとしては Emacs を使用します.コンパイラをはじめとする各種ツールを導入したうえで,Emacs へ Auto-Complete をはじめとする各種パッケージを導入し,C/C++ の自…

CentOS 7環境でPython開発ツールを整備する:インタプリタの導入,仮想環境の作成とIDEの設定

昨日,USBメモリにCentOS 7をインストールし,無事に動作させることができましたが,開発環境の整備はまだでした.そこで,まずは私が本業でも趣味の競技プログラミングでもよく使っているPythonを使用できるように設定しました.具体的には,Python 3.5処理…

APIを利用して、CodeforcesとTopCoder SRMでのレーティング変化を取得するPython 3スクリプト

ふと思い立ち、既出かもしれませんが、プログラミングコンテスト(のサイト)であるCodeforcesとTopCoder SRMにおけるレーティングとその変化を簡単に取得するためのPython 3スクリプトを書きました。メモを兼ねて、とりあえず載せておきます。

yukicoder No.416 旅行会社:解き方とC++によるその実装

この記事では、先日行われたyukicoderのコンテストで出題された、No.416 旅行会社 - yukicoderという問題の解き方とその実装を、学習の記録も兼ねて示します。コンテスト中にはこの問題を解けなかったのですが、ほかの方が書かれた解説等を踏まえて、ようや…

AtCoder Beginner Contest 043 / Regular Contest 059 D. アンバランス:解法と実装

8月13日に行われた、AtCoder Regular Contest 059に参加しました。この記事では、このコンテストおよびAtCoder Beginner Contest 043で共通して出題された、D: アンバランス / Unbalanced - AtCoder Regular Contest 059 | AtCoderの解き方とそのPython 3に…

yukicoder No.406, 407コメンタリー(?)

8月5日から翌6日にかけて開催されたyukicoderのコンテストに、私が作成した二つの問題、「鴨等間隔の法則」(No.406)および「鴨等素数間隔列の数え上げ」(No.407)を出題していただきました。この記事では、作問の経緯や、考えたことなどを書きます。なお、両…

Bash on Windows上でプログラミング言語Crystalの処理系を使う

先日のWindows 10 Anniversary Updateにより、Insider Previewを利用しなくてもBash on Windowsを利用できるようになりました。そこで、以前から少し気になっていたプログラミング言語Crystalを、この画期的なシステムを利用して使ってみることにしました。

AtCoder Regular Contest 054 B. ムーアの法則:複数の解法

5月21日21時より、AtCoderにて定期コンテストであるAtCoder Regular Contest 054 (ARC 054) が開かれました。本記事では、このコンテストで出された問題の一つであるB: ムーアの法則 - AtCoder Regular Contest 054 | AtCoderについて、その解き方と解答例を…

Game Theoryに参加した:ゲーム理論尽くしのプログラミングコンテスト

5月13日14時(日本時間)からHackerRankで開催された、Game Theoryというプログラミングコンテストに私は参加していました。この記事では、コンテストの概要や感想などについて書きます。

AtCoder Regular Contest 052 B. 円錐:解き方と解答例

昨日(4/30)、AtCoder (アットコーダー)にてAtCoder Regular Contest 052 (ARC 052)が開催されました。この記事では、このコンテストで出され、私が解けた問題の一つである、B: 円錐 - AtCoder Regular Contest 052 | AtCoderという問題について、学習の記録…

Google Code Jam Qualification Round 2016 C. Coin Jam:SymPyによる解答例

Googleが開く競技プログラミングのコンテストGoogle Code JamのQualification Round 2016が、4月9日8時から翌10日11時まで(日本時間)の27時間にわたり開かれました。私はこれに参加し、その結果としてRound 1への進出が決まりました。この記事では、このQu…

yukicoder No.353 ヘイトプラス:プラス記号なしで足し算を行う複数の方法

昨夜、yukicoderにて開催されたyukicoder April Contestに私は参加しました。この記事では、コンテスト中に私が解けた問題の一つである、No.353 ヘイトプラス - yukicoderという問題について、備忘録を兼ねていくつかの解き方を示します。なお、この中には私…

Prim法とKruskal法をPython 3で実装してみた:無向グラフの最小全域木を求めるアルゴリズム

ふと思い立ち、Prim(プリム)法とKruskal(クラスカル)法をPython 3で実装しました。これらは無向グラフの最小全域木を求めるアルゴリズムであり、競技プログラミングでも用いられることがあるようです。この記事では、学習の記録を兼ねて、最小全域木や上…

AtCoder Regular Contest 032 B. 道路工事:複数の解き方と解答例

引き続き、私はAtCoderの過去問を解き進めています。この記事では、その一環として私が取り組んだB: 道路工事 - AtCoder Regular Contest 032 | AtCoderという問題について、それに対するいくつかの解き方と解答例を、学習の記録を兼ねてまとめておきます。

Lambda Calculi - March 2016に参加した:関数型言語だけでの競技プログラミング

3月25日14時30分(日本時間)から丸3日間にわたり、HackerRankにてLambda Calculi - March 2016という関数型言語縛りのプログラミングコンテストが開催され、私はそれに参加しました。Lambda Calculiを冠するコンテストは以前にも何度か開かれていたようです…

IndiaHacks 2016 - Online Edition B. Bear and Compressing:PyPy 3による解答例

先日、私はCodeforcesで開催されたIndiaHacks 2016 - Online Edition (Div. 1 + Div. 2)というコンテストに参加しました。この記事では、私が制限時間内に解けた問題の一つである、B. Bear and Compressingという問題について、その解き方とPython 3(ただし…

AtCoder Regular Contest 037 B. バウムテスト:解き方とPython 3による解答例

最近、私は主にAtCoderやyukicoderの問題を少しずつ解いています。この記事では、今日私が解いたB: バウムテスト - AtCoder Regular Contest 037 | AtCoderという問題の解き方およびPython 3の解答例を、学習の記録を兼ねてまとめておきます。

Chokudai Contest 001に参加した:はじめてのマラソン系コンテスト

先ほどまで、AtCoderのChokudai Contest 001にオンラインで参加していました。このコンテストは、普段AtCoderでよく開催されているものとは異なり、いわゆるマラソン系のコンテストでした。私はこれまでマラソン系コンテストに出たことがなかったのですが、…