chevron_left

メインカテゴリーを選択しなおす

cancel
プログラミングの備忘録 https://taq.hatenadiary.jp/

プログラムをつくる過程を残しています。 使用言語は主にprocessingです。 自身が理系なので、その方面の内容が多いと思います。

taq
フォロー
住所
未設定
出身
未設定
ブログ村参加

2022/04/29

arrow_drop_down
  • Project Euler を通して Haskell を学ぼう

    こんにちは。 今回は Project Euler の第1問から第10問まで Haskell で解いてみようと思います。 Project Euler は、時間制限なしの競技プログラミングのようなもので、過去に紹介しています。 taq.hatenadiary.jp そして、Haskell も最近始めました。 taq.hatenadiary.jp 実は割と気に入っていて、何かしたいなと思っていたところ Project Euler の存在を思い出しました。 Python で解いていって記事を書いているのですが、Haskell でも練習がてら解いてみます。 (ここ1年くらい更新が止まっていますが…) t…

  • プログラミング言語「Chef」を触ってみる

    こんにちは。 今回は、プログラミング言語「Chef」を紹介します。 一風変わったプログラミング言語シリーズ (?) の4つ目です。 プログラミング言語「Piet」を使ってみる - プログラミングの備忘録 プログラミング言語「Uiua」を使ってみる - プログラミングの備忘録 プログラミング言語「Shakespeare」を触ってみる - プログラミングの備忘録 目次 「Chef」とは 仕様 レシピタイトル コメント 材料リスト 調理時間 オーブンの温度 手順 ボウルと耐熱皿 命令 提供 補助レシピ 実行環境 コーディング Hello World! フィボナッチ数列 まとめ 「Chef」とは Ch…

  • プログラミング言語「Haskell」を触ってみる

    こんにちは。 今回は、プログラミング言語「Haskell」を触ってみます。 最近は一風変わったプログラミング言語シリーズ (?) を更新していますが、そのネタを探す最中「ラムダ計算」というものに出会いました。 いろいろ歩き回っていたら「Haskell」という言語が出てきまして、ちょっと見てみたらおもしろそうだったので手を伸ばしてみることにしました。 目次 「Haskell」とは 実行環境 VSCodeで ブラウザで コーディング Hello World! フィボナッチ数列 単純な方法 メモを使った方法 zipWith を使った方法 zipWith (改) を使った方法 まとめ 「Haskell…

  • プログラミング言語「Shakespeare」を触ってみる

    こんにちは。 今回は、プログラミング言語「Shakespeare」を紹介します。 一風変わったプログラミング言語シリーズ (?) の3つ目です。 プログラミング言語「Piet」を使ってみる - プログラミングの備忘録 プログラミング言語「Uiua」を使ってみる - プログラミングの備忘録 目次 「Shakespeare」とは 仕様 演目 幕と場 登場と退場 発言 定数値について 演算について 値の代入について 出力について 入力について goto文について if文について 比較について スタック 実行環境 コマンドプロンプトで ブラウザで まとめ 「Shakespeare」とは Shakesp…

  • processingの備忘録 -逆高速フーリエ変換-

    こんにちは。 今回は「逆高速フーリエ変換」を processing で実装してみます。 なかなか長編になってきました、フーリエ変換シリーズです。 processingの備忘録 -離散フーリエ変換- - プログラミングの備忘録 processingの備忘録 -逆離散フーリエ変換- - プログラミングの備忘録 processingの備忘録 -高速フーリエ変換- - プログラミングの備忘録 フーリエ変換を利用して絵を描く - プログラミングの備忘録 音声ファイルを扱ったときには、おまけとして音声のフーリエ変換を試してみるということもしてみました。 processingの備忘録 -音声- - プログラ…

  • processingの備忘録 -逆離散フーリエ変換-

    こんにちは。 今回は「逆離散フーリエ変換」を processing でできるようにしてみようと思います。 これまでに、フーリエ変換シリーズとして何記事か書いてきました。 processingの備忘録 -離散フーリエ変換- - プログラミングの備忘録 processingの備忘録 -高速フーリエ変換- - プログラミングの備忘録 フーリエ変換を利用して絵を描く - プログラミングの備忘録 音声ファイルを扱ったときには、おまけとして音声のフーリエ変換を試してみるということもしてみました。 processingの備忘録 -音声- - プログラミングの備忘録 というわけで、フーリエ変換の逆変換に触れて…

  • processingの備忘録 -ASCIIアート-

    こんにちは。 今回は、processing で「ASCIIアート」をつくります。 目次 ASCIIアートとは 実装 画像の読み込み グレースケール化 文字列に変換 出力 まとめ 参考 ASCIIアートとは ASCIIアートは、文字で描かれた絵のことを指し、略称として「AA」とよばれることもあります。 2ちゃんねるやニコニコ動画などでよく見られるので、聞いたり見たりしたことがあるという方もいるのではないでしょうか。 そもそも「ASCII」とは文字コードの一種で「American Standard Code for Information Interchange」の頭字語になっています。 今では「…

  • タッパーの自己言及式の謎を解く

    こんにちは。 今回は「タッパーの自己言及式 (Tupper's self-referential formula)」を取りあげようと思います。 (記事タイトルを AI が生成してくれるようになったので、さっそく使ってみました。) 例のごとく、少し前にこんなツイートを見かけました。 Tupper's self-referential formula is a formula that visually represents itself when graphed at a specific location in the (x, y) plane. pic.twitter.com/QVxB3fo…

  • プログラミング言語「Uiua」を使ってみる

    こんにちは。 今回は、プログラミング言語「Uiua」を紹介します。 こんなツイートを見た。 Uiuaで遊んでみた!array language系は初めてだからプログラムの組み方に戸惑ったけどなんとかできた!これはキュゥべえを描くプログラムhttps://t.co/p0rtiGun1k pic.twitter.com/Hpf2NnLhPI— ronwnor (@Pixelated_Donut) 2023年11月23日 謎の文字の羅列。なぜこれで絵が描けるのか。 こんなん見せられたらやるしかありません。 というわけでやります。 目次 「Uiua」とは インストールと実行環境 インストールしなくても…

  • processingで粉遊び的なものをつくってみる

    こんにちは。 今回は、processing で「粉遊び」的なものをつくってみます。 「粉遊び」というゲーム自体は、以前にセル・オートマトンを取り上げた際に「ラングトンのアリ」の部分で少し引き合いに出しました。 dan-ball.jp taq.hatenadiary.jp ダンボールのゲーム自体は昔から好きで、シンプルながら奥深いというか、「棒レンジャー」なんかは割とやりこんだりしていました。 このサイトに載っているようなものをつくってみたいと思って processing に手を伸ばした節もあります。 そんなとき、こんなツイートを見かけました。 one easy way to make a si…

  • processingの備忘録 -音声-

    こんにちは。 今回は「processing で音声を扱ってみよう」です。 かなり間が空きましたが、過去に画像とテキストの生成・読み込みを取り上げています。 processingの備忘録 -png、gifの生成- - プログラミングの備忘録 processingの備忘録 -txt、csvの生成- - プログラミングの備忘録 processingの備忘録 -画像、テキストの読み込み- - プログラミングの備忘録 今回は「ファイルの扱いシリーズ」として、さっくりとですが音声ファイルに手を伸ばしてみます。 目次 ライブラリ 音声ファイルの読み込みと再生 マイクからの入力 音の再生 おまけ まとめ ライ…

  • プログラミング言語「Piet」を使ってみる

    こんにちは。 今回は、プログラミング言語「Piet」を紹介します。 実は最近、こんなツイートをしました。 自己紹介。 pic.twitter.com/qc3IJRT4qD— taq (@taq2777) 2023年9月24日 これを見て"自己紹介"を感じていただけたならそれはそれで芸術の面白さを感じますが、芸術に疎い私にはこの画像に自己を乗せるというような高尚な表現はできないので、別の意味を持たせてあります。 それが今回紹介するプログラミング言語「Piet」に関わってきます。 目次 「Piet」とは 仕様 コーディング 自己紹介 本家に寄せたバージョン まとめ 「Piet」とは Piet は難…

  • 「Stone Story RPG」で遊んでみる

    こんにちは。 今回は「Stone Story RPG」というゲームを遊んでみます。 ちょっと長めのイントロが入ります。 友人と Steam の無料ゲームを発掘することがままあるのですが、そこで「Super Auto Pets」というゲームを見つけました。 これがなかなかおもしろく、友人が見つけてくれたんですが、以前にも「Muck」という良ゲーを見つけてくれたので見る目あるなと思っていました。 「Super Auto Pets」ですが、アプリ版もあるようだということでせっかくなので入れることにしました。 アプリを入れるときは、おすすめのゲームみたいなものがいくつか表示されると思うのですが、その中…

  • フーリエ変換を利用して絵を描く

    こんにちは。 今回は「フーリエ変換を利用して絵を描く」ということをやってみます。 フーリエ変換の利用法としてたまに挙げられるのが、「フーリエ変換の結果から周転円をつくって絵を描かせる」というものだと思います。 例えば、 Coding Challenge #130.1: Drawing with Fourier Transform and Epicycles - YouTube myFourierEpicycles - draw your own fourier epicycles. これまでにフーリエ変換シリーズとして2記事書いてきました taq.hatenadiary.jp taq.hate…

  • processingの備忘録 -高速フーリエ変換-

    こんにちは。 今回は「高速フーリエ変換」を processing に実装してみようと思います。 以前、離散フーリエ変換 (DFT) について記事を書きました。 taq.hatenadiary.jp この方法ではfor文が2重になっており、$N$ が大きくなってくると計算量もその2乗で多くなっていくため計算に時間がかかってしまいます。 ここで登場するのが「高速フーリエ変換 (FFT)」とよばれるものです。 方法は様々あるようですが、最も有名であろう「クーリー・テューキーのアルゴリズム」というものを実装してみます。 ちなみにですが、processing のライブラリを使えば簡単にFFTを行えます。…

  • processingの備忘録 -離散フーリエ変換-

    こんにちは。 今回は「離散フーリエ変換」を processing でできるようにしてみようと思います。 フーリエ変換と聞いてもパッと日常生活における利用例が思いつきませんが、化学系の研究を行っている私からすると、核磁気共鳴 (NMR) 分光や赤外分光 (FT-IR)、X線回折などでよく聞くものであります。 (実際にフーリエ変換をするのは機械なので、普段は変換の結果の方に注目していますが…) そういえば、たまに何かのMVで音楽に反応して棒グラフが動くみたいな演出があるかと思いますが、おそらくそれもフーリエ変換を利用しています。 ということで、細かい中身は数学科でやってもらうとして、さっくりとです…

  • processingの備忘録 -ばね-

    こんにちは。 今回は、processing で「ばね」をつくってみます。 Twitterを眺めていると、こんなツイートが目に入りました。 Friendly reminder that this 17-minute #YouTube video detailing the soft body #physics used in JellyCar Worlds exists. pic.twitter.com/w4SWi8b7fx— JellyCar dev! (@walaber) 2023年2月5日 「JellyCar」は、簡単に言えばぐにゃぐにゃな車を動かしてゴールを目指すゲームです。 いわゆるソ…

  • 「Screeps: Arena」を始めてみる

    こんにちは。 今回は「Screeps: Arena」というゲームをやってみます。 Screeps: Arena とは Tutorial Introduction Loop and import Script loop Import stuff Simple move First attack Creeps bodies Store and transfer Terrain Spawn creeps Harvest energy Construction Final test まとめ Screeps: Arena とは 「Screeps: Arena」は2022年4月8日に発売されたゲームで、S…

  • Project Euler -Problem 81~90- (更新中)

    2023/03/11 更新 Problem 81 こんにちは。 今回は「Project Euler」の第81問から第90問まで解いてみます。 80問目まではこちらに記事があります。 taq.hatenadiary.jp 以下ネタバレになるので、嫌だという方は先に解いてみてください。 projecteuler.net 目次 Problem 81 -Path sum: two ways- Problem 81 -Path sum: two ways- 以下の5×5の行列で、左上から右下へたどった (右か下にのみ進める) ときに数字の和が最小となるのは赤色で示された経路で、その和は 2427 となる…

  • processingの備忘録 -ボロノイ図-

    こんにちは。 今回は processing で「ボロノイ図」を描画する、という題です。 おそらく「ボロノイ図 processing」などで調べれば数多出てくるものだとは思いますが、やりたいのでやります。 目次 ボロノイ図とは プログラム 正攻法 成長法 まとめ 参考 ボロノイ図とは ボロノイ図は、ある点 (母点) の集まりについて、ある位置からどの母点が一番近いかによって区分けをした図です。 距離の取り方によって図の雰囲気は変わるようですが、特に「ユークリッド距離」 (最も一般的なもの) で考えた場合は、各母点間を垂直二等分線で分けたような図になります。 割といろいろなところで見られる図であり…

  • pythonの備忘録 -ヒュッケル法 第2回-

    こんにちは。 今回は、「python でヒュッケル法の計算をする」の第2回です。 前回、ヒュッケル法をプログラムにし、分子軌道関数の計算ができるようになりました。 taq.hatenadiary.jp ですがそれを図にする方法はまだ触れていませんでした。 ということで、今回は分子軌道の可視化を行ってみます。 目次 概要 方針 プログラム 分子軌道関数の計算 炭素原子の座標の計算 存在確率 (確率密度) の計算 分子軌道の描画 gifとして保存 まとめ 概要 「分子軌道の可視化」とは言いましたが、電子にははっきりとした軌道 (orbit) があるわけではなく、この辺りに居る確率が高いぞというとこ…

  • pythonの備忘録 -ヒュッケル法-

    こんにちは。 今回は「ヒュッケル法」をpythonで計算する、という題でやっていきます。 おそらくこの記事を読んでいる方はヒュッケル法をある程度知っていてその計算を機械にやらせたい、という方だと思いますので原理の説明はあまり詳しくはしないことにします。 知らない方も、結論だけでも一応実行はできると思うのでなんとなく見てみてください。 目次 ヒュッケル法とは 概要 原理 手計算でやってみる プログラム化 方針 ライブラリのインストール 固有値・固有ベクトルの計算 試運転 まとめ 参考 ヒュッケル法とは 概要 気づいている方もいるかもしれませんが、筆者は理系の中でも化学寄りの人間です。 中でも有機…

  • Project Euler -Problem 71~80-

    2022/11/23 更新 Problem 71 こんにちは。 今回は「Project Euler」の第71問から第80問まで解いてみます。 70問目まではこちらに記事があります。 taq.hatenadiary.jp 以下ネタバレになるので、嫌だという方は先に解いてみてください。 projecteuler.net 目次 Problem 71 -Ordered fractions- Problem 71 -Ordered fractions- $n$ と $d$ がともに正の整数の分数 $n$/$d$ を考える。 $n < d$ で、$n$ と $d$ の最大公約数が 1 のとき、その分数 $…

  • processingの備忘録 -畑政義写像-

    こんにちは。 今回は「畑政義写像」を描画してみます。 そもそもは二重振り子を実装しようと思っていろいろ調べていたのですが、そのときにこんなサイトを見つけました。 (その後、二重振り子は無事実装できました ( processingの備忘録 -二重振り子- )。) shadowacademy.web.fc2.com その中の「非線形物理学(カオス理論)」のところに「グモウスキー・ミラの写像」というものがあり、どういうものなのかと思って調べてみたら一目惚れです。 かっこいい(小並感) pic.twitter.com/pthLxIJAkI— taq (@taq2777) 2022年9月25日 この関連…

  • Project Euler -Problem 61~70-

    2022/10/30 更新 Problem 63 こんにちは。 今回は「Project Euler」の第61問から第70問まで解いてみます。 60問目まではこちらに記事があります。 taq.hatenadiary.jp 以下ネタバレになるので、嫌だという方は先に解いてみてください。 projecteuler.net 目次 Problem 61 -Prime pair sets- Problem 62 -Cubic permutations- Problem 63 -Powerful digit counts- Problem 61 -Prime pair sets- 三角、四角、五角、六角、七…

  • Project Euler -Problem 51-

    2022/10/10更新 Problem 51 こんにちは。 今回は「Project Euler」の第51問から第60問まで解いてみます。 50問目まではこちらに記事があります。 taq.hatenadiary.jp 51問目からはのんびりと、月1で増えたらいいねくらいの感覚でやっていきます。 以下ネタバレになるので、嫌だという方は先に解いてみてください。 projecteuler.net 目次 Problem 51 -Prime digit replacements- Problem 51 -Prime digit replacements- 2桁の数 *3 の1桁目を置き換えると、9種ある…

  • processingの備忘録 -拡散律速凝集-

    こんにちは。 今回は、拡散律速凝集の様をシミュレートしてみます。 これまで分子の衝突やランジュバン方程式など、ブラウン運動についていろいろやってきました。 taq.hatenadiary.jp taq.hatenadiary.jp (今更ですけどタイトルはLJポテンシャルになってますが、温度を変えないならブラウン運動にはあまり関係ありません…) 今回もその関連で、「拡散律速凝集」を扱ってみます。 目次 拡散律速凝集とは プログラム化する ランダムウォーク 核との衝突判定 ArrayListを使う まとめ 拡散律速凝集とは 拡散律速凝集は、核となる部分に何か分子がくっついていって塊が大きくなって…

  • processingの備忘録 -二重振り子-

    こんにちは。 今回は「二重振り子」をprocessingで描画してみたいと思います。 二重振り子をprocessingでやるのはn番煎じ的なところがありますが、やりたいのでやります。 目次 二重振り子とは プログラム化する おまけ まとめ 参考 二重振り子とは 「二重振り子」はその名の通り、振り子が2つつながったものです。 カオスの例としてよく挙げられるので、聞いたり見たりしたことがあるかもしれません。 二重振り子において、各振り子の角度の二階微分については以下のように表されるようです。 $$ \begin{align} \ddot{\theta}_1 &= \frac{ -m_2 ~ l_2…

  • 迷路の最短経路から雷の軌跡をモデル化する

    こんにちは。 前回も書いたように、迷路を使って雷の軌跡をモデル化します。 前回の記事はこちらです。 taq.hatenadiary.jp 目次 迷路の準備 最短経路の探索→雷のモデル化 まとめ 参考 迷路の準備 まずは迷路を用意します。 前回の方法に従って、迷路を生成し、書き出しておきます。 taq.hatenadiary.jp 最短経路の探索→雷のモデル化 ねらいは雷の軌跡なので、始点は決まっていても終点は決めません。 そして、始点(雲)から最下点(地面)までの距離が最も短いものを答えとします。 これを求めるのは前回紹介したような、行き止まりを埋める方法ではできそうになかったので、別の方法を…

  • processingの備忘録 -迷路-

    こんにちは。 今回は、processingで迷路を作る、という題でやっていきます。 なんで迷路?と思われるかもしれませんが、それはこんなツイートを見つけたからです。 ランダムな迷路を作って、最上部から地面までの最短距離を算出することで、落雷をモデル化できるらしい⚡️ pic.twitter.com/YKCRblgtfi— 数学を愛する会 (@mathlava) 2022年7月31日 「数学を愛する会」さんのツイートは面白いものが多くて結構好きです。 (ケーキの切り方選手権はみなさんも知っているかもしれません。) その中で、先程挙げた雷の軌跡を迷路でシミュレートできるというツイートがあり、これは…

  • pythonの備忘録 -Twitter API-

    こんにちは。 今回は、TwitterのAPIを扱ってみようという題でやっていきます。 APIとは Twitter APIを使う 準備 利用登録 ライブラリのインストール ツイートする ツイートを取得する まとめ 参考 APIとは 「API」は「Application Programming Interface」の略語のようで、既存のソフトの機能をみんなが使えるようにしてくれたやつみたいな感じです。 今回はTwitterのAPIを扱いますが、他にもいろんなものがあるようです。 qiita.com Twitter APIを使う 準備 Twitter APIを使うには事前準備が必要です。 ライブラリ…

  • processingの備忘録 -AR 第2回-

    こんにちは。 今回は「processingでAR」の第2回です。 前回、processingでARを扱えるようにするとともに、おまけとしてobjファイルを読み込んで表示する方法や、ARマーカーを複数使う・自作する方法を書いてみました。 taq.hatenadiary.jp 前回の最後にも書いたとおり、モデルが動いたり表示したモデルと何かしらインタラクションができたりすると面白そうです。 ということで、今回はそれをやってみます。 目次 モデルを動かす 備え付けの関数を使う モーションデータを使う インタラクションを導入 まとめ モデルを動かす 備え付けの関数を使う 座標を変化させたり、rotat…

  • processingの備忘録 -AR-

    こんにちは。 今回は、processingで「AR」を扱ってみます。 かなり前にですがニコニコ動画でARを使って初音ミクをなでたりしている動画を見つけて、そのころからものづくりが好きだったのでいつかまねしてみたいなと思っていました。 (いわゆる「ニコニコ技術部」に属する動画は結構ハマって見ていました。) 当時は出会っていませんでしたが、今はprocessingという手段があります。 それっぽいこともできるのではないかということで、やってみることにしました。 目次 ARとは processingでAR ライブラリのインストール カメラを使えるようにする ARで表示してみる おまけ 3Dモデルを表…

  • pythonの備忘録 -itertools-

    こんにちは。 今回は、itertoolsに頼らないようにするための記事です。 Project Eulerをやっていたときに、このような問題が登場しました。 projecteuler.net この問題は、「0123456789」の辞書式順列の中で100万番目のものは何か、という問題です。 (以降、Project EulerのProblem 24の解法に一部触れるので、先に自分で解きたいという方はどうぞ。) これを解くにあたり、自分は辞書式順列をつくってその100万番目の要素を取り出せば良いだろうと考えたのですが、その辞書式順列をつくるのに苦労し、結局モジュールの「itertools」を使うことに…

  • processingの備忘録 -ランジュバン方程式-

    こんにちは。 今回は「ランジュバン方程式」をprocessingで可視化(?)してみます。 本題とは関係無い話になりますが、最近はずっと競プロとProject Eulerをやっていたのでpythonばかり書いて、1ヶ月ほどでしょうか、processingに全く触れていませんでした。 そろそろやらないと忘れそうだということで、競プロ復習編は気になったものだけ個人的にやることにして、Project Eulerも50問目までやって切り良く終わりにしました。 (今後一切やらないという訳ではないのでまたたまに現れるかもしれません。) ではリハビリがてら何をつくろうかと思っていたところに「ランジュバン方程…

  • Project Euler -Problem 41~50-(更新中)

    2022/05/08更新 Problem 41, 42, 43 こんにちは。 今回は「Project Euler」の第41問から第50問まで解いてみます。 以下ネタバレになるので、嫌だという方は先に解いてみてください。 projecteuler.net 目次 Problem 41 -Pandigital prime- Problem 42 -Coded triangle numbers- Problem 43 -Sub-string divisibility- Problem 41 -Pandigital prime- 1からnまでの数字が1つずつ含まれたn桁の数をパンデジタルであるという。 …

  • Project Euler -Problem 31~40-(更新中)

    2022/05/08更新 Problem 35, 36, 37 こんにちは。 今回は「Project Euler」の第31問から第40問まで解いてみます。 以下ネタバレになるので、嫌だという方は先に解いてみてください。 projecteuler.net 目次 Problem 31 -Coin sums- Problem 32 -Pandigital products- Problem 33 -Digit cancelling fractions- Problem 34 -Digit factorials- Problem 35 -Circular primes- Problem 36 -Dou…

  • Project Euler -Problem 21~30- (更新中)

    2022/05/04更新 Problem 22, 23 こんにちは。 今回は「Project Euler」の第21問から第30問まで解いてみます。 以下、ネタバレになる(かもしれない)ので、嫌だという方は先に解いてみてください。 projecteuler.net 目次 Problem 21 Problem 22 Problem 23 Problem 21 d(n)をnの真の約数(n未満で、nを割りきれる数)の和と定義する。 a ≠ bの条件の下d(a) = bかつd(b) = aであれば、aとbは友好的な組であり、これらは友愛数と呼ばれる。 例えば、220の約数は1 2 4 5 10 11 2…

  • Project Euler -Problem 11~20-

    こんにちは。 今回は「Project Euler」の第11問から第20問まで解いてみます。 以下、ネタバレになる(かもしれない)ので、嫌だという方は先に解いてみてください。 projecteuler.net 目次 Problem 11 Problem 12 Problem 13 Problem 14 Problem 15 Problem 16 Problem 17 Problem 18 Problem 19 Problem 20 Problem 11 以下の20×20のグリッドで、斜めに並んだ4個の数を赤色で示した。 これらの積は26 × 63 × 78 × 14 = 1788696となる。 …

  • Project Euler -Probrem 2~10-

    こんにちは。 今回は「Project Euler」の第2問から第10問まで解いてみようと思います。 前回1問目を解いてみて、結構楽しかったのでとりあえずキリ良く10問くらいはやってみようということで、第2回です。 以下、ネタバレになる(かもしれない)ので、嫌だという方は先に解いてみてください。 projecteuler.net 目次 Problem 2 Problem 3 Problem 4 Problem 5 Problem 6 Problem 7 Problem 8 Problem 9 Problem 10 Problem 2 フィボナッチ数列の各項は、その前2つの数字を足すことで計算され…

  • 「Project Euler」を始めてみる

    こんにちは。 今回は「Project Euler」を触ってみます。 Project Eulerは数学の問題集のような、制限時間の無い競技プログラミングのようなものです。 登録が必要ですが、設定するのはニックネームとパスワードくらいなので特に問題無いと思います。 ただ、基本英語なので解読が大変かもしれません。 projecteuler.net 現時点で全795問あり、簡単なものから難しいものまで様々。 また、進捗がわかりやすくなっているので、自分のモチベーション維持になるかもしれません。 では早速、1問目を解きながらProject Eulerの流れを見てみます。 問題ページはこのようになっており…

  • AtCoder Beginner Contest 249

    こんにちは。 今回は、前回の最後に参加した「AtCoder Beginner Contest 249」の復習をしてみます。 taq.hatenadiary.jp 参加してみたいという方は以下からどうぞ。 atcoder.jp 目次 復習 振り返る 見てみる また参加する まとめ 復習 振り返る まずは、自分のコードを振り返ります。 プログラムを書いたのは問題A~Dなので、それぞれ見てみます。 (問題文は省略します。) 問題A 「A - Jogging」 算数の問題によくあるような、2人がそれぞれある規則で走ったときにどちらがより遠くまで行けたかを計算するというものでした。 a, b, c, d…

  • AtCoder Beginner Contest 248

    こんにちは。 今回は、前回の最後に参加した「AtCoder Beginner Contest 248」の復習をしてみます。 taq.hatenadiary.jp 参加してみたいという方は以下からどうぞ。 atcoder.jp 目次 復習 振り返る 見てみる また参加する まとめ 復習 振り返る まずは、自分のコードを振り返ります。 プログラムを書いたのは問題A、B、Dなので、それぞれ見てみます。 (問題文は省略します。) 問題A 「A - Lacked Number」 0~9までの数字からなる9文字の文字列の中で、欠けている数字を見つけるというものでした。 s = input() t = []…

  • AtCoder Beginner Contest 247

    こんにちは。 今回は、前回散々な結果であった競技プログラミング「AtCoder Beginner Contest 247」の復習をしてみます。 taq.hatenadiary.jp 本番が終わっても提出は受け取ってくれるようですし、「バーチャル順位表」というものもつくようなので、参加してみたいという方は以下からどうぞ。 atcoder.jp 目次 復習 振り返る 見てみる また参加する まとめ 復習 振り返る まずは、自分のコードを振り返ります。 プログラムを書いたのは問題A~Cなので、それぞれ見てみます。 (問題文は省略します。) 他の問題に関してはさっと見てみましたが解けそうに無かったので…

  • 競技プログラミングを始めてみる

    こんにちは。 今回は「競技プログラミング」というものを始めてみます。 「QuizKnock」というYouTubeチャンネルをご存じでしょうか。 そこで「好きになっちゃう放課後」シリーズなるものがありまして、「プログラミング」が取り上げられた回があります。 (常々、「化学が好きになっちゃう放課後」をやってくれと、なんなら自分を呼んでくれとまで思っているのですが、なかなか実現しません…) そこで鶴崎さんが「競技プログラミング」というものがあると紹介をしていました。 以前から存在は知っていたのですが、記憶の奥底に眠っていたようで、ブログを始めたこともあるので記事にしてみようと思って今に至ります。 使…

  • p5.jsの備忘録 -HTMLの基礎-

    こんにちは。 今回は「HTMLを触ってみる」という題です。 以前にp5.jsをオフラインで実行するための方法を記事にしたことがあります。 taq.hatenadiary.jp そのときにHTMLが出てきました。 HTML自体は前から興味はあったのですがいまいち始める動機がなかったのでやっていませんでした。 しかし、ブログを始めたことと、p5.jsとHTMLは大きくつながっているということを知ったので触ってみることにしました。 先に挙げた記事で、 <!DOCTYPE html> <html lang=""> <head> <meta charset="utf-8"> <meta name="vi…

  • p5.jsをオフラインでも実行できるようにする

    こんにちは。 今回の話題はタイトルの通りです。 初回でも書きましたが、p5.jsはweb上に専用のエディターがあって始めやすいです。 しかし、web上にあるのでネット環境が無いと使えません。 コードを書くこと自体はどこでもできますが、実行しなければ本当に動くかどうか確認できません。 ということで、p5.jsをネット環境無しのパソコンで動かす方法を書いておきます。 まずは、以下のサイトから「Single Files」のところにある「p5.js」または「p5.min.js」をダウンロードします。 p5js.org そして、どこでも良いので「index.html」というファイルをつくり、同じところに…

  • processingの備忘録 -セル・オートマトン-

    こんにちは。 今回は「セル・オートマトン」について書いてみます。 セル・オートマトンとは 一次元 ウルフラムコード 二次元 ライフゲーム ラングトンのアリ 森林火災 チューリングパターン まとめ 参考 セル・オートマトンとは セル・オートマトンは、格子状の「セル」を並べ、近接したセル間で「規則」を適用することでできるモデルで、簡単な割にいろいろなことをシミュレートできて有用だそうです。 言葉で言われても分かりづらいので例を見ていきましょう。 今回は、いろいろなセル・オートマトンをつくって遊んでみたいと思います。 一次元 ウルフラムコード まずは「ウルフラムコード」です。 (「ウルフラムコード」…

  • processingの備忘録 -マンデルブロ集合-

    こんにちは。 今回は「マンデルブロ集合を描く」という題です。 マンデルブロ集合とは プログラム化する マンデルブロ集合 探索できるようにする おまけ(ジュリア集合) まとめ 参考 マンデルブロ集合とは マンデルブロ集合は、 $$ z_{n+1} = z_n^{2} + c $$ $$ z_0 = 0 $$ で表される複素数の数列で、$n \to \infty$にしたときに発散しないような複素数$c$の集合のことだそうです。 具体的には、ある複素数$c = a+bi$について先に挙げた式にあてはめて計算していき、 $$ \begin{align} z_0 & = 0 \\ z_1 & = c \…

  • processingの備忘録 -p5.js-

    こんにちは。 今回は「p5.jsを始めてみる」という題でやっていきます。 p5.jsを始める プログラムをつくってみる つぶやきProcessingのコードを読む つぶやきProcessing用にコードを書く まとめ 参考 p5.jsの存在は知っていましたが、processingのブラウザ版だと捉えていた自分は、オフラインでコードを書きたいという欲があるので触っていませんでした。 ですが、twitterを始めてからしばらく経ち、「つぶやきProcessing」というものの存在を知りました。 「つぶやきProcessing」は、twitterで投稿できる文字数(140字)内でコードを書くことを指…

  • processingの備忘録 -ウラムの螺旋-

    こんにちは。 今回は「ウラムの螺旋をつくってみよう」という題です。 ウラムの螺旋とは プログラム化する 螺旋状に並べる 素数の判定と描画 描画方法を変えてみる まとめ 参考 ウラムの螺旋とは ウラムの螺旋は、自然数を螺旋状に並べて素数だけに色をつけた図で、所々に一直線上に並んだ部分が見えます。 素数という謎の数でも規則性を感じるところがあるという点で面白いです。 もう少し広い範囲で描画したのが、アイキャッチにあるような図です。 プログラム化する 螺旋状に並べる まずは、数字を螺旋状に並べていきます。 調べてみると十人十色で、様々なやり方があるようなので、自分のわかりやすいものを使ってみてくださ…

  • processingの備忘録 -Box2D-

    こんにちは。 今回は「Box2Dを触ってみる」という題でやっていきます。 Box2Dとは ライブラリのインストール プログラムをつくる 落下する箱 任意の位置に壁をつくる 多角形の追加 流体っぽく まとめ 参考 Box2Dとは 「Box2D」は古典力学的な計算をしてくれるライブラリで、「物理エンジン」や「剛体シミュレーター」的なものにあたります。 これまでにブラウン運動や天体的なもの、壁で反射する物体などつくってきましたが、これらで扱ったのは「質点」と呼ばれる「体積は無いが質量はある」という性質をもった仮想的な物体です。(名の通り「質(量をもった)点」) プログラム上では「ellipse()」…

  • processingの備忘録 -ボイド-

    こんにちは。 今回は、「ボイドをつくってみよう」という題でやっていきます。 ボイドとは プログラム化する 基礎をつくる 鳥の描画と移動 鳥の追加・削除 境界条件 分離 整列 結合 その他 鳥の見た目 空間分割法について まとめ 参考 ボイドとは 「ボイド」は人工生命プログラムのひとつで、「bird-oid(鳥のようなもの)」という単語を略したものだそうです。 (「-oid」という接尾辞は「android」や「humanoid」などでも見られますね。) コンピュータ上につくった鳥(のようなもの)に対して「分離(separation)」「整列(alignment)」「結合(cohesion)」とい…

  • processingの備忘録 -L-system-

    こんにちは。 今回は「L-systemで描画してみよう」という題です。 L-systemとは L-systemの中身 プログラム化する 文字列の変形 図に変換 別バージョン 余談 まとめ 参考 L-systemとは L-systemは、リンデンマイヤーさんが提唱した、自然物の構造を表現できるアルゴリズムだそうです。 「L-system」という単語は提唱者の名前をとった「Lindenmayer system」の略だとか。 以前に「processingでフラクタル」とかいうシリーズをつくりましたが(結局1つしか記事が無いですが)、L-systemを使えば大抵のフラクタルは表現できるらしいです。 L…

  • processingの備忘録 -チューリングパターン-

    こんにちは。 今回は「チューリングパターンをつくる」という題でやっていきます。 皆さんは「ゲームさんぽ」という企画をご存じでしょうか。 様々なもののプロ・専門家とともにゲームをプレイするというものなのですが、専門知識が飛び出したり、ものの見方の違いを知ることができて面白いです。 その中のひとつに生物学者と一緒に釣りスピをやるという回があったのですが、そこで「チューリングパターン」という単語が出てきました。 大昔に「所さんの目がテン!」でも桝太一アナがチューリングパターンを描く企画をやっていたような記憶があるので、そちらで知ってるという方もいるかもしれません。 チューリングパターンは以下のような…

  • processingの備忘録 -Raspberry Pi-

    こんにちは。 今回は「Raspberry Piを触ってみよう」です。 実はかなり前にRaspberry Piがどんなものか触ってみたいと思って、とりあえず一番安かった「Raspberry Pi Zero」(1200円くらい)を買ってみてました。 当時はMathematicaやProcessingを少しいじってどの程度の速度で動くのか試しただけでしたが、せっかくブログを始めたので記事にしようと思ってまた引っ張り出してみた次第です。 (ちなみに速度はかなり遅いですが、お試しで買う分には問題ないです。やりたいことがあってRaspberry Piを買うのであれば3や4が良いと思います。) Raspbe…

  • processingの備忘録 -反射-

    こんにちは。 今回はprocessingに物体の反射を導入する方法についてです。 軸に垂直(平行)な向きの壁での反射とそれ以外の向きの壁での反射の2種類について書いてみます。 以降の説明では、簡単のために物体を円形とします。 軸に垂直(平行)な壁での反射 垂直な壁での反射は簡単、壁がある場所で速度の一方の成分の向きを逆にすれば良いだけです。 例えば壁がウィンドウの端であるとしたとき、円を動かすコードは、 float x, y, vx, vy, d; void setup(){ size(500, 500); x = width/2; y = height/2; vx = random(1, 3…

  • processingの備忘録 -ベクトル-

    こんにちは。 今回はprocessingで「ベクトル」を扱ってみます。 processingのサンプルコードを見ていたときにまねてみたいものがあり、それがベクトルを使って書かれていたのでこれを機にやってみようと思った次第です。 今回はベクトルの基礎の部分だけをまとめることにして、実際に使ってコードを書くのは別の記事でやることにします。 ベクトルの表し方 processingにおいて、ベクトルを表す型は「PVector」です。 例えば「$\vec{a}$」と「$\vec{b}$」というベクトルをつくりたければ、 PVector a, b; そして、そのベクトルの成分をそれぞれ$\vec{a} =…

  • Rの備忘録 -3次元グラフ-

    こんにちは。 今回は、3次元のグラフをRで描くということをやってみます。 以前に3次元のグラフはRの方が描きやすいかもしれないという話をしましたが、実際にやってみてどれくらい違うのか見てみます。 パッケージのインストール 3次元でグラフを描くにあたって、Rには専用のパッケージがあるのでまずはそれを導入します。 (この時点で楽だということがわかりますが。) Consoleで instal.packages("rgl") と打てば、パッケージのインストールが始まります。 コード中で読み込む際には、 library(rgl) と打てばOKです。 3次元でグラフを描く まずは描きたい関数を決めます。 …

  • Rの備忘録 -基礎-

    こんにちは。 2022年初の更新です。あけましておめでとうございます。(もう2月) 本年も「プログラミングの備忘録」をよろしくお願いします。 さて、今回から「R」に触れてみます。 Rは自分が初めて触れたプログラミング言語でした。それまでは漠然とプログラミングは難しくて高性能な機械や脳が必要なものだと思っていたのですが、いざやってみると想像していたより簡単で、「xはこういう値、yはこういう値…」と世界をつくっていく感覚や、グラフなどを出力して実行結果を可視化することでただの文字列から絵をつくりだせるということがとても楽しく感じました。 (そんなときにprocessingを見つけて、今に至るという…

  • processingの備忘録 -3次元グラフ-

    こんにちは。 今回は、3次元でグラフを描くということをやってみます。 YouTubeにprocessing関連の動画が上がっているのか気になって調べてみたときに「The Coding Train」というチャンネルを見つけました。 その動画をさらっと見てみると自分の興味がありそうなものがたくさんあったので即チャンネル登録しまして、のんびり見てマネしてみているという状態です。 動画は英語なので細かい説明で意味のわからないところはあるかもしれませんが、コード自体は同じ文法なので全くわからないと言うことは無いと思います。ぜひ見てみてください。 その中のひとつで、「Coding Challenge #1…

  • processingの備忘録 -画像、テキストの読み込み-

    こんにちは。 今回はファイルの読み込みの話です。 これまでに画像とテキストの保存方法を取り上げてきました。 taq.hatenadiary.jp taq.hatenadiary.jp テキスト編の最後でも書きましたが、保存ができるようになったら今度は読み込みもできるようになりたいところ。 processingは"お絵かきソフト"なので、画像を取り込んで編集したり、テキストで座標や文字列などを指定して表示したりができないと、せっかくprocessingをやっていてもその本領を発揮できていないということになるかもしれません。 今回はpng、gif、txt、csvの順に読み込み方法を挙げていきたいと…

  • processingの備忘録 -txt、csvの生成-

    こんにちは。 今回は「実行結果の保存 ~txt、csv編~」です。 「txt」はテキストファイルで、Windowsに搭載されている「メモ帳」で編集ができるファイルですので馴染みがあると思います。 「csv」は「comma-separated values」の略で、これもテキストファイルですが「,」で文字を分けることができ、Excelで開くと「,」を境にセルを分けて表示してくれます。 その他、「タブ」で分けられた「tsv」(tab-separated values)や「スペース」で分けられた「ssv」(space-separated values)などもあるようです。 以下では、タイトルにあるよ…

  • processingの備忘録 -顔認識-

    こんにちは。 今回は、顔認識をしてみようというお話です。 今何かと話題の「VTuber」。デジタル世界に自分専用の分身をつくるというのは誰しもやってみたいことだと思います。(個人の感想です) ただそれを専用のソフトウェアでつくるのもいいですが、processingを始めた人なら自分でソフトからつくってみるというのも面白いと思います。 というわけで、「お前もVTuberにならないか?」(言いたいだけ) ライブラリの導入 まずは、今回使うライブラリを導入します。 顔認識用に「OpenCV、カメラ用「Video」を使います。 OpenCVはインテルが開発したというオープンソースのライブラリらしく、か…

  • processingの備忘録 -Android 第2回-

    こんにちは。 processingに関してのAndroid関連の回、2回目です。 前回はprocessingがAndroidでもできるよという紹介だけでした。 なので今回は、実際にプログラムをつくってみようという回です。 processingでAndoridアプリをつくる方法は、パソコン版processingの「Androidモード」とAndroidアプリの「APDE - Android Processing IDE」の2つがありますが、今回は後者の方法でやっていきます。 スマートフォンさえあればでき、コードをいじった後の挙動がすぐ確認できるという点でとても勝手がいいと思います。 やる内容とし…

  • processingの備忘録 -png、gifの生成-

    こんにちは。 今回は「実行結果の保存 ~png、gif編~」です。(もしかしたら今後txtファイルなどもやるかもしれない。) 私事ながらTwitterを始めました。フォローよろしくお願いします twitter.com そこで自分のプログラムを載せたいとなったときに、画像であれば以前に紹介した方法でpngを生成して載せれば良いのですが、動画のときはOBSで撮ったものをmp4で載せていました。 しかしmp4だと重かったり画質が明らかに落ちているので、変えた方がいいなと感じてgifに手を出してみることにしました。 というわけで「gifAnimation」というライブラリを使ってprocessing内…

  • processingの備忘録 -電子軌道-

    こんにちは。 今回は「電子軌道(原子軌道)」を描画してみようというお話です。 電子軌道とは 大学化学の始まりと言えば、おそらく電子軌道の話かと思います。 高校化学までではK殻、L殻、M殻、N殻…という「電子殻」があり、そこにそれぞれ2個、8個、18個、32個…と電子が満たされていくという、いわゆる「ボーアモデル」的な考え方でした。しかし大学化学では、軌道は「量子数」なるものをいくつかもち、それの組み合わせで「波動関数」が決まり、それによってs軌道、p軌道、d軌道、f軌道…など種類があらわれるという考え方です。 さらに、s軌道は1つ、p軌道は3つ、d軌道は5つ、f軌道は7つ…とセットになっていて…

  • processingの備忘録 -Android-

    こんにちは。 今回は、Androidアプリをprocessingでつくる方法について書きたいと思います。 私事ながら最近スマホをXperiaのSO-02GからSO-41Bに買い換えました。SO-02Gは2014年のモデルで、SO-41Bは2020年のモデルなので、6年分の技術の進歩を一気に受け取った形になり、指紋認証でロック解除ができるとか、充電口がUSB-typeCで異物が入ったら勝手に接続を切ってくれる機能がついているとかいうものを体感できて楽しいですし、定価2万円で過去に10万円近かったもの以上のはたらきをしてくれるので進歩を感じました。 中でも大きかったのがAndroidバージョンが6…

  • processingの備忘録 -万有引力-

    こんにちは。 今回はprocessingに「万有引力の法則」を導入して、惑星の運動のシミュレーション的なものをつくっていこうと思います。 万有引力の法則は、「全てのものは引き合っている」という物理学者のアイザック・ニュートンで有名な法則で、 $$ F=G \frac{Mm}{r^{2}} $$ と表されます。ここで、$F$は物体間にはたらく引力、$G$は万有引力定数、$M, m$は物体の重さ、$r$は物体間の距離を表します。 ではprocessingに導入していきます。 まずは、太陽と地球にあたるものを描いてみます。(実際は直径は100倍くらい違いますし、距離も遠いですが、適当に) void …

  • なでしこの備忘録 -物体の運動・グループ-

    こんにちは。 今回も「なでしこ」に触れてみます。 なでしこでもprocessingのようなウィンドウが表示されるので、お絵かきにも使えます。 ということで、円を動かすということをやってみたいと思います。 マウスの位置に円を描く まずは円を描いてみます。 100,100から200,200へ円を描く 円の座標指定は、その円が内接する四角の左上の座標と右下の座標で指定します。 マウスポインタの位置に描かれるようにしてみます。(割と苦戦しました・・・) オンの間 xyは母艦ハンドルの0,0を窓ハンドル画面座標計算 xは机上マウスX - (xyから「,」まで切り取る) yは机上マウスY - xy rは1…

  • なでしこの備忘録 -基礎-

    こんにちは。 今回は「なでしこ」に触れてみます。 プログラム言語にもいろいろありますが、なでしこでは日本語でプログラミングができるということで、一度くらいは触れてみようと思い今回ブログ化してみた次第です。 今後登場する機会は少ないかもしれませんが、使う努力はしてみます。 今回はなでしこで遊んでみて、その基本的な構造を学ぼうと思います。 本ブログではWindows版の「なでしこv1」を使っています。ブラウザ上で動く「なでしこv3」とは若干異なるようなので、注意してください。 さて、例にならってプログラミングの初めといえば「Hello, world」の表示だと思っているので、やってみます。 ですが…

arrow_drop_down

ブログリーダー」を活用して、taqさんをフォローしませんか?

ハンドル名
taqさん
ブログタイトル
プログラミングの備忘録
フォロー
プログラミングの備忘録

にほんブログ村 カテゴリー一覧

商用