前回から時間が開いてしまった。本当は Text.Parsec
の話題を書こうと思ってるんだけど、今日も時間がないので小ネタ、しかも他人のネタ。
詳しくはリンク先を見て。いくつかの言語でやってるんだけど、Ruby と Scheme がなかったのでやってみた。
まずは Ruby。
# encoding: utf-8 def sum_of_kuku a = (1..9).to_a a.product(a).map{|x,y| x * y}.inject(:+) end puts sum_of_kuku
takatoh@apostrophe $ ruby sum_of_kuku.rb 2025
1〜9までの配列の直積をとって、それぞれを掛けあわせて、最後に全部足してるだけ。
Scheme でも同じ考え方。でもリストの直積を取る手続きが見当たらなかったので direct-product
を自作した。
(use srfi-1) (define direct-product (lambda (lis1 lis2) (append-map (lambda (x) (map (lambda (y) (list x y)) lis2)) lis1))) (define sum-of-kuku (lambda () (let ((l1 '(1 2 3 4 5 6 7 8 9)) (l2 '(1 2 3 4 5 6 7 8 9))) (apply + (map (lambda (x) (apply * x)) (direct-product l1 l2)))))) (print (sum-of-kuku))
takatoh@apostrophe $ gosh sum-of-kuku.scm 2025