nまでの整数を二つの組に分けて合計した結果が同じ時のnについて見つけた法則

私以外、誰も楽しくない話題ですが・・・

前回のエントリで、

出力された値を眺めていたら、どうも法則があることが分かった。

3は例外として、それ以降の値については、常に前回値×6-(前々回値-2)となるっぽい。

多分、知っている人には当たり前の事なんだろうなと思いつつ。

パズル:nまでの整数を二つの組に分けて合計した結果が同じだった2番目と3番目を出力する その2 – NAL-6295の舌先三寸

という法則を見つけて

N¥tiny nを任意の整数とし

N¥tiny 0¥large =-1

N¥tiny 1¥large =0

としたとき、

N¥tiny n+1¥large=N¥tiny n ¥large 6-(N¥tiny n-1 ¥large -2)

となる。

としていたが、どうも、会社の人に教えてもらったペル数列という数列の偶数番目の時の総和が同じだと言うこともわかった。

ペル数列というのは、

ペル数(ぺるすう、Pell number)は自然数で、n番目のペル数を Pn とおいて以下の式で定義される数列にある項のことである。

P¥tiny 1¥large =1

P¥tiny 2¥large =2

P¥tiny n¥large=P¥tiny n-1 ¥large 2 + P¥tiny n-2

ペル数 – Wikipedia

というものらしい。

で、数列自体は

1, 2, 5, 12, 29, 70, 169, 408, 985, 2378, 5741

となる。

nが偶数の時の総和が

1+2=3

1+2+5+12=20

1+2+5+12+29+70=119

といった具合に、このパズルの正解と同じになる。

とはいえ、なんでそうなのかをコンピュータによる実証以外に証明する事ができないので、ドラクエで言うと、まだ冒険の書を作ったところ。

いや、冒険の書すら作れていないのか。

月曜日には飽きていそうだけど、高校を普通科か理数科にしておけば良かったな。

FacebookTwitterHatenaTumblr共有

試しにサンプルアプリにはてブアイコンを追加してみた。

下記の記事でアップロードしてあったサンプルアプリにはてブアイコンを追加してみた。

ブログとは違ってurlが可変じゃないから、ただリンクを貼っただけだから簡単なんだけど。

過去の記事で下記のようなものを作成した。

このサンプルの見た目を、JavaScriptやCSSの勉強もかねて、デザインだけ変更してアップしてみた。

あと、

・入力検証

・ログインしなくてもゲストとして使える

という仕様変更を行った。

http://nal6295test.appspot.com/

やっとアプリケーションをデプロイできるようになったので、過去のサンプルをアップしてみた – NAL-6295の舌先三寸

パズル:nまでの整数を二つの組に分けて合計した結果が同じだった2番目と3番目を出力する その2

問題:1からnまでの整数を二つの組に分けて合計した結果が同じだった2番目と3番目を出力する。

パズル:nまでの整数を二つの組に分けて合計した結果が同じだった2番目と3番目を出力する – NAL-6295の舌先三寸

出力された値を眺めていたら、どうも法則があることが分かった。

3は例外として、それ以降の値については、常に前回値×6-(前々回値-2)となるっぽい。

多分、知っている人には当たり前の事なんだろうなと思いつつ。

数式にするとこんな感じ?勉強していないので表記が間違っているかもしれませんが・・・

N¥tiny nを任意の整数とし

N¥tiny 0¥large =-1

N¥tiny 1¥large =0

としたとき、

N¥tiny n+1¥large=N¥tiny n ¥large 6-(N¥tiny n-1 ¥large -2)

となる。

初めて、texというのをつかったけど、こんなんで良いのかな?

間違っていたら教えてください。

でも、なんで成り立つのか分からないな。

03
20 3*6-(0-2)
119 20*6-(3-2)
696 119*6-(20-2)
4059 696*6-(119-2)
23660 4059*6-(696-2)
137903 23660*6-(4059-2)
803760 137903*6-(23660-2)

というわけで、プログラムに反映してみた。

ついでなので、仕様もintの範囲で該当する数字全てにしてみた。

public void nまでの整数を二つの組に分けて合計した結果が同じだった数字リスト()
{
Console.WriteLine(3);
int 前回の値 = 3;
int 前々回の値 = 0;
while ((long)前回の値 * (long)6 <= int.MaxValue)
{
int 今回の値 = 前回の値 * 6 - (前々回の値 - 2);
Console.WriteLine(今回の値);
前々回の値 = 前回の値;
前回の値 = 今回の値;
}
}

前のコードだとぜんぜん終わらなかったのに、一瞬で終わるようになった。

当たり前か・・・。

カテゴリー: C#

