diff --git a/sicp-ex-1.12.rkt b/sicp-ex-1.12.rkt new file mode 100644 index 0000000..004cbe1 --- /dev/null +++ b/sicp-ex-1.12.rkt @@ -0,0 +1,33 @@ +; 1 +; 1 1 +; 1 2 1 +; 1 3 3 1 +; 1 4 6 4 1 +; . . . . +; I am sure that I have chosen the worst possible way + +(define (pasc-step row col num curr-row curr-col) + (cond + ((or (< col 0) (> col row)) 0) + ((or (= col 1) (= col row)) 1) + ((= curr-row row) num) + ((or (= col 2) (= col (- row 1))) (- row 1)) + ((or (> col 2) (< col (- row 1))) (pasc-step + row + col + (+ num (if (< curr-col col) + (pasc-step curr-row (+ curr-col 1) 1 2 2) + (pasc-step curr-row (- curr-col 1) 1 2 2))) + (+ curr-row 1) + (if (< curr-col col) (+ curr-col 1) curr-col))))) + +(define (locate-pasc row col) + (pasc-step row col 1 2 2)) + +(locate-pasc 2 1) +(locate-pasc 3 2) +(locate-pasc 4 3) +(locate-pasc 5 2) +(locate-pasc 5 4) +(locate-pasc 6 4) +(locate-pasc 7 3) \ No newline at end of file