クラス内にあるtypedefが存在するか調べる

あるクラスにあるtypedefが存在するか否かを調べる方法はないかな? とか悩んでいてTwitterでつぶやいたらフォロワーさんがそれSFINAEでできるよと教えてくれた。SFINAEとは「Substitution Failure Is Not An Error」のことで「置き換えの失敗はエラーになら…

Fortranをはじめてみました

大学でそのうち使う(一応本業は地球物理やってる)よなーとか思いつつFortranを勉強してみることに。コンパイラはgcc系のやつです。本当は最新のFortran使いたかったのですが、学校ではFortran77らしく(過去の遺産の問題でしょうか?...)そっちを勉強すること…

当たり判定の数学(1)~動く矩形~

プログラミングをしているとこの手の当たり判定はよく出会います。 これは単純な矩形どうしの当たり判定でしてもいいのですが、 速度によっては、単純な矩形の当たり判定ではすり抜けるという現象が発生します。それを防ごうという試み。そこであたっている…

対角化可能な行列の0乗

実数(複素数でも良いですけど)の0乗は1になります。では対角化可能な行列ではどうなのか?単位行列になるのでしょうか?ふと思いつき証明してみることにしました。 ある行列Aを対角化することを考えます。Aは条件より対角化可能なので適当な行列Pを用いて とB…

Haskellでエラトステネスの篩

先日Pythonで実装してみました。Haskellでもできたので書いておきます。 getPrimeList [] = [] getPrimeList (x:xs) = x : getPrimeList [y|y<-xs,mod y x /= 0] getPrimeListN n = getPrimeList [2..n] すごく短いですね。さすがHaskellです。まずgetPrimeL…

三角関数との積の積分のテクニック

最近数学の話題が多いですね。プログラミングを期待している人(いるのか?)ごめんなさい。 微分方程式の解き方で演算子法のとこで出てきました。この三角関数との積の形の積分を簡略化する方法自体はそこだけではなくいろいろなところで使えるなとか思ったの…

畳み込み積分のフーリエ変換(メモ)

くだらないところでつまずいていた。が、もしかしたら他にもつまずく人がいるかもしれないと思いメモしておく。 畳み込み積分とは で定義される積分だ。このとき となる。これの証明をしめす。 ここまではいいと思う。ここで の部分を考えよう。数学的なこと…

地磁気双極子の地軸からのずれをもとめてみる

