umqの日記: 背伸びして lisp 2
このへん(どこだよ)に触発されて elisp でこんなの書いてみたのだが
scheme の named-let 使ったらカッコヨクなるかと思って書いてみた
(define (coltonum x)
((lambda (y)
(let loop ((x y) (ret 0))
(case (length x)
((0) ret)
((1) (- (+ (* ret 26) (car x)) 1))
(else (loop (cdr x) (+ (* ret 26) (car x)))))))
(map (lambda (y)
(modulo (char->integer y) 32))
(string->list
(if (and (string? x)
(rxmatch #/^[[:alpha:]]{0,4}$/ x))
x "")))))
長くなってる……
[2003-10-22]@340
Jadawinさんの例を参考に書き直してみました
こころもちスッキリ
(define (coltonum x)
((lambda (y)
(- (let loop ((x (reverse y)))
(cond
((null? x) 0)
(else (+ (car x)
(* 26 (loop (cdr x)))))))
1))
(map (lambda (y)
(modulo (char->integer y) 32))
(string->list
(if (and (string? x)
(rxmatch #/^[[:alpha:]]{0,4}$/ x))
x "")))))
↓添削はこちらへ
むー、問題の仕様をよく把握してないんすが、、、 (スコア:1)
(define (rowtonum str)
(let loop ((lst (reverse (string->list str)))
(power 1) )
(cond
((null? lst) -1)
(else
(+ (* power (- (char->integer (car lst)) 64))
(loop (cdr lst)
(* power 26)) )))))
#むう。「ホントのテキスト形式」でもインデントがずれるか。
Re:むー、問題の仕様をよく把握してないんすが、、、 (スコア:1)
なぞったわけですが、何を思ったか文字列が不正や空文字列だった
ときも 0 を返すようにしてたのですよ。
なるほど参考になりました。
> #むう。「ホントのテキスト形式」でもインデントがずれるか。
空白文字が連続すると、空白文字の間に nbsp を挟むようです
おかげでインデントがそろいません