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

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

2016-01-01から1年間の記事一覧

2016年を振り返って:(競技)プログラミングを中心に

思い返せば、2016年にはいろいろなことがあった気がします。競技プログラミングだけではなくいろいろな面で、自分にとって新たな出会いや画期的な出来事がありました。そこで、ここ数年はやっていなかったのですが、久しぶりにこの1年を振り返ってみようと思…

yukicoder No.453 製薬会社:解き方と解答例

現在、yukicoderではAdvent Calendar Contest 2016が開催されています。この記事では、その第4日に出題された、No.453 製薬会社 - yukicoderという問題について、解き方とコードの例を示します。

5年後の自分へ:はてなブログ5周年ありがとうキャンペーンお題第2弾

今まで将来の自分へ向けたメッセージを書いたことはほとんどないし、書こうという気になったこともあまりありません。ところが、折しも現在開催中の「はてなブログ5周年ありがとうキャンペーン」(詳細)お題第2弾が「5年後の自分へ」なので、これを機に書い…

当ブログ開設から約10ヶ月を迎えて:はてなブログ5周年ありがとうキャンペーンお題第1弾

時間が経つのは早いもので、当ブログの開設から10ヶ月ほどが経ちました。最近更新が滞りがちなので、何か題材はないかと思っていたところ、「はてなブログ5周年ありがとうキャンペーン」(詳細)という企画について知りました。この記事では、そのお題第1弾…

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.55 正方形を描くだけの簡単なお仕事です。:解き方とRubyによる実装

少しずつ、yukicoderにある★★~★★★レベルの問題を解き進めています。この記事では、先ほど解いたNo.55 正方形を描くだけの簡単なお仕事です。 - yukicoderという問題について、解き方とRubyによるコードを示します。最近ブログに「解説」をあまり書いていな…

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を、この画期的なシステムを利用して使ってみることにしました。

近況報告 (11)

気がつけば、前回の更新から2か月ほどが経ってしまっていました。そこで、旧ブログで行っていたように、最近のできごとを簡単に振り返ってみます。

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でよく開催されているものとは異なり、いわゆるマラソン系のコンテストでした。私はこれまでマラソン系コンテストに出たことがなかったのですが、…

yukicoder No.338 アンケート機能:主に端数処理などの実装面について

最近、私は主にyukicoderの問題を解いています。先ほど、No.338 アンケート機能 - yukicoderという問題を解きました。その際に、言語により数値を丸める(端数処理を行う)関数の挙動が異なることに注意する必要がありました。本記事では、それをはじめとす…

単一始点最短経路問題を解くShortest Path Faster AlgorithmをPython 3で実装してみた

グラフ理論における単一始点最短経路問題を解くアルゴリズムとしてはDijkstra法やBellman-Ford法が挙げられますが、Shortest Path Faster Algorithm (SPFA)もそのようなアルゴリズムの一つです。この記事では、SPFAの概要について述べるとともに、そのPython…

yukicoder No.105 arcの六角ボルト:解法および解答例

このところ、私はAtCoderで開催されたコンテストの過去問を解き進めるとともに、yukicoderの★★~★★★レベルの問題に取り組み、競技プログラミングの練習をしています。この記事では、昨日解いたNo.105 arcの六角ボルト - yukicoderという問題について、学習の…

AtCoder Beginner Contest 016 C. 友達の友達:解法とPython 3による解答例

最近、私はAtCoder Beginner Contest (ABC)およびAtCoder Regular Contest (ARC)の過去問を解き、競技プログラミングの練習を行っています。その一環として解いたC: 友達の友達 - AtCoder Beginner Contest 016 | AtCoderという問題について、この記事ではそ…

Scala歴0日で競技プログラミングの問題にScalaで解答してみた

ふと思い立ち、今日私はプログラミング言語Scalaを使ってAizu Online Judgeおよびyukicoderの問題に解答してみました。Scalaのコードを書くのは初めてでしたが、思っていたよりもすんなりといきました。この記事では、その顛末や、Scalaを使ってみた感想につ…

素数判定・素数列挙を行う主なアルゴリズムをPython 3で実装してみた:試し割り法からMiller-Rabin素数判定法まで

競技プログラミングにおいては、素数判定(ある自然数が素数か否かを判定する処理)あるいは素数列挙(ある範囲に含まれる素数を列挙する処理)が求められることがあります。そこで、本記事では、素数判定・素数列挙のための代表的アルゴリズムを挙げるとと…

Aizu Online Judge 1160. How Many Islands?:予備知識、解法およびPython 3による解答例

競技プログラミングにおける実装力の強化とアルゴリズムの学習を主目的として、AOJ-ICPCを利用して、ICPC・JAG非公式難易度表に挙げられている問題に取り組んでいます。現時点ではおおむね難易度100-150程度の問題を解いているところです。この記事では、そ…

はじめてのCodeforcesコンテスト

Codeforcesでは、月に数回プログラミングコンテストが開催されています。2月7日18時5分(日本時間)から、公式のコンテストとしてCodeforces Round #342 (Div. 2)が実施され、私はそれに参加しました。この記事では、その顛末や感想について書きます。 Codef…