[ create a new paste ] login | about

Link: http://codepad.org/Pzw6Hdu0    [ raw code | output | fork ]

programmingpraxis - Scheme, pasted on Dec 8:
; every possible fraction

(define-syntax define-generator
  (lambda (x)
    (syntax-case x (lambda)
      ((stx name (lambda formals e0 e1 ...))
         (with-syntax ((yield (datum->syntax-object (syntax stx) 'yield)))
           (syntax (define name
             (lambda formals
               (let ((resume #f) (return #f))
                 (define yield
                   (lambda args
                     (call-with-current-continuation
                      (lambda (cont)
                        (set! resume cont)
                        (apply return args)))))
                 (lambda ()
                   (call-with-current-continuation
                    (lambda (cont)
                      (set! return cont)
                      (cond (resume (resume))
                      (else (let () e0 e1 ...)
                            (error 'name "unexpected return"))))))))))))
        ((stx (name . formals) e0 e1 ...)
          (syntax (stx name (lambda formals e0 e1 ...)))))))

(define-generator (rats)
  (let loop ((x 1))
    (yield x)
    (let* ((n (floor x)) (y (- x n)))
      (loop (/ (- n -1 y))))))

(define next (rats))

(do ((i 1 (+ i 1))) ((< 1200 i))
  (display (next))
  (if (zero? (modulo i 12))
      (newline)
      (display #\tab)))


Output:
1	1/2	2	1/3	3/2	2/3	3	1/4	4/3	3/5	5/2	2/5
5/3	3/4	4	1/5	5/4	4/7	7/3	3/8	8/5	5/7	7/2	2/7
7/5	5/8	8/3	3/7	7/4	4/5	5	1/6	6/5	5/9	9/4	4/11
11/7	7/10	10/3	3/11	11/8	8/13	13/5	5/12	12/7	7/9	9/2	2/9
9/7	7/12	12/5	5/13	13/8	8/11	11/3	3/10	10/7	7/11	11/4	4/9
9/5	5/6	6	1/7	7/6	6/11	11/5	5/14	14/9	9/13	13/4	4/15
15/11	11/18	18/7	7/17	17/10	10/13	13/3	3/14	14/11	11/19	19/8	8/21
21/13	13/18	18/5	5/17	17/12	12/19	19/7	7/16	16/9	9/11	11/2	2/11
11/9	9/16	16/7	7/19	19/12	12/17	17/5	5/18	18/13	13/21	21/8	8/19
19/11	11/14	14/3	3/13	13/10	10/17	17/7	7/18	18/11	11/15	15/4	4/13
13/9	9/14	14/5	5/11	11/6	6/7	7	1/8	8/7	7/13	13/6	6/17
17/11	11/16	16/5	5/19	19/14	14/23	23/9	9/22	22/13	13/17	17/4	4/19
19/15	15/26	26/11	11/29	29/18	18/25	25/7	7/24	24/17	17/27	27/10	10/23
23/13	13/16	16/3	3/17	17/14	14/25	25/11	11/30	30/19	19/27	27/8	8/29
29/21	21/34	34/13	13/31	31/18	18/23	23/5	5/22	22/17	17/29	29/12	12/31
31/19	19/26	26/7	7/23	23/16	16/25	25/9	9/20	20/11	11/13	13/2	2/13
13/11	11/20	20/9	9/25	25/16	16/23	23/7	7/26	26/19	19/31	31/12	12/29
29/17	17/22	22/5	5/23	23/18	18/31	31/13	13/34	34/21	21/29	29/8	8/27
27/19	19/30	30/11	11/25	25/14	14/17	17/3	3/16	16/13	13/23	23/10	10/27
27/17	17/24	24/7	7/25	25/18	18/29	29/11	11/26	26/15	15/19	19/4	4/17
17/13	13/22	22/9	9/23	23/14	14/19	19/5	5/16	16/11	11/17	17/6	6/13
13/7	7/8	8	1/9	9/8	8/15	15/7	7/20	20/13	13/19	19/6	6/23
23/17	17/28	28/11	11/27	27/16	16/21	21/5	5/24	24/19	19/33	33/14	14/37
37/23	23/32	32/9	9/31	31/22	22/35	35/13	13/30	30/17	17/21	21/4	4/23
23/19	19/34	34/15	15/41	41/26	26/37	37/11	11/40	40/29	29/47	47/18	18/43
43/25	25/32	32/7	7/31	31/24	24/41	41/17	17/44	44/27	27/37	37/10	10/33
33/23	23/36	36/13	13/29	29/16	16/19	19/3	3/20	20/17	17/31	31/14	14/39
39/25	25/36	36/11	11/41	41/30	30/49	49/19	19/46	46/27	27/35	35/8	8/37
37/29	29/50	50/21	21/55	55/34	34/47	47/13	13/44	44/31	31/49	49/18	18/41
41/23	23/28	28/5	5/27	27/22	22/39	39/17	17/46	46/29	29/41	41/12	12/43
43/31	31/50	50/19	19/45	45/26	26/33	33/7	7/30	30/23	23/39	39/16	16/41
41/25	25/34	34/9	9/29	29/20	20/31	31/11	11/24	24/13	13/15	15/2	2/15
15/13	13/24	24/11	11/31	31/20	20/29	29/9	9/34	34/25	25/41	41/16	16/39
39/23	23/30	30/7	7/33	33/26	26/45	45/19	19/50	50/31	31/43	43/12	12/41
41/29	29/46	46/17	17/39	39/22	22/27	27/5	5/28	28/23	23/41	41/18	18/49
49/31	31/44	44/13	13/47	47/34	34/55	55/21	21/50	50/29	29/37	37/8	8/35
35/27	27/46	46/19	19/49	49/30	30/41	41/11	11/36	36/25	25/39	39/14	14/31
31/17	17/20	20/3	3/19	19/16	16/29	29/13	13/36	36/23	23/33	33/10	10/37
37/27	27/44	44/17	17/41	41/24	24/31	31/7	7/32	32/25	25/43	43/18	18/47
47/29	29/40	40/11	11/37	37/26	26/41	41/15	15/34	34/19	19/23	23/4	4/21
21/17	17/30	30/13	13/35	35/22	22/31	31/9	9/32	32/23	23/37	37/14	14/33
33/19	19/24	24/5	5/21	21/16	16/27	27/11	11/28	28/17	17/23	23/6	6/19
19/13	13/20	20/7	7/15	15/8	8/9	9	1/10	10/9	9/17	17/8	8/23
23/15	15/22	22/7	7/27	27/20	20/33	33/13	13/32	32/19	19/25	25/6	6/29
29/23	23/40	40/17	17/45	45/28	28/39	39/11	11/38	38/27	27/43	43/16	16/37
37/21	21/26	26/5	5/29	29/24	24/43	43/19	19/52	52/33	33/47	47/14	14/51
51/37	37/60	60/23	23/55	55/32	32/41	41/9	9/40	40/31	31/53	53/22	22/57
57/35	35/48	48/13	13/43	43/30	30/47	47/17	17/38	38/21	21/25	25/4	4/27
27/23	23/42	42/19	19/53	53/34	34/49	49/15	15/56	56/41	41/67	67/26	26/63
63/37	37/48	48/11	11/51	51/40	40/69	69/29	29/76	76/47	47/65	65/18	18/61
61/43	43/68	68/25	25/57	57/32	32/39	39/7	7/38	38/31	31/55	55/24	24/65
65/41	41/58	58/17	17/61	61/44	44/71	71/27	27/64	64/37	37/47	47/10	10/43
43/33	33/56	56/23	23/59	59/36	36/49	49/13	13/42	42/29	29/45	45/16	16/35
35/19	19/22	22/3	3/23	23/20	20/37	37/17	17/48	48/31	31/45	45/14	14/53
53/39	39/64	64/25	25/61	61/36	36/47	47/11	11/52	52/41	41/71	71/30	30/79
79/49	49/68	68/19	19/65	65/46	46/73	73/27	27/62	62/35	35/43	43/8	8/45
45/37	37/66	66/29	29/79	79/50	50/71	71/21	21/76	76/55	55/89	89/34	34/81
81/47	47/60	60/13	13/57	57/44	44/75	75/31	31/80	80/49	49/67	67/18	18/59
59/41	41/64	64/23	23/51	51/28	28/33	33/5	5/32	32/27	27/49	49/22	22/61
61/39	39/56	56/17	17/63	63/46	46/75	75/29	29/70	70/41	41/53	53/12	12/55
55/43	43/74	74/31	31/81	81/50	50/69	69/19	19/64	64/45	45/71	71/26	26/59
59/33	33/40	40/7	7/37	37/30	30/53	53/23	23/62	62/39	39/55	55/16	16/57
57/41	41/66	66/25	25/59	59/34	34/43	43/9	9/38	38/29	29/49	49/20	20/51
51/31	31/42	42/11	11/35	35/24	24/37	37/13	13/28	28/15	15/17	17/2	2/17
17/15	15/28	28/13	13/37	37/24	24/35	35/11	11/42	42/31	31/51	51/20	20/49
49/29	29/38	38/9	9/43	43/34	34/59	59/25	25/66	66/41	41/57	57/16	16/55
55/39	39/62	62/23	23/53	53/30	30/37	37/7	7/40	40/33	33/59	59/26	26/71
71/45	45/64	64/19	19/69	69/50	50/81	81/31	31/74	74/43	43/55	55/12	12/53
53/41	41/70	70/29	29/75	75/46	46/63	63/17	17/56	56/39	39/61	61/22	22/49
49/27	27/32	32/5	5/33	33/28	28/51	51/23	23/64	64/41	41/59	59/18	18/67
67/49	49/80	80/31	31/75	75/44	44/57	57/13	13/60	60/47	47/81	81/34	34/89
89/55	55/76	76/21	21/71	71/50	50/79	79/29	29/66	66/37	37/45	45/8	8/43
43/35	35/62	62/27	27/73	73/46	46/65	65/19	19/68	68/49	49/79	79/30	30/71
71/41	41/52	52/11	11/47	47/36	36/61	61/25	25/64	64/39	39/53	53/14	14/45
45/31	31/48	48/17	17/37	37/20	20/23	23/3	3/22	22/19	19/35	35/16	16/45
45/29	29/42	42/13	13/49	49/36	36/59	59/23	23/56	56/33	33/43	43/10	10/47
47/37	37/64	64/27	27/71	71/44	44/61	61/17	17/58	58/41	41/65	65/24	24/55
55/31	31/38	38/7	7/39	39/32	32/57	57/25	25/68	68/43	43/61	61/18	18/65
65/47	47/76	76/29	29/69	69/40	40/51	51/11	11/48	48/37	37/63	63/26	26/67
67/41	41/56	56/15	15/49	49/34	34/53	53/19	19/42	42/23	23/27	27/4	4/25
25/21	21/38	38/17	17/47	47/30	30/43	43/13	13/48	48/35	35/57	57/22	22/53
53/31	31/40	40/9	9/41	41/32	32/55	55/23	23/60	60/37	37/51	51/14	14/47
47/33	33/52	52/19	19/43	43/24	24/29	29/5	5/26	26/21	21/37	37/16	16/43
43/27	27/38	38/11	11/39	39/28	28/45	45/17	17/40	40/23	23/29	29/6	6/25
25/19	19/32	32/13	13/33	33/20	20/27	27/7	7/22	22/15	15/23	23/8	8/17
17/9	9/10	10	1/11	11/10	10/19	19/9	9/26	26/17	17/25	25/8	8/31
31/23	23/38	38/15	15/37	37/22	22/29	29/7	7/34	34/27	27/47	47/20	20/53
53/33	33/46	46/13	13/45	45/32	32/51	51/19	19/44	44/25	25/31	31/6	6/35
35/29	29/52	52/23	23/63	63/40	40/57	57/17	17/62	62/45	45/73	73/28	28/67
67/39	39/50	50/11	11/49	49/38	38/65	65/27	27/70	70/43	43/59	59/16	16/53
53/37	37/58	58/21	21/47	47/26	26/31	31/5	5/34	34/29	29/53	53/24	24/67
67/43	43/62	62/19	19/71	71/52	52/85	85/33	33/80	80/47	47/61	61/14	14/65
65/51	51/88	88/37	37/97	97/60	60/83	83/23	23/78	78/55	55/87	87/32	32/73
73/41	41/50	50/9	9/49	49/40	40/71	71/31	31/84	84/53	53/75	75/22	22/79
79/57	57/92	92/35	35/83	83/48	48/61	61/13	13/56	56/43	43/73	73/30	30/77
77/47	47/64	64/17	17/55	55/38	38/59	59/21	21/46	46/25	25/29	29/4	4/31
31/27	27/50	50/23	23/65	65/42	42/61	61/19	19/72	72/53	53/87	87/34	34/83
83/49	49/64	64/15	15/71	71/56	56/97	97/41	41/108	108/67	67/93	93/26	26/89
89/63	63/100	100/37	37/85	85/48	48/59	59/11	11/62	62/51	51/91	91/40	40/109
109/69	69/98	98/29	29/105	105/76	76/123	123/47	47/112	112/65	65/83	83/18	18/79


Create a new paste based on this one


Comments: