Project Euler 26
どんな数の循環かを判断させるのは
すぐには思い浮かばなかったです。。
余りをいい感じに使ってやったらできましたね。 http://codepad.org/1VFu4pdz
main()関数が少ない行で書けるのは気持ちがいいですw
Project Euler 25
1000桁というのにつまづきましたね。。
多倍長ライブラリを紹介してもらって、Ubuntuを導入してたら
その時見事にメモリが壊れました・・・w
結局GMPはあきらめて配列(要素数1000)の要素1つひとつを
桁と見て、計算させました。 http://codepad.org/c8unuD0N
Project Euler 24
0から始まって連続する数列、なら順列を作ることができる
コードを書くことができましたw
ホントダメですね。。
まぁ、とりあえず通ったってことで・・・w http://codepad.org/2cpYfFgx
ちなみに100行超えてますorz
順列生成コード。
えー、メモリが壊れOSが起動しなくなり、
なおすことに専念したくなり勉強にも集中できない感じですはい。
いまは別マシン使ってます。
学校の課題でこんなものが出題されました。
数の並び「123456789」について、数と数の間に、任意に「+」「-」
を入れて、式の値が「100」になるものをすべて見つけなさい――
個人的にかなり難しいです。
友人のアルゴリズムが良い感じなので紹介すると、
すべての数の間(8ヶ所)に「つなげる」「左右を足す」「引く」を
あらわす数字を入れる
というものです。
順列を生成できればいけるらしいので、
生成コードを書いてみました。 http://codepad.org/HHH5fH5t
と言ってもこれでは解けないことに気づきました・・・w
配列内に同じ数があるとループが止まらないという。。
ここまでいけたなら、なおすとこは少ないと思うんですが、
1日をこのコードのために使ってしまいました・・・w
テスト勉強をしないといけないのです。。
物理やばいです。落とす可能性大です。
明日のために今日は休むとします。
ではまたテスト明けに。
単方向リスト構造。
こないだの不具合は直りました。
ほんとは不具合でもなんでもないんですけどね・・・w ただの勘違いです。
getche()関数は、なんでも一文字の入力が行われたら
終了するようです。Enterキーが押されるまでgetche()は
終了しないものだと思ってましたw
放送中、リスナーさんが問題を作ってくれました。
練習問題1.入力された文字をリスト「先頭」に追加するプログラムを作成しましょ――
今回は文字列の場合も考えなくてはいけなかったのですが、
さっきまでやってたやつを、手直しすればすぐ終わるじゃん。
なんて思ってたら、そうはいきませんでした・・・。
というか、簡単なミスをいくつかしていてつまづいていた
なんていう感じで恥ずかしいです・・・w
配列(a)から配列(b)へ、中身をまるごとコピーしようとして、
b = a;
みたいに書いてたなんてなんという初心者・・・w←
こんな感じですが、ひとつだけ重大なバグが残ってるので、
明日にでも取り除きたいです。
あっ、そのうちEuler再開します。
では。
単方向リスト構造。
神経衰弱が完成してから、C言語の勉強のつづきをしてました。
今日からリスト構造について勉強しています。
構造体・ポインタくらいまで終わってからは、
C言語入門(http://goo.gl/T6fxB)さんを参考にさせてもらってます。
ここはC言語を深く勉強するのにいいところではないかと思ってます。
サンプルコードが置いてあったり、
練習問題が解答付きで置いてあるのは嬉しいですね。
リスト構造が、コーディングするとどんなもんなのかよく
わからないので、とりあえず書いてみました。 http://goo.gl/T6fxB
関数のプロトタイプ宣言をした時、宣言した数に驚きましたw
関数を15個使うプログラムなんて組んだことがないので・・・w
400行書きました。正直多いです。行数が。
実行してみると、入力待ち。とりあえず英字を入力してEnterキーを押す。
本来なら、数字が入力されるまでに入力された英字を全て記憶しておいて
数字が入力された瞬間に、英字が表示されるはずなんですが(コーディング中に思った)。、
英字を1つ入力したらプログラムが終了するなど、
意図しない動作をするんですよ。。
入力ミスという指摘を頂いたので、もっかいコードを見直してみようとおもいます。
400行のデバッグはホントはつらいし、面倒なんですけどね・・・w http://codepad.org/fzhn6sgi
では、今日はこれで。