パズル:nまでの整数を二つの組に分けて合計した結果が同じだった2番目と3番目を出力する

問題:1からnまでの整数を二つの組に分けて合計した結果が同じだった2番目と3番目を出力する。

public void nまでの整数を二つの組に分けて合計した結果が同じだった2番目と3番目()
{
//Enumerable.Select().Sum()は使わない方向で
Func<int, int, int> xからyまでの計 = (int x, int y) => ((x + y) * ((y - x + 1) / 2)) + (((y + x) / 2) * ((y - x + 1) % 2));
Func<int, bool> nまでの数字を二つの組に分けて合計した結果が同じ = (int n) => Enumerable.Range(n / 2, n - (n / 2))
.Where(分ける数字 => xからyまでの計(1, 分ける数字) ==
xからyまでの計(分ける数字 + 1, n))
.Select(x => x).Count() > 0;
int[] 該当するnのリスト = Enumerable.Range(2, int.MaxValue - 2).Where(n => nまでの数字を二つの組に分けて合計した結果が同じ(n))
.Select(n => n)
.Take(3).ToArray();
Console.WriteLine("no2:{0},no3:{1}", 該当するnのリスト[1], 該当するnのリスト[2]);
}

FireFox3が固まりすぎる

ちょっと、ブログを巡回していたら、特定のブログで毎回応答が無くなる。他のブラウザなら大丈夫なので、諦めるんだけど、少しもったいない。

他にも、突然固まることが多い。

まぁ、出たばかりだから仕方ないのかな。

カテゴリー: Tool

犯罪予告由来の犯罪なんて微々たるもの

犯罪予告由来の犯罪なんて微々たるもの。

そもそも、予告してから罪を犯すなんて、お人よしもいいところで、

「なんてネット上は平和なんだ。」

と思う。

ほとんどの犯罪は、予告なんてしないだろうし。

予告の大半は狂言であることが多い。

当たり前だけど、予告が無い犯罪のほうが防ぐのが難しい事は誰でも分かっているわけである。

その状況で、どうして「予告犯罪」と「ネットの危険性」を同じ文脈で語ろうとする記事があるのか疑問に思う。

割り箸と樹脂製の箸

近々、すかいらーく系列のお店が割り箸をやめて樹脂製の箸を洗浄して使う事にするらしい。

果てして、

端材や、森林の木が腐らないように伐採した木材から作った割り箸を利用するのと、

新しく樹脂製の箸を作って、それを洗剤で洗浄して繰り返し使うのと

一体どっちの方が環境負荷が高いのだろうか。

分からない。

説明する人によって違う意見がある状態みたいだし。

でも、何もしないよりは、一時は間違っていても試行錯誤しながら続けていくほうが、よりよい方法に向かっていけるので良いのでしょうね。

厚顔無恥

府労連の交渉は20日午後10時すぎに開始。皮切りから新居晴幸委員長と橋下知事の論戦となった。「どうしても削減案を撤回できないなら、(カット率を)圧縮してほしい」。妥協点を探ろうとする新居委員長に、橋下知事が「今は財源がないので、それはできない」と答えると、「あなたは権力者。国から(財源を)取ってくればよい」と新居委員長。「私は国政には権力はない」「国から金を取るのが知事の仕事」などと、応酬が延々と続いた。

橋下大阪府知事 人件費削減巡り組合と交渉11時間、決裂(毎日新聞) – Yahoo!ニュース

「自分たちの給与のために、国から金取ってこい。」なんて、よく言えるなぁ。

やっとアプリケーションをデプロイできるようになったので、過去のサンプルをアップしてみた

過去の記事で下記のようなものを作成した。

このサンプルの見た目を、JavaScriptやCSSの勉強もかねて、デザインだけ変更してアップしてみた。

あと、

・入力検証

・ログインしなくてもゲストとして使える

という仕様変更を行った。

http://nal6295test.appspot.com/

最初に、サンプルアプリの仕様を説明

概要:

・1からインクリメントしながら番号を表示し、3の倍数と3の付く数字のときに別の文字列を、5の倍数のときにも更に別の文字列を表示する。

・終点となる番号が設定できる。

・3の倍数と3のつく数字のときに読み上げる文字列を設定できる。

・5の倍数のときに読み上げる文字列を設定できる。

・設定した値はユーザ毎に永続化される。

・アプリケーション名は世界の○○とする。○○のところはユーザのnicknameを設定したい。

・formのvalidationについては、今回は行わない。(本当は行う必要があるので、次回以降のエントリで機能追加します。

DJangoのテンプレートを利用したサンプルアプリの作成 – NAL-6295の舌先三寸