Surprise Language Round #6
EternalDestiny
2012-05-26
Rocoとかいう言語. http://progopedia.com/language/roco/ 低級感がたまらなくある意味楽しかった. 全完ならず.悔しい. 開幕 インタプリンタを落とし,標準入力について学ぶ. 数値ならiin でいいのかー.悩まなくて嬉しい. A.Hexagonal Numbers 2n^2 - nを出力する.iin mul mul 2 sub iout a...
プログラマの適性検査
JavaBlack
2012-05-20
「60%の人間はプログラミングの素質がない」 http://cpplover.blogspot.jp/2012/05/60.htmlhttp://www.eis.mdx.ac.uk/research/PhDArea/saeed/paper1.pdf より. 「プログラミングできる人とできない人との間の深い溝」 http://d.hatena.ne.jp/masatoi/20090707/12469...
SICP 1 Building Abstractions with Procedures
tetsu_miyagawa
2012-05-19
『Sceme手習い』『Scheme修行』と読んで、Schemeの基本的な事が分かった所で、巻末の推薦図書(?)に書いてある『Structure and Interpretation of Computer Programs』を読む事にしました。この本も実際の所Schemeに関する教科書ではないと思いますが、計算機科学の基礎を学べる有名な教科書なので、今後の糧に正に再入門として読もうと思います。日本...
Interpreter パターン
teramonagi
2012-05-09
...ときに良いっぽい。要するにAST(Abstract Syntax Tree)を作るときに使うイメージかな? 以下のコードは例の如くwikipediaにあったコードをC++に書きなおしたもの。サンプルは逆ポーランド記法で記述された足し算と引き算からなる数式を評価するもの。めんどくさかったのでメモリの解放してない。#include #include #include #include #incl...
Perl-5.14 で解析表現文法
tociyuki
2012-04-14
先読み機能付き左選択肢優先の正規表現用 NFA にプッシュダウン・スタックをつけてリエントラントに書き直し、欲張りマッチングの後戻りバックトラッキングを止めにすると、そのまま (Parsing Expression Grammar, PEG と略す) を解釈できるオートマトンになります。 さて、Perl は 5.8 の頃から既にバックトラック抑制機能をもっており、さらに 5.14 の組み込みエンジ...
第4回社内Hadoop勉強会が開催されました。
takigawa401
2012-04-09
先週土曜は社内で不定期開催のHadoop勉強会が開催されました。講師はいつもの@choconeco。今回はHadoopからちょっと離れて「アルゴリズム」がテーマに扱われました。Hadoopは分散処理のアーキテクチャで、1CPUで全て処理するものと同じように実行しようとすると、処理できない、というケースが多発するとのこと。分散処理に向いたアルゴリズムを適切に選択し、Hadoopを様々なシーンで有...
アルゴリズムとデータ構造
give_up_easy
2012-04-09
データやスクリプト解析にちょこっとPerlをいじる程度ですが、興味本位で借りた下記の本が思いのほか分かりやすかった。自分の頭の整理をするために内容をまとめてみました。著書には、分かりやすい図と実際のサンプルコードも記載されているので、本ページはあくまでメモ程度。 【ソート】 最適なソートはケースバイケース。選ぶ基準は、(1)計算量、(2)計算に必要なメモリの量、(3)安定性、(4)プログラムのコ...
Packrat の動作
tociyuki
2012-03-19
ここで使う記号の定義。 例えば、`2_*(3+4)` は、カーソル付き入力文字列を表します。カーソルは文字間に位置し、この場合、2 と * の間にあります。大文字は非終端記号です。例えば、'01234567689' は、終端記号を表し、この文字列に含まれる一文字にマッチします。例えば、"2" は、構文解析器の出力を表します。 例に使う構文は、Ford 氏の論文の...
PostScript風なテンプレートのインタープリタ部の試作
tociyuki
2012-03-13
PostScript のような逆ポーランド記法でロジック部分を記述できるテンプレートは、どんな感じになるのだろうと、興味本位で作ってみました。まだ、テンプレート・コンパイラを作っておらず、Perl の配列にコンパイラの出力を手打ちしないといけません。けれど、そこは逆ポーランド記法の便利さで、機械的に書き直すだけで手動コンパイルできます。 試しに YukiWiki-2.1.3 のブラウズ・ページ・ビ...
AOJ:0087 Strange Mathematical Expression
say_hello_to_okaoka
2012-02-12
逆ポーランド記法の問題now == "-" > num == '-' |cpp| #define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include usin...
The End of Start Haskell
rf0444
2012-02-05
1/28 に、第6回 スタートHaskell に行ってきました! また1週間かかってしまった・・・遅延評価だから仕方がない (キリッ 12章 遅延評価 解説 @imsuten http://www.intransient.info/materials/Programming_in_Haskell_12/Programming_in_Haskell_12.html5.html#landing-sl...
数学記号(sin,cos等)も計算させる(4)
Takurou
2012-02-05
逆ポーランド記法の式に直したならば、もう、計算させるのは楽勝である。/// 開発言語 Microsoft Visual C++ 2010 Express /// Copyright (C) 2012 寅古電気(ココラノProject) All Rights Reserved. #define MAX_BUFFER_LEN 51 /// 計算式の最大文字数 #define MAX_STACK 55 ...
数学記号(sin,cos等)も計算させる(1)
Takurou
2012-02-04
普通の計算式を、逆ポーランド記法の式に変換し、計算するプログラムは出来ましたが、 もし、三角関数を使うことになったら…? 今のプログラムでは、下の計算式は、正常に動作しません。123 * sin( 45 ) 作れば良いじゃないか?! と思って、とりあえず「C言語の数学関数」を照合して関数の種類を数値で返すプログラムを作ってみた。(動作未確認)/// 開発言語 Microsoft Visual C+...
逆ポーランド記法変換&計算プログラム3
Takurou
2012-01-28
このスタック処理関数が無いと、 新しく書き換えた「逆ポー(ry」と、それを「計算するプログラム」だけでは、動作できない…。 以前のスタック処理プログラムを「float型」用と「char型」用に作り変えてみた。/// 開発言語 Microsoft Visual C++ 2010 Express /// Copyright (C) 2012 寅古電気(ココラノProject) All Rights R...
逆ポーランド記法の式を計算する
Takurou
2012-01-22
普通の計算式を、逆ポーランド記法の式に変換しても、 式を式に、変換しただけなので計算式の答えは出てきません。 なら、逆ポーランド記法の式を解析して計算するプログラムを作れば良いじゃないか。 この記事のプログラムと組み合わせることで動作します→http://d.hatena.ne.jp/Takurou/20120122/1327195939/// 開発言語 Microsoft Visual C++ ...
逆ポーランド記法変換プログラム
Takurou
2012-01-21
RPGゲームを作るとすれば、簡易スクリプトを作るはず… 簡易スクリプトと言っても、ある程度、細かく計算が出来ると良いな… と思い とりあえず、普通の計算式を逆ポーランド記法に変換するプログラムを作成してみた。 スタックが2つあるのは、後々、拡張する機能の関係で2つあるのですが、 四則演算だけなら、必要ないですね。/// 開発言語 Microsoft Visual C++ 2010 Express ...
再帰 ユーグリッドのアルゴリズム 前置記法の算術式
kankinkon
2012-01-14
プログラム5.3 ユーグリッドの互除法 x>yである二つの整数xとyの最大公約数は二つの整数yとx mod y(xをyで割った余り)の最大公約数に等しい。 #include int gcd(int m, int n) { if (n == 0) return m; return gcd(n, m % n); } int main(int argc, char *argv) { int M, ...








xibbar
