From 274df27f641a0df9b26ac0537119b149fa0ba7d1 Mon Sep 17 00:00:00 2001 From: Masaya Tojo Date: Thu, 22 Aug 2024 03:34:40 +0900 Subject: Initial commit --- README.md | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 README.md (limited to 'README.md') diff --git a/README.md b/README.md new file mode 100644 index 0000000..c01ed66 --- /dev/null +++ b/README.md @@ -0,0 +1,68 @@ +# AccelAsc for R7RS + +This library provides an implementation of the algorithm called `accel_asc` by Jerome Kelleher, which generates integer partitions in R7RS. +For more details, please refer to [Jerome Keller's website](https://jeromekelleher.net/category/combinatorics.html). + +## Requirements + +- `(scheme generator)` of R7RS-large or `(srfi 158)` + +## Usage + +### Library `(integer-partition accel-asc)` + +#### `(accel-asc n) → ` + +Returns a generator that produces a list of integers representing integer partitions for the given value of integer `n`. + +## Examples + +```scheme +(import (scheme base) + (srfi 158) + (integer-partition accel-asc)) + +(generator-for-each (lambda (lst) (display lst) (newline)) + (accel-asc 8)) +``` + +Output: + +``` +(1 1 1 1 1 1 1 1) +(1 1 1 1 1 1 2) +(1 1 1 1 1 3) +(1 1 1 1 2 2) +(1 1 1 1 4) +(1 1 1 2 3) +(1 1 1 5) +(1 1 2 2 2) +(1 1 2 4) +(1 1 3 3) +(1 1 6) +(1 2 2 3) +(1 2 5) +(1 3 4) +(1 7) +(2 2 2 2) +(2 2 4) +(2 3 3) +(2 6) +(3 5) +(4 4) +(8) +``` + +## License + +This library is released under the Apache License Version 2.0. +See the LICENSE file for more details. + +## References + +- Kelleher, J. (2006). *Encoding partitions as ascending compositions* [Doctoral dissertation, University College Cork]. [https://jeromekelleher.net/downloads/k06.pdf](https://jeromekelleher.net/downloads/k06.pdf) +- Kelleher, J. (2014, May 26). *Generating Integer Partitions*. [https://jeromekelleher.net/generating-integer-partitions.html](https://jeromekelleher.net/generating-integer-partitions.html) + +## Copyright + +Copyright (c) 2024 Masaya Tojo -- cgit v1.2.3