ある連続値が区間集合のどの位置に含まれるか

問題: 区間の上界と下界の属性を元に、何かを計算する 例えば、区間集合{ 3: {3の属性}, 5: {5の属性}, 8: {8の属性}, ... } 4を与えると、4は3と5の区間に含まれるから、3の属性と5の属性から、4の属性を新たに計算したい 解決1: 素朴に indexOf 4が区間(3,…

プログラミング言語、構文メモ

Javascript構文で、イラッとする細かいところ。 hoge = this; コールバック中のthisが呼び出し元スコープのthisではない そのため、既存のオブジェクト志向記述にするとよくundefでエラー停止 Arrayのmap, reduce, forEachの最後の引数にthisを渡さないとい…

Javascriptでのビット演算で結果が0値になる件について

どうも、Javascriptでは基本の数値型が浮動小数点のせいで、整数型は53ビットまでらしい。その上、表題の通り、大きな数でのビット演算で0になる。その場合の回避方法は、割り算すること。

艦これ改レビュー(1)

ひとまず、ネットゲームじゃなかったらやってたんだけど、待望のPSVita版ということで購入。10年ぶりくらいのコンシューマゲームかもしれん。大きくターン制にかわったのだが、これはリアルタイム時間でいろいろをこなさないといけない原版では、コンシュー…

10/18は大宰府で特別受験合格祈願大祭

学問の神様である,菅原道真公が若くして文章博士に任じられた日,ということだそうです.縁あって,道真公とお話ができたので,記して道真公へ感謝いたしましょう. 10月18日に特別受験合格祈願大祭ではエネルギー使う 受験合格・学業上達祈願の神様とはい…

データ構造の変換に畳み込み関数

関数型言語で非常に重要なfold(あるいはreduce,inject)を使うと初期化あり変数宣言を削除できるたとえば,二次元配列を一次元にするflattenをJavaScriptで var ret = []; aList.forEach(function(e, i, arr){ arr.push.call(ret, e); }); // これが var ret…

規定数のリトライ成功失敗における反復「式」の効用

Rubyでは反復は文でなく式である.そのため,途中で中断した場合,反復式として戻り値を持てる.すると,規定数のリトライ処理を,成功した場合と失敗した場合で,論理的に整合するよううまく記述できる.ネットワーク越しのデータ取得は,必ずしも成功せず…

置換の選択肢

Rubyでは文字列置換にはいくつも選択肢がある. #{}で式評価 % 記法でハッシュ渡し String.gsub()でハッシュ渡し Kernel#format() Kernel#sprintf() どう使い分ければいいのだろう?というのは,HTMLでのマークアップにはダブルクォーテーションがあるため,…

数値の通貨フォーマットに正規表現で置換

Number#to_currency('JPY')とかあればいいのかしら.ひとまず, String(vals['price']).replace(/(?:^|[^.])(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"); vals['price'].to_s.gsub(/(?:^|[^.])(\d)(?=(\d\d\d)+(?!\d))/g, "$1,") (?=,(?!は先読み.

Rubyで埋め込みシェルスクリプティングjcat

シェルスクリプトは強力である.しかし,痒いところに手が届かない.まとめて処理しようと思ったらプロセス数上限に到達したりとか.OSにとってプロセスの生成コストは高いのである.そこで,Rubyにシェルスクリプトのラッピングを施す. 具体的には,個別に…

JavaScriptで文字列書式付き出力

JavaScriptには,書式付きで文字列を生成してくれる関数がない.CでいうsprintfやJavaでいうformatのようなもの.これがないせいで,HTMLのマークアップ文字列に値を埋め込むのがめんどくさいこと限りなし.ということで,Stringクラスを拡張. if (!String.…

C#でJSON

C#

C#でJSONを扱うには,幾つか選択肢があるようだ. http://www2.hatenadiary.jp/entry/2013/12/14/030112 のサマリです.そもそも大本のJSON仕様はhttp://www.json.org/で. .NET Framework Json.NET http://www.newtonsoft.com/json Json.NET/デシリアライズ…

日報ファイルをリネームしているのでござるよ,手動で.だから自動化.

コピー F2 前日の日付を付与 保存 していたので,xyzzyでさくっとは行かないまでも,revision-up.2.5hもかかってしまった.単なる保存がC-x C-wなので,C-x wに割り当て.ファイル名の先頭に前日日付を挿入します. ; C-x wに割り当て (global-set-key '(#\…

理想の静的型付き言語(3)

Swiftとの対比で、Haskellの文法を改めて見直してみた。Swiftは手続き的言語で予約語が多い。そういう意味ではPascal流のAdaや、直接の祖先であるC++の影響が色濃く残っている。こういう手続き型言語は文法が複雑になりがちなのでコンパイラを作るのに手間が…

Swift 負の添字で配列にアクセス

Swiftの配列Arrayは負の添字で配列にアクセスできないので、拡張してみた。classにしてみたが、structにしてもいいのかもしれない。そこは判断つかない。 class SArray<T> { var a : Array<T> init(_ given: Array<T> = [T]() ){ a = given } subscript(i: Int) -> T </t></t></t>…

理想の静的型付き言語(2)

さて、Swiftの構文に触発されて静的型付き言語の構文を考えてみる。基本、Swift+Ruby。Sapphireとでも名付けてみようか。 データ型はSwift 制御構文はSwift、ただしif 修飾節は欲しい。 例外構文はRubyがいいと思う、rescueを。 structとclassの違いは、確か…

理想の静的型付き言語?いやもうちょっと。

Swiftの型推論はいい。非常に。オプショナル型への配慮も。でも、Rubyにあるていど慣れた身にとっては、若干惜しいと思うところも。 厳密には言語仕様に含まれないかもしれないが、IO周りが弱い印象。 各種変数の識別子に違いがみえにくいので、@開始ならイ…

Swift Programming: データの構造化

基本データ型を複数組み合わせてデータを構造化することができる文字列; String; "" 配列; Array; [] ハッシュ; Dictionary; [:] タプル; () クラス; class 構造体; struct クロージャ; {(引数) -> 戻り値の型 in 文; return 戻り値} Generics; func 型名(…

Swift Programming: 演算子と式、および制御構造

Swiftの演算子はおよそCに準じる。新たに加わるものもあるし、異なるものもある。演算子は三種類、単項演算子、二項演算子、三項演算子があり、また独自の演算子を定義できる。 この演算子オーバーロードには、{prefix|infix|postfix} operator 演算子名(引…

Swift programming 基礎編

変数宣言,定数宣言,代入と文字列 変数はvar,定数はlet,代入は=で文字列はダブルクオート("") 変数定数は,Scalaではvarとvalだったけど,見間違えやすいよね.これはSwiftさんナイス.文字列はダブルクオートのみでシングルクオートは使わない.1文字の…

Swift programming 事始め: Hello, world!

SwiftでMacOSXアプリケーション開発にはXcode6.1から SwiftでMacOSXアプリケーションを開発するには,Xcode6.1+OSX10.9以上(SDK10.10)が必要である.Xcode6.1はOSX10.10Yosemiteとリリースを同じくしたのだが,Yosemiteリリース前まではApple開発者登録をし…

クラウドコンピューティングで何がよくなるのか

2009年はかまびすしくクラウドコンピューティングで始まって、今のなんだか続いてるような雰囲気だ。確かに、CPUの性能向上はすごい。ディスク容量の増加率はさらでも。ネットワーク帯域に至っては日本は世界で最も快適な環境に違いない。 しかしちょっと待…

字句解析#2

字句解析を続ける。ファイルから読み出した文字列に順番を加えてトークンとする。 (defvar MGH_vlt "^0C.\\\(............\\\)\\\(............\\\)\\\(............\\\)\\\(............\\\)\\\(............\\\)\\\(............\\\)\\\(........\\\).....…

整数ジェネレータ

さて、前回の字句解析#1では、与えられたファイルを字句解析して、トークンを切り出した。ここでいうトークンとは、文字列とファイルを読み出した順番の対である。今回は、後者の"ファイルを読み出した順序"を掘り下げてみよう。前回、このファイルを読み出…

字句解析#1

文字列に番号を振って、番号と文字列の対のデータ構造をトークンとする。 (defun getToken-lexer (f) (cons (getOrder f) (seq-read f))) (defun getOrder (f) (save-excursion (set-buffer f) (1+ (/ (point) 251)))) (defun tk_to_s (tk) (format "#%5s %s…

パターンマッチ#1

文字列から正規表現を使ってパターンマッチをするには、string-matchを使う。 バッファを対象にパターンマッチは、re-search-forwardのようね。CIIフォーマットでは、データレコードで類似のパターンがあるので、 パターンマッチの照合順序を気をつけないと…

パターンマッチ#2

つづき。正規表現からパターンマッチした文字列を抜き出す時は、 substring とmatch-beginning とmatch-end を使う。 (defun to_s (o) (if (eq o EOF) "" (cond ((string-match MGH_vlt o) (symbol-name 'MGH_vlt)) ((string-match MGH_flt o) (format "%-10…

ファイル入出力

Emacs LispでCIIフォーマットをテキスト処理してみよう。以下、*scratch*バッファでC-j。EmacsはOSの提供するファイルに対してバッファを割り当てており、 実際にはバッファに対して操作することになる。 ファイルを開く=バッファを割り当てる (find-file "…

Emacs Lisp 事始め

会社支給の計算機は、当然Windowsで、業務に必要なソフトウェア以外インストールしてはいけない縛りがある。Windows+サイボウズ+Microsoft Officeという環境を強制されていると思いない。この環境は、ちょっとしたプログラムを書くには非常に貧弱でフラスト…

Hello, world!!

主にシステムエンジニアリングとプログラミングに関する内容の日記を書いていきたいと思っております。どうぞよろしく。