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

さんぽみち

なにか思いついたときとかに気まぐれに更新されます。

アルゴリズム

Java Decoratorパターンが何かに似ていると引っかかった

はじめに 今回はGoFデザインパターンの一つである "Decoratorパターン" について考察します。 なぜ Decorator であるかの理由は、最近たまたま出てきて引っ掛かりを覚えたからです。 ごちゃごちゃした内容になります。 2016/07/29大部分修正 下書きで保存し…

C# 定数関数(遅延評価)のキャッシュ

はじめに 遅延評価に定数関数を用いることが結構ある毎日です。 定数関数が副作用を含んでいない時に何度も評価するのは意味がなく無駄に感じます。 そこで、こんな悩みを解決する方法を今日思いついたので紹介したいと思います。 何も考えない時の実装 評価…

C#で Project Euler P10

問題 Problem 10 「素数の和」 10以下の素数の和は 2 + 3 + 5 + 7 = 17 である. 200万以下の全ての素数の和を求めよ. Problem 10 - PukiWiki 方針 C#で Project Euler P3 - さんぽみち で作成した素数生成器を使って足していくだけ。 解答 using System; usi…

C#で Project Euler P9

はじめに 方針を書いてますが、あくまで方針であり証明などは省いてます。 気になる方はgoogle先生に聞くと答えてくれるので聞いてみてください。 問題 Problem 9 「特別なピタゴラス数」 ピタゴラス数(ピタゴラスの定理を満たす自然数)とは a < b < c で以…

C#で Project Euler P8

はじめに ソースの前に、簡単な方針を今回から書きます。 問題 次の1000桁の数字のうち, 隣接する4つの数字の総乗の中で, 最大となる値は, 9 × 9 × 8 × 9 = 5832である. 73167176531330624919225119674426574742355349194934 969835203127745063262395783180…

C#で Project Euler P7

問題 Problem 7 「10001番目の素数」 素数を小さい方から6つ並べると 2, 3, 5, 7, 11, 13 であり, 6番目の素数は 13 である. 10 001 番目の素数を求めよ. Problem 7 - PukiWiki 解答 using System; public static class P7 { public static void Main() { Co…

C#で Project Euler P6 別解

はじめに C#で Project Euler P6 - さんぽみち の効率のいい方法を見つけので実装しました。 どう考えてももっと早くなりそうだったのでちゃんと考えました。 手続的な実装というよりも一般項を求めることがメインです。 問題 Problem 6 「二乗和の差」 最初…

C#で Project Euler P6

問題 Problem 6 「二乗和の差」 最初の10個の自然数について, その二乗の和は, 12 + 22 + ... + 102 = 385 最初の10個の自然数について, その和の二乗は, (1 + 2 + ... + 10)2 = 3025 これらの数の差は 3025 - 385 = 2640 となる. 同様にして, 最初の100個の…

C#で Project Euler P5

問題 2520 は 1 から 10 の数字の全ての整数で割り切れる数字であり, そのような数字の中では最小の値である. では, 1 から 20 までの整数全てで割り切れる数字の中で最小の正の数はいくらになるか. Problem 5 - PukiWiki 解答 P5.cs using System; public s…

C#で Project Euler P4

問題 左右どちらから読んでも同じ値になる数を回文数という. 2桁の数の積で表される回文数のうち, 最大のものは 9009 = 91 × 99 である. では, 3桁の数の積で表される回文数の最大値を求めよ. Problem 4 - PukiWiki 解答 using System; public static class …

C#で Project Euler P3

はじめに P2はフィボナッチ数列の級数に関する問題だけど、問題に魅力を感じなかったので飛ばしました。 で、僕としては好みなP3をやります。 そういや問題には直接関係ないけど、C#って末尾再帰の最適化してくれないのね。。。 再帰的に書こうと思ってたけ…

C#で Project Euler P1

はじめに 暇だったのでやってみた。 本家 : About - Project Euler 日本語: Project Euler - PukiWiki テンプレート using System; public static class P { public static void Main() { Console.WriteLine(Calc()); } private static int Calc() { } } …

C# 続・メソッドチェーンしたくて仕方なかった

はじめに 前回の続きです。 前回 C# メソッドチェーンしたくて仕方なかった - さんぽみち これを拡張したり根本的に変えたりしたら面白いものができたので記事にしてみます。 前回のあらすじ メソッドチェーン楽しい ↓ 途切れさせるやつ大っ嫌い ↓ チェーン…

Haskellの勉強 その3 : genD, gcdex

Haskellの学習として、RSA暗号を実装してC#と比較しながら勉強していく。 今回は主に拡張ユークリッド互除法についての実装。 Haskellの再帰的な記述方法が中心。

比較演算を行わないバブルソート

はじめに とりあえず何か書きたかったので、一発ネタで前に作った比較演算を行わないバブルソート。 だいぶ前に書いたので今見ると無駄が多い!! 全体を通して言えることだけども、数字に 1 を掛けると変化せず、 0 を掛けると 0 へつぶれることを利用して…