砂場で遊ぼう

c++/python/mathematica などの練習帳

mathematica

Project Euler 184 / 原点を含む三角形

問題概略 グループ分けして数える Σの簡約 mathematicaによる実装 問題概略 原点を中心とする半径 の円の内部にある格子点 の集合を であらわす。 \begin{align*} I_r=\{(x,\, y)\ |\ x^2+y^2 \end{align*} は , , , (複号任意)の 9 点からなる。 の点を頂…

Project Euler 227 / The Chase

問題概略 漸化式の立式 6人のとき mathematicaによる解答 問題概略 "The Chase" とは 2 つのサイコロと偶数人のプレイヤーによって行われるゲームである。各プレイヤーはテーブルのまわりに座っている。 対面にいるある 2 人のプレイヤーがそれぞれ 1 つのサ…

Project Euler 102 / 三角形の包含

問題概略 ベクトルの外積 外積その1 外積その2 外積その3 面積 組み込み関数RegionMember 問題概略 3 つの異なる点が , かつ三角形となるように平面上にランダムに与えられる。 次の 2 つの三角形を考える。 \begin{align*} &\rm A(-340,\, 495),\, B(-153,…

Project Euler 143 / 三角形のトリチェリ点

問題概略 余弦定理→整数のパラメータ表示 整数の組を数える FindCycle で長さ 3 の閉路を探す 隣接リストを使う ループさせない 隣接リストを FixedArray で作る 隣接リストへの要素の追加はまとめて行う 要素数 1 の隣接リストは調べない 最終結果 問題概略…

Project Euler 170 / 連結された積が0から9までのパンデジタル数になるパンデジタル数の最大値

問題概略 右から攻めるか左から攻めるか 実例を 1 つ探す 分割数などをしぼりこむ 高速化のための微調整 a は 3 の倍数 a は 50 未満 再計算 問題概略 6 を 1273 と 9854 にかけると次のようになる。\begin{align*} &6 \times 1273 = 7638\\ &6 \times 9854 …

Project Euler 175 / ある数を2のべき乗の和として表せる方法の数の比

問題概略 カルキン・ウィルフ・ツリー 手計算で解ける mathematica で解く 問題概略 整数 を 2 のべき乗の和で表すことを考える。ただし各数は高々 2 回しか使ってはいけないものとする。この表し方の数を とする。 と定義する。たとえば 10 には 5 通りの異…

Project Euler 176 / 隣辺を共有する直角三角形

問題概略 n の約数の個数の条件 n が奇数のとき n が偶数のとき n の素因数分解 問題概略 辺の長さが , , , の 4 つの直角三角形はすべて隣辺(直角に隣接する辺)として長さ 12 の辺をもっている。 長さ 12 の隣辺をもつ整数辺の直角三角形はこれら 4 つだ…

Project Euler 169 / ある数を2のべき乗の和で表せる方法の数の探査

問題概略 2 進法表示の桁数字に注目 実装 python で解く mathematica で解く 問題概略 整数 を 2 のべき乗の和で表すことを考える。ただし各数は高々 2 回しか使ってはいけないものとする。 この表し方の数を とする。 と定義する。例として を考える。 \beg…

Project Euler 304 / Primonacci

問題概略 どう解くか 素数は NextPrime で処理 フィボナッチ数は MatrixPowerMod で処理 実装 並列処理 前の項を使い回す 問題概略 より大きい最小の素数を であらわす。 これを用いて を次のように定義する。 また,次の式をみたすフィボナッチ数 を用いて …

Project Euler 199 / 反復円充填

問題概略 パターンを見抜く デカルトの円定理 計算に使う関係式 python と mathematicaで実装 python で解く mathematicaで解く 問題概略 半径が等しくて互いに外接する 3 つの円が大きい円に内接している。 この図形がもつ 4 つのすき間を円で埋める操作を…

Project Euler 209 / 循環論法

問題概略 何を求めればいい? mathematica で実験 実はリュカ数列 実装 mathematica python 問題概略 入力の 2 進真理値表は 個の入力ビット(2 進数で 0 は「偽」,1 は「真」)から 1 個の出力ビットへの写像である。 たとえば論理和(AND)と排他的論理和…

Project Euler 200 / 連続する部分文字列に200を含む耐素数性スキューブ

問題概略 mathematicaで解く pythonで解く 問題概略 (, は異なる素数)で表せる数をスキューブ(sqube)と定義する。 , はスキューブである。 最初の 5 つのスキューブは 72, 108, 200, 392, 500 である。200 はどの位の数字を変更しても素数とならない最小…

Project Euler 186 / ネットワークの接続性

問題概略 mathematica で解く 首相を含む部分集合の大きさを計算 グラフの連結成分を求める python で解く 通話記録の中身はどうなってるか 問題概略 100 万人のユーザをもつ電話システムの通信記録がある。 RecNr Caller Called 1 200007 100053 2 600183 5…

Project Euler 329 / 素数カエル

問題概略 条件つき確率 メモ化再帰 python で解く 問題概略 素数カエルは 1 から 500 までの番号がついた 500 個の正方形の上を跳びまわる。 左右のいずれかの正方形に等確率で跳ぶことができ,正方形外に跳び出すことはない。 1 か 500 に着地した場合,次…

Project Euler 686 / 2の累乗数

問題概略 をとって評価 だけで評価 の候補をしぼりこむ 階差の候補は3つだけ コードに落とす 未証明の解法=嘘解法 問題概略 は 12 からはじまる最初の 2 の累乗数であり,2 つ目は である。 からはじまる 2 の累乗数のうち小さい方から 番目の数を とする。…