地磁気双極子(地球の中心に棒磁石があると仮定した場合の棒磁石にあたるもの)は地軸(地球の回転軸)から若干ずれています。今回はそれからどれだけずれているのかを求めてみようという記事。といっても完全に理論値から求められるわけではなくIGRF(国際標準地…

Pythonで関数型言語っぽくエラトステネスの篩

最近関数型言語始めようと「すごいH本」買ってHaskellはじめました。が、いかんせん文法なれない...そこで概念を理解しているというか多少は慣れてるPythonでいろいろ実装してみてます。その第一弾。エラトステネスの篩。なぜこれか?実はサークルのC++講座…

gvimで:sh で開くシェルを変える

普段僕はWindows上でgvimを使っているわけですが、シェルはcygwin起動してほしい...とか考えて調べてみたら案の定ありました。 set shell=c:\cygwin/bin/mintty.exeみたいに.vimrcでshellで指定してあげれば良いみたいですね。これで開発がはかどる。

サークルでポインタを教えてきた

僕の所属しているサークルの新入生向けのC++講座(C++を教えるのが最適かという質問はなしの方向で)で先日ポインタを教えてきた。その時にどうやって教えたのかやどういう反応が返ってきたかをメモとして残しておく。 よくある「この教え方がいい」みたいなの…

HSPでユーザ定義関数の引数にほぼ何でも渡す

HSPは他は型があってないようなものなのになぜか関数や命令の定義のときだけ型を要求されて非常にやりにくいです。そこでなんでも渡せるようにしてみました。とはいってもまだ参照というか変数を渡す実装はできていないのですが... アイディアとしては単純で…

単純なモデルでは地球の重力は地球の中心の一点に集中していることの証明(メモ)

高校物理で計算しているとき地球の重力は地球の中心の一点に集中していると考える。今回はこれを証明してみようと思う。(実は地球物理の授業ででてきて式を写しているだけでは頭に入らなかったのでまとめるという意味もかねている。 次のような問題設定をす…

intとunsigned int のキャスト検証

サークルで以下のようなC++のコード(一部改変。)が話題になった int hoge=-1; if (hoge<=strlen("hoge")){ std::cout<<"Hoge"<

関数で複数の返り値(戻り値)を返すのをラムダ式でする

C++03までは関数で複数の返り値を表現する際は配列を利用するしかありませんでした。ただその場合は返り値専用の配列を利用するので返り値をわかりやすい名前の別の変数に代入するときやそのまま出力して終わりなどという時は若干無駄なことをしてる感じがあ…

指数関数の性質の考察

指数関数は応用上実数だけではなく、複素数や行列にまで拡張されます。その際多くはテイラー展開を利用することが多いと思うのですが、もっと単純な指数関数である条件だけでうまく指数関数の性質を表すことができないか?一体何が本質的なのだろうか?という…

C++でTDDを始めてみた。

最近よくユニットテストやらTDDやらの単語をよく聞くようになった。いままでだるいな(LLでは標準でサポートされていることも多いがC++の場合そうではないので)と思いつつしていなかったのだが、こないだ思い切って始めてみることにした。環境の導入やそのと…

hspinetでJSONをいじる

HSP3.3からhspinetにjsonを読み書きする機能が追加されました。解説があまりネット上で見つからなかったので調べて書いてみます。パースするJsonは以下のような形式です。 { "Data": { "value": 3, "str": "Hello", "info": [ {"id": 1, "name": "Alice"}, {…

Boost Property Tree LibraryでXMLをいじってみた

今作っているRPGのアイテムのデータをXMLで表現しているのですが、それを読み込む部分で何にしようかなと思いBoostを使ってみました。ということでメモも兼ねて記事を書いておきます。パースするXMLは以下のような形式(ある程度簡略化)です。 <ItemList> <Item name="hoge"> <Script>hogehoge.lua</Script></item></itemlist>…

同じものでも分野が違えば価値も違う

今日オフ会で国立科学博物館に行ってきました。そこでヒザラガイがあってそれについて話したときのこと。 ちなみにヒザラガイっていうのはこういうものです。 地球科学を若干かじっている僕にとっては「海のそれも潮間帯という狭い領域にいて、過去(オルドビ…

Luaの標準ライブラリをCやC++から呼び出すときの注意(メモ)

luaのみを使っている場合標準ライブラリは特にimportやらincludeやらをしなくていいのであんまり意識しない。んでC++から呼び出したときも同じ感じで特に何も指定せずでできるのかなと思ったらエラーを吐いた。 luaL_openlibs(L); という一行を入れなくては…

&演算子のオーバーロードの罠

予想外のエラーがでて悩んでいました。なぜかオーバーロードしたものではなくデフォルトの自分自身のポインタを返すoperator&が呼ばれてしまう... &演算子に限ったことではなくオーバーロードのどの関数が呼ばれるかという問題であることに気づきました。 エ…

Qt SDKを導入してみた

簡単にC++でGUI作れるフレームワークとかないかなと探していたらQt(キュート)なるものを見つけました。ということで導入してみます。 とりあえずQtの公式ホームページにいき、ダウンロードからインストーラを落とします。僕は開発ではwindowsを使っているの…

TeXのマクロでFizzBuzz

TeX

昨日TeXは「チューリング完全性を備えた関数型言語でもある。」というツイートを見かけました。普段レポート書く程度にしか使っていないのですが、これは面白そうだということで調べてみました。どうやらマクロを使ってできるみたいですね。メタプログラミン…

暗黙のインターフェースにconstを強要させる

テンプレートで静的ポリモーフィズムを実現するために暗黙のインタフェースを利用します。しかしこれは明示的なインターフェースと違い、引数がconst、あるいはインターフェースがconstメンバ関数かどうかまで通常指定することができません。しかしconstは便…

vimのスマートインデント(オートインデント)のカスタマイズ

vim

いつもスマートインデント(オートインデント)が不便だな~とか思っていた。というのもタブ幅を4に設定しているのにもかかわずスマートインデントされるときは8になってしまう。結局スマートインデントしてもらってもxを押す(削除)必要があって激しくだるい。…

ブログ移転のお知らせ

はてなブログのほうに移行しました。 http://hogespace.hatenablog.jp/

自作パズルゲームの可解性についての考察(1)

昔(たぶん2年前になるのかな?)に部活の新入生歓迎会にPythonの勉強がてらパズルゲームをつくりました。作ったのはいいんですが、どんな場合でも解けるか否かってのが自明ではなく、気持ち悪いのでときどき思い出して解けることの証明に取り組んでいます。結…

はてなブログに移行しました。

はてなダイアリーからはてなブログへ。アクセス解析がうれしいのでここらに。最近移転ばっかですね。たぶんこれで落ち着くかと。 ちなみに前のブログはこちら→http://d.hatena.ne.jp/ikaro1192/

2011年を振り替えって

今年は色々とありました。3月までは受験でした。前期で落ちてしまい...後期で奇跡的に受かってましたが。受験に関しては先生、友人にとても感謝しています。先生は休みの間もメールで質問に答えて頂いたり添削までしてもらえて。本当にいい先生方たちでした…

Σa[n]=1のときのΣa^2[n]の最小値についての考察

昔に思いついたことだが、どこにも書いていなかった気がするので書いておく。 ふつうはラグランジュの未定乗数法を用いてとけばできそうな気がするが、いまいちエレガントな気がしない。もっとスマートに解けないだろうか?そこで図形的にどういう意味を持つ…

リストを実装してメモリエディタで遊んでみる。

今回は解説というより半分遊びなので口調がいつもと違うかも。 標準STLばっか使っててデータ構造何一つ実装したことないので双方向リスト(実質単方向だけど)リスト実装してみた。とりあえずソースコード。 //list.h template <class TType> class List{ private: List* Ne</class>…

チートツール(メモリエディタ)でメモリ内を覗いたり書き換えたりして遊んでみた

プログラミングをしていても、イマイチポインタやメモリ構造、オーバーフローが理解できないし、イメージしづらいてってのがありました。んで、じゃあメモリをのぞいてみようということで。それが手軽にできるツールがメモリエディタです。普段はゲームのチ…

【メモ】C++でポインタの動的配列

確保するときに悩んだのでもしかしたら需要あるかなと思って書いておく。 ポイントはポインタのポインタにするところとnew hoge*[10]みたいに*を型の後におくところ。最初 new *hoge[10]みたいにしてて上手くいかなかった。あくまでhoge*を10個確保するとい…