info

自作CPUのメモ

自作CPUのメモ 頓挫中: NTSCでテレビに出力できる程度の性能をもった8bitCPU Apple2を参考にシフトレジスタで16種類の信号を出せるようにする ATARI2600のTIAを参考にラインバッファに書き込み終わったらHLTで割り込みを待つ 課題: タイミング発生のためにカ…

DirectX習得後これ再現する http://kioku.sys-k.net/4kgfxmon/ビンゴカード問題やる http://blog.jnito.com/entry/2015/03/06/090106自分はどんなタイプか知り、そのタイプの成功体験を吸収する。目的は自己肯定感を上げること。

Rubyで同人サークル頻出単語調べてみた

http://csqr.org/news/20150207-CircleName.html これのソースが公開してないのに怒りが湧いてきたから書いた。次のバージョンはユーザー定義辞書を使ってみる http://qiita.com/ynakayama/items/388c82cbe14c65827769

「プログラミング作法」のマルコフ連鎖アルゴリズムをRubyに翻訳してMeCabを使って日本語対応してみた

日本語版 分かち書きのみ、コードゴルフ版 lambda_driverでうまくmapにシンボルを渡せなかったのでgive4eachを使った メソッドチェーンのワンライナーはうまく改行してDSLっぽくすると読みやすいかも

隙あらばinject、inject小技集

ruby 2.0.0p5981から10の数を足し合わせた時、途中の状態の数列が欲しい。 (1..10).inject(nil) do |(acc, arr), i| #引数マッチング next [i, [i]] if arr.nil? #injectの初期化 [acc + i, arr << acc + i] #次の(acc,arr)に入る end [55, [1, 3, 6, 10, 15…

書籍「7つの言語7つの世界」Io言語2日目セルフスタディ

http://github.com/yppp/sevenlang二次元配列の総和 dim2sum := method(n, n flatten sum) dim2sum := method(n, n prepend(0) reduce(x, y, x = x + y sum)) Listに自分で定義した平均を求めるメソッドを追加、数字以外が混ざっていたら例外を投げるように …

書籍「7つの言語7つの世界」Io言語やってみる

フィボナッチ数 fib := method(n, if(n < 2, n, fib(n - 1) + fib(n - 2)) ) Io> fib(10) ==> 55 ループ版 fib := method(n, fir ::= 0 sec ::= 1 tmp ::= 0 n repeat( tmp = sec sec = sec + fir fir = tmp ) fir ) fib(31) println 分母がゼロの時答えがゼ…

書籍「7つの言語7つの世界」Rubyの章の最後の問題

method_missingテクニックを使って、CSVの一行目にある物をメソッド名にしてあとの二行をその列にある物を表示させる、attr_accessorもこんなふうに実現してるのかなあgithubにリポジトリつくったよ http://github.com/yppp/sevenlang # -*- coding:utf-8 -*…

書籍「7つの言語7つの世界」でRubyの章を読み飛ばそうと思ったけど、一部の問題だけ解く

配列をハッシュにしろ [1,2,3].zip([[4, 5, 6],5,6]).inject(Hash::new){|x, y| x[y[0]] = y[1]; x} 配列が入れ子じゃなかったら Hash[*[1,2,3].zip([4,5,6]).flatten] 16個と4個の配列を4個と1個づつで表示させろ eachを使って te = Array::new(16){|x| x} …

RubyでBrainfuck処理系作ってみた

意味無いと思うけどジャンプテーブル構築時についでに命令文字をシンボルにコンパイルするようにしてる https://github.com/yppp/brainf_ck # -*- encoding:utf-8 -*- class Brainfuck class ProgramError < StandardError end def initialize(src) @souce =…

Brainfuck言語やってみた

九九を9の段から1の段までASCII文字じゃなく数字として出力 +++++++++ [>+++++++++ [<[>>+>+<<<-]>>>[<<<+>>>-]<.><<-] >[-]<<-]使うメモリの番地 0 出力する段の数 1 足す回数のカウンタ 2 結果になる値 3 コピーのための0番地に戻すテンポラリ領域http://c…

RubyKaigi2011に行ったかんそう

こころにのこったはっぴょう、いくつか parse.yは簡単に改造できる Rubyでなんでも使いこなせると思うには 1.標準ライブラリをさわる 2.きれいなコードを書くこころがけ(副作用がある操作のおすすめはeachよりmap!らしい) 3.gemやRuby本体を改造する matz曰…

scheme(gauche)で世界のナベアツ問題

