OCamlのGolfの問題をSchemeで解いてみる
30分プログラム、その648。Users Meeting - OCaml.jpのGolfコンペ用の問題(anarchy golf - Sum of Divisors for OCaml Golf Competition)が公開されました。
Golfにチャレンジするのは上記サイトでやるとして、せっかく問題があるんだから解いておきましょう。しかもSchemeで、それもGolfっぽくなく。
使い方
$ echo "3\n8\n6" | gosh divisor.scm 3: 4 8: 15 6: 12
ソースコード
#! /opt/local/bin/gosh ;; -*- mode:scheme; coding:utf-8 -*- ;; ;; divisor.scm - ;; ;; Copyright(C) 2009 by mzp ;; Author: MIZUNO Hiroki / mzpppp at gmail dot com ;; http://howdyworld.org ;; ;; Timestamp: 2009/08/27 22:29:54 ;; ;; This program is free software; you can redistribute it and/or ;; modify it under MIT Lincence. ;; (use srfi-1) (define (divisor n) (filter (lambda (i) (= 0 (modulo n i))) (iota n 1))) (define (sum-of-divisor n) (cons n (fold + 0 (divisor n)))) (define (main _) (for-each (lambda (x) (print (car x) ": " (cdr x))) (map (compose sum-of-divisor string->number) (port->string-list (standard-input-port)))))