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

docker execで実行したコンテナ内のプロセスを kill する

インストールがめんどくさいツールを使う時に、 Docker コンテナ立てて exec すれば楽じゃん、と思った。 ところが、 docker exec で実行したプロセスを kill するにはひと手間必要だった。 # コンテナを立てる。 $ docker run -d --name my-ubuntu ubuntu:1…

0.999...=1を中学生にわかるように厳密に証明した。

この記事を読んで、中学生にもわかる証明を書きたくなった。でもεδ論法とか実数の公理とかは使いたくない。そういうのを使わずにできるだけ厳密にやってみたいと思った。 以下、対話の続きっぽく書いた。 0.999...=1の証明 先生「あれから先生考えてみました…

シンプルな数式のパーサー(操車場アルゴリズム)

構文解析にちょこっと興味が出てきたので、単純な数式をパースする関数を Node.js で書いた。参考にしたのは 操車場アルゴリズム(Wikipedia) と JavaScript で数式パーサを書いてみた。 です。 数式の定義 できるだけ実装をシンプルにしたいので、数式の定義…

プログラミングの写経サイトを作った

プログラミングの練習用に他人のコードを写経することってよくありますよね? そこで、写経用のサイトを作りました。 写経ザ・プログラム ぜひ使ってみてください! なぜ写経なのか プログラミング言語を習得するために「写経」がおすすめ、みたいな記事はグ…

Reactの最低限のテストをEnzymeで書く

React.js のテストをさくっと書きたい。とりあえず、 jsdom とか本格的なことはしたくない。最低限、コンポーネントがエラーを吐かずにレンダリングされることぐらいはテストしたい。そこで Mocha + Enzyme を使う。 Mocha Enzyme 必要なことは Enzyme の RE…

いろいろなモーダルウィンドウの実装

モーダルウィンドウを実装するためには、ウィンドウを表示している状態と表示していない状態を切り替える仕掛けがあればよい。 CSS のみでモーダルウィンドウを実装 (1) 状態の区別をチェックボックスで行い、css の擬似属性 :checked を使って表示/非表示…

【JavaScript】Arrayのmapメソッドは習うより慣れろって感じ

JavaScript で Array の map メソッドが使いこなせるようになると人生が楽しくなってくる。 map の簡単な例 map が何をするのかという説明は後回しで、次の例を見てください。 var array = [1, 2, 3] var newArray = array.map(function (value) { return 2 …

ブール値を関数で定義する(ラムダ計算)

以下、 型システム入門 −プログラミング言語と型の理論− の P.44-45 を参考にした。 ラムダ計算を使って、ブール値を関数で実装する。言語は、Node.js (バージョン 6 以上)。関数型プログラミングに興味あるなら Haskell とか使えよって感じですが、許してく…

主の祈りを出力するコマンドラインツール

「主の祈り」を標準入力に出力するコマンドラインツールを作った。 理由は、最近 npm パッケージの作り方を覚え、npm で簡単にコマンドラインツールを作れることを知ったから。 ソースコードは github で公開している。 npm : oratio github : oratio そのう…

シェルスクリプトの変数の代入・参照、値が空のときの処理

参考 : プロフェショナル・シェルプログラミング (アスキー書籍) シェルスクリプトの変数の代入と参照 # 変数の代入は前後にスペースを入れない name=Jonh # 変数の参照は"$"をつける echo $name # => John # これでもOK echo ${name} # => John # 文字列の…

React.js と Redux でナンプレのサイトを作った

作った。日替わりナンプレ楽しかった。

「カリー化」を例でさっくり理解する

カリー化を例でさっくり理解する 「カリー化」です。 いきなり定義から入ると数学っぽくなってやる気がなくなるので、例から入ります。以下、JavaScript です。 カリー化の基本 べき乗を求める関数 pow(x, y) があるとします。 function pow(x, y) { return …

反転(2題)

プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~ この本(通称:蟻本)の章末で紹介されている練習問題をひたすらといている。反転。端っこを決めるとそこからカタカタと自動的に全部…

しゃくとり法(2題)

プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~ この本(通称:蟻本)の章末で紹介されている練習問題をひたすらといている。 POJ2566: Bound Found 2566 -- Bound Found 問題概要 N …

二分探索:その他(2題)

プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~ この本(通称:蟻本)の章末で紹介されている練習問題をひたすらといている。二分探索。その他。 POJ1759: Garland 1759 -- Garland …

二分探索:k 番目の値を検索(2題)

プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~ この本(通称:蟻本)の章末で紹介されている練習問題をひたすらといている。二分探索。k 番目の値を検索する問題である。 10^9 個く…

二分探索:k 番目の値を最小化(1題)

プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~ この本(通称:蟻本)の章末で紹介されている練習問題をひたすらといている。二分探索。k 番目の値を最小化する問題である。 POJ3662:…

二分探索:平均の最大化(2題)

プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~ この本(通称:蟻本)の章末で紹介されている練習問題をひたすらといている。二分探索。平均の最大化の問題である。 やっていることは…

二分探索:最小値の最大化(4題)

プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~ この本(通称:蟻本)の章末で紹介されている練習問題をひたすらといている。第3章の章末に入った。二分探索。最小値の最大化である…

繰り返し二乗法(2題)

プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~ この本(通称:蟻本)の章末で紹介されている練習問題をひたすらといている。繰り返し二乗法。べき乗の高速な計算アルゴリズムなんだ…

素数(4題)

プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~ この本(通称:蟻本)の章末で紹介されている練習問題をひたすらといている。素数の問題。エラトステネスのふるい。有名だし、これと…

ユークリッドの互除法(2題)

プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~ この本(通称:蟻本)の章末で紹介されている練習問題をひたすらといている。今回はユークリッドの互除法。最近はユークリッドの互除…

最小全域木:クラスカル法(4題)

プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~ この本の章末で紹介されている問題をひたすら解いている。 今回はグラフの最小全域木を求める問題。 最小全域木とは、(連結なグラフ…

【Python】組み込み関数zip()でディクショナリを初期化する

zip()はディクショナリの初期化に向いている。 zip()の基本的な使い方 公式ドキュメント2. 組み込み関数 — Python 3.4.3 ドキュメントより zip(*iterables) それぞれのイテラブルから要素を集めたイテレータを作ります。この関数はタプルのイテレータを返し…

最短経路問題:ダイクストラ法、ベルマンフォード法、ワーシャルフロイド法(6題)

プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~ この本(通称:蟻本)の章末で紹介されている練習問題をひたすら解いている。今回は最短経路問題。はじめに最短経路問題を解くアルゴ…

Union-Find木(3題)

プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~ この本(蟻本)の章末で紹介されている練習問題をひたすら解いている。 今回は、Union-Find木を使う問題。 Union-Find木に関するいち…

プライオリティキュー(2題)

プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~ この本の章末で紹介されている練習問題をひたすら解いている。 今回はプライオリティキューを使う問題。 POJ2010: Financial Aid 2010…

動的計画法:少し考察を要する問題(5題)

プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~ この本(通称「蟻本」)の章末で紹介されている練習問題を淡々と解いている。 今回は動的計画法の第三弾。難しかった。しかも解いてか…

動的計画法:漸化式を工夫して高速化(3題)

漸化式を工夫して高速化をはからなければならない動的計画法の問題。 だいたい最初に思いつく漸化式が、間違っているわけではないけれど効率が悪く、提出するとTime Limit Exceededになる。 そこで、漸化式を改善して時間内に解けるようにしましょうね、とい…

個数制限付き部分和問題(POJ1742)

1742 -- Coins POJ1742を解こうとしたが、蟻本P.62の「個数制限付き部分和問題」とほぼ同じだった。 この問題の漸化式の作り方が難しかったので、ここで整理しておく。以下、蟻本P.62-63を参考に書いた。 蟻本:プログラミングコンテストチャレンジブック […

基礎的な動的計画法(5題)

プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~ いわゆる「蟻本」である。この章末で紹介されている練習問題をひたすら解いている。 今回は基礎的な動的計画法。基礎的といっても最後…

貪欲法…その他(5題)

プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~ この本の章末で紹介されている練習問題を解いている。貪欲法(その他)だ。 貪欲法とはいっても、この問題群は要素を選ぶ順番をうまく…

貪欲法…線分(3題)

プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~ この本の章末で紹介されている練習問題をひたすら解いている。解説だけでなくテーマに沿った類題も豊富に紹介してくれているのがこの…

全列挙(4題)

プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~ この本の章末で紹介されている練習問題をひたすら解いている。 競技プログラミングの世界で通用するような人は、最低でも1000題は解い…

幅優先探索(3題)

幅優先探索が使える問題 「プログラミングコンテストチャレンジブック」第2版(マイナビ)の章末(p.125)で紹介されている練習問題を淡々と解いている。 こういう基本的なアルゴリズムは問題を見たら手が勝手に動くくらいに練習しないと。幅優先探索が使える…

深さ優先探索(4題)

「プログラミングコンテストチャレンジブック」第2版(マイナビ)の章末で紹介されている練習問題を解いて競技プログラミングの練習をしている。今回は「深さ優先探索」(p.125)を4題。深さ優先探索が使える問題の特徴は、 1. 片っ端から全探索してもあま…

【Ruby】Open-URIは例外を拾って404をチェックする

以下のコードでは、URLが404 Not Foundのときにエラーになって止まる。 require 'open-uri' url = 'http://example.com' html = open(url) do |f| f.read end URLを開けなかったら例外OpenURI::HTTPErrorを投げてくれるので、ちゃんと捕捉する。 require 'op…

スクレイピングで正規表現の練習

今すぐ始めるスクレイピング nokogiriとかのスクレイピング用ライブラリを使わずに標準ライブラリ'open-uri'だけでスクレイピングをします。HTMLソースを取得するだけならこれで十分。以下のサイトを参考にスクレイピングしたいサイトのHTMLソースをまるごと…

はてな記法の練習

はてな記法に慣れたいのでメモ 見出し *見出し 小見出し **小見出し 小小見出し ***小小見出し リスト1 リスト2 リスト3 -リスト1 -リスト2 -リスト3 定義リスト 定義リスト :定義リスト:定義リスト 表 表 表 |*表|表|表| ソースコードの表示 class Foo def …