3がつく数と3の倍数の時だけアホになる(片仮名になる)それ以外は普通に数字を表示 peercastの大会で課題だったので、っていうか就活の課題やれ俺www (use srfi-1) (use srfi-13) (define (unpack x y) (if (= x 0) y (unpack (quotient x 10) (append (list …

luaでメタプログラミング(DSL)

宣言、luaは引数が文字列リテラル、テーブルリテラルだと、括弧が省略できる、ここではgenerateという関数を作っている、ようするに何かを操作する関数を作ればいい generate "iroiro" 文脈依存、luaにはRubyやCommonLispのような、instance_evalのみたいな…

ANTLR、とりあえずS式がパースできるようになった

あとはアクションを書く シンボルの定義が予想以上に文字を食うのでそこらへんに手まどった。 C言語のAPiとか、ANTLR_VECTOR構造体のメンバがわからなかったけど公式ページにドキュメントがあってよかった。 toplevel : s_expr* ; s_expr : atom | list | '\…

Rubyのメモ化をメタプログラミングを使わずにやる

一度は諦めたこの方法でできた def memoize(f) dp = {} lambda {|*arg| dp[arg] || dp[arg] = f.call(*arg)} end def ack(m, n) if m == 0 then n + 1 elsif n == 0 then ack(m - 1, 1) else ack(m - 1, ack(m, n - 1)) end end ack = memoize(lambda{|*arg|…

Arduino買った

LEDピカピカさせた。タクトスイッチをつけて、スイッチを押すたびにLEDのON/OFFが切りかわるやつやった。リアルタイムプログラムの処理はゲームと似た感じだ、1.処理して 2.表示する #define LED 13 #define BUTTON 7 //LEDやタクトスイッチが繋がれてるポー…

2Dゲーム用の重力計算モジュール作った、google test試しに使ってみた

moveable.hh #include <cmath> #ifndef _MOVEABLE_H_ #define _MOVEABLE_H_ namespace moveable { //いろいろな定数値、後でcommon.hに入れてもらう const float PI = static_cast<float>(atan(1.0) * 4); const float RAD = PI / 180;//HACK 30度 = 1/6ラジアン const flo</float></cmath>…

アッカーマン関数+メモ化をいろいろな言語で

wikipediaから数式見て書いた http://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%83%E3%82%AB%E3%83%BC%E3%83%9E%E3%83%B3%E9%96%A2%E6%95%B0 Scheme(Gauche) (ack 4 2)でメモリ1Gほど使ってアロケートエラー(スタックオーバーフローかもしれないけど、わからな…

著作権とかにひっかかるかもしれないけど、適職診断サイトの結果貼ってみる

http://haa.athuman.com/personal_shindan/パーソナリティ傾向 あなたは心の働きが強い部類に入る方です。心の働きが強いと以下に説明される傾向が表れやすく、他者への影響も大きい傾向があります。あなたのエゴグラムの特徴は、どの側面もほどほどの高さで…

luaによる関数型風プログラミング

いろいろ再帰 function fact (x) if x == 1 then return 1 end return x * fact(x - 1) end function triangle(x) if x == 0 then return 0 end return x + triangle(x - 1) end function fib (x) if x < 2 then return x end return fib(x - 1) + fib(x - 2…

クロージャーの何がうれしいの?

http://practical-scheme.net/trans/icad-j.html ここの、アキュームレータージェネレーターのコードを見てもイマイチ理解できない人へ参照を意識すれば、遠くの所の変数に副作用をおよぼすことができる、クラスでは大袈裟だと思う所に作るのが吉? ツッコミ…

aescm使ってみた

aescmってのはscheme(他の言語でも使えるみたい)で使える、Rubyで言う所のerb、Perlで言う所のTemplate Toolkit。 普通にテキストを書いていって、テキストを繰り返したい時や一部だけ書きかえたい時プログラムを貼りつけられる。使ってる処理系はgauche 0.8…

lua5.1のプラットフォーム間での互換性維持について(主に型のサイズについて)

参考 http://hammm.blog21.fc2.com/blog-entry-55.html luaではconfig.hをつくって、そこでコンパイル時にちゃんとサイズが決まるようになってる VMのインストラクションのサイズを追っていくとllimints.h http://www.lua.org/source/5.1/llimits.h.html typ…

gitの使いかたにコツを覚えはじめたのでgithub再開してみた

とりあえず、昔作りかけだったLispを公開してみようと思う。 http://github.com/yppp/HSLispeval.c applyとevalがある所、マーク&スイープのために自作スタックにしてみようかと思ってたけど、それで詰んでる。hslisp.h データ構造定義hslisp.y hslisp.l fle…

ライブドアインターンに受かったポーカーのRubyスクリプトを貼ってみる

自分の動作環境 $ruby -v ruby 1.9.1p243 (2009-07-16 revision 24175) [i686-linux] #!/usr/bin/env ruby # -*- coding: utf-8 -*- class Game def initialize @deck = Deck::new #山札 @playerA = Player::new("A") #プレイヤー @playerB = Player::new("B…

ICPCのdpcmデコード問題解いた

http://rose.u-aizu.ac.jp/onlinejudge/ProblemSet/description.jsp?id=2199問題解いた物を改造してコードを読みやすくして、標準エラーに最小二乗和、標準出力にデコードしたバイナリを吐くようにした ここのファイルをデコードするとノイズの後、ゆっくり…

やっとデバッグしたハッシュバケツ挿入ソート貼る

とりあえずやり切った、挿入ソートの部分を大きくすると時間がのびた所までは確認した、きたない #include <stdio.h> #include <stdlib.h> #include <string.h> #include <limits.h> struct NVtab { int num; struct NVtab *next; }; enum { INIT = 4096, GROW = 2 }; char* fileGetLine(FILE*); sta</limits.h></string.h></stdlib.h></stdio.h>…

Lisp(scheme)のどこがうれしいの?

言語オタで無い人向けに説明するための、自分の中でのまとめ1.関数がファーストクラスオブジェクトでなにがうれしいの? 高階関数で、小さい問題のためにわざわざクラスを作るほどコードが肥大化しない。少し挙動が違うハンドラとかコールバックとか作ってい…

ハッシュテーブルを使ったバケツソート+挿入ソートをあるていどデバッグした

ねむいからソースはまだ