(use-modules
(srfi srfi-1)
(ice-9 format)
)
(define (recombine right left)
(format #t "~a\n" (string-join (map number->string left) " ")) ; trace
(if (null? right)
#f ; if right is empty then go out
(let ((tail (cdr right)) (next (cons (car right) left))) ; right & left for next step
(recombine tail next) ; try to go deep
(recombine tail left) ; next iteration
)
)
)
(recombine (list 1 2 3 4) (list))
KHVzZS1tb2R1bGVzCgkoc3JmaSBzcmZpLTEpCgkoaWNlLTkgZm9ybWF0KQopCgooZGVmaW5lIChyZWNvbWJpbmUgcmlnaHQgbGVmdCkKCShmb3JtYXQgI3QgIn5hXG4iIChzdHJpbmctam9pbiAobWFwIG51bWJlci0+c3RyaW5nIGxlZnQpICIgIikpIDsgdHJhY2UKCQoJKGlmIChudWxsPyByaWdodCkgCgkJI2YgOyBpZiByaWdodCBpcyBlbXB0eSB0aGVuIGdvIG91dAoJCQoJCShsZXQgKCh0YWlsIChjZHIgcmlnaHQpKSAobmV4dCAoY29ucyAoY2FyIHJpZ2h0KSBsZWZ0KSkpIDsgcmlnaHQgJiBsZWZ0IGZvciBuZXh0IHN0ZXAKCQkJKHJlY29tYmluZSB0YWlsIG5leHQpIDsgdHJ5IHRvIGdvIGRlZXAKCQkJKHJlY29tYmluZSB0YWlsIGxlZnQpIDsgbmV4dCBpdGVyYXRpb24KCQkpCgkpCikKCihyZWNvbWJpbmUgKGxpc3QgMSAyIDMgNCkgKGxpc3QpKQ==