コインの両替
30分プログラム、その804。コインの両替。
coin.scm - みずぴー日記に再チャレンジ。
使い方
gosh> exchange-coin ((2000 1) (100 1) (10 4) (1 2))
ソースコード
#! /opt/local/bin/gosh ;; -*- mode:scheme; coding:utf-8 -*- (use util.match) (use gauche.sequence) (and '() 1) (define (exchange cost coins) (if (< cost 0) '() (match coins (() '()) ((c . cs) (if (<= c cost) (cons c (exchange (- cost c) (cons c cs))) (exchange cost cs)))))) (define (group xs) (map (lambda (xs) (list (car xs) (length xs))) (group-sequence xs))) (define (exchange-coin cost) (group (exchange cost '(10000 5000 2000 1000 500 100 50 10 5 1))))