#include <math.h>
int gdc(int a,int b)
{
while(abs(a)>abs(b)?(a = a%b):(b = b%a));
return abs(a|b);
}
int gdc(int a,int b)
{
while(b==b%a?(a = a%b):(b = b%a));
return (a|b)>0?(a|b):-(a|b);
}
int gdc(int a,int b)
{
return (a&&b)?b==b%a?gdc(a%b,b)
:gdc(a,b%a)
:(a|b)>0?(a|b)
:-(a|b);
}
(define gdc
(lambda (a b)
(if (or (= a 0) (= b 0))
(abs (+ a b))
(if (= b (remainder b a))
(gdc (remainder a b) b)
(gdc a (remainder b a))))))
とりあえず、考えてみたのでメモとして残しておく。
urn:isbn:... なアンカーを Amazon アソシエイトのに書き換える JavaScriptdocument.addEventListener('DOMContentLoaded',isbn2amazon,false);
function isbn2amazon()
{
var links = document.getElementsByTagName('a');
var uri = 'http://www.amazon.co.jp/exec/obidos/ASIN/';
var isbn;
var id = 'pi8027-22';
var i = 0;
while(i != links.length){
if(links[i].href.match(/^urn:isbn:/i)){
isbn = check_and_normalize_isbn
(links[i].href.replace(/^urn:isbn:/i,''));
if(isbn != ''){
links[i].setAttribute('href',uri+isbn+'/'+id+'/ref=nosim');
}
}
i++;
}
}
function check_and_normalize_isbn(string)
{
var isbn = string.replace(/-/g, '');
var sum;
if(isbn.match(/^\d{9}(\d|X)$/)){
return isbn;
}
else if(isbn.match(/^978\d{10}$/)){
isbn = isbn.substring(3,13);
sum = (11-(isbn[0]*10+isbn[1]*9+isbn[2]*8+isbn[3]*7+isbn[4]*6
+isbn[5]*5+isbn[6]*4+isbn[7]*3+isbn[8]*2)%11)%11;
isbn = isbn.replace(/.$/,(sum != 10)?sum
:'X');
return isbn;
}
else{
return '';
}
}
実は少し前から使っているのですが、1円も入りません。
時を刻む唄/TORCH を買った。麻枝さんの付ける歌詞は素晴らしいと思う。
散髪しに床屋に行ったら、時を刻む唄が流れていた。違和感無さすぎる。
まだ公開出来る状態ではないのですが、リングバッファを利用してキュー構造を実装してみました。ドキュメント付けが終わり次第公開します。
実はもう結構前の話なのですが、コンパイラ入門 ―― 構文解析の原理と lex/yacc、C言語による実装の間違いの件でサイエンス社にメールを送りました。
その後、著者の山下氏からの返事があり、今は正誤表に反映されています。