Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon.

Pages: 1-

Variations on a Scheme

Name: Anonymous 2009-11-07 0:47

Come up with variations of your favorite toy problems.  The more satori the better.

I'll start with a mostly kawaii (cute) one:

(defun sepples (mosiacpointeroverflow)
  (reduce #'* (loop for grunner from 1 to mosiacpointeroverflow collect grunner) :initial-value 1))

Name: Anonymous 2009-11-07 4:12

:initial-value 1 is not necessary. Learn lisp before you attempt to post code here.

(also, renaming symbols to crap is plain retarded. don't expect to be taken seriously)


(reduce #'* (nreverse (mapcar (lambda (x) (reduce #'+ x)) (mapcon #'list (make-list 10 :initial-element 1)))))

Name: Anonymous 2009-11-07 10:32


(defun seq (n m &optional (k 1))
  (loop for i from n to m by k collect i))

(define-modify-macro set-differencef (&rest args) set-difference)

(defun prime-sieve (n)
  (let ((primes (seq 2 n)))
    (loop for i from 2 to n
       do (set-differencef primes (rest (seq i n i))))
    (sort primes #'<)))

Name: Anonymous 2009-11-07 17:32

(defun mat-mul (a b)
  "Matrix multiplication"
  (let ((files_a (car (array-dimensions a)))
        (files_b (car (array-dimensions b)))
        (columns_a (cadr (array-dimensions a)))
        (columns_b (cadr (array-dimensions b)))
        (result nil))

        (if (eq files_a nil) (setq files_a 0))
        (if (eq files_b nil) (setq files_b 0))
        (if (eq columns_a nil) (setq columns_a 0))
        (if (eq columns_b nil) (setq columns_b 0))

        (unless (= columns_a files_b) (return-from mat-mul nil))
        (let ((aux nil))
          (push columns_b aux)
          (push files_a aux)
          (setq result (make-array aux)))

        (do ((i 0 (+ i 1)))
          ((= i files_a) t)
          (do ((j 0 (+ j 1)))
            ((= j columns_b) t)
            (let ((sum 0))
              (do ((k 0 (+ k 1)))
                ((= k columns_a) t)
                (incf sum (* (aref a i k) (aref b k j))))
              (setf (aref result i j) sum))))
        result))

(defun divmod (a b)
  (values (floor (/ a b)) (mod a b)))

(defun mat-exp (x val)
  "Matrix exponentiation"
    (let ((z x)
          (n (- val 1)))
      (loop while (not (= n 0)) do
            (let ((ndiv 0)
                  (nmod 0))
              (multiple-value-setq (ndiv nmod) (divmod n 2))
              (loop while (= nmod 0) do
                    (setq x (mat-mul x x))
                    (setq n ndiv)
                    (multiple-value-setq (ndiv nmod) (divmod n 2)))
              (setq z (mat-mul z x))
              (decf n 1)))
      z))

(defun fib (n)
  (row-major-aref (mat-exp (make-array '(2 2) :initial-contents
                                       '((1 1) (1 0))) n) 1))


(time (loop for num in (cdr sb-ext:*posix-argv*) do
            (let ((i (parse-integer num :junk-allowed t)))
              (format t "fib(~d) = ~d~%" i (fib i)))))




Is this Satori enough?

Name: Anonymous 2009-11-07 20:36

samefag, all of them.

Name: Anonymous 2009-11-07 20:39


COBRA> (enable-%-syntax)
T
COBRA> #% lambda('(x), expt(2, x)).mapcar(function('oddp).remove-if(list(1,2,3,4,5,6))) %
(4 16 64)
COBRA> (reduce #'* #% lambda('(x), expt(2, x)).mapcar(function('oddp).remove-if(list(1,2,3,4,5,6))) %)
4096


WHERE IS YOUR GOD NOW

Name: Anonymous 2009-11-07 20:55

>>6
Why ;_;

Name: Anonymous 2009-11-16 6:15

unfolding fibs.


(unfold (lambda (p)
          (> (summing p) 100))
        summing
        (lambda (p)
          (list (cadr p)
                (summing p)))
        '(1 1))

Name: Anonymous 2009-11-16 9:51

Temperature conversion.

(define (<F->C> f c) (propagate () (t) (<mul> c (<constant> 9/5) t) (<add> t (<constant> 32) f)))
(define (<C->K> c k) (<add> c (<constant> #e273.15) k))
(define (<K->F> k f) (propagate () (c) (<F->C> f c) (<C->K> c k)))
(display (exact->inexact (propagate (f) () (<K->F> (<constant> 300) f))))


80.33

Propagation: it's like unification, but cooler!
http://dspace.mit.edu/handle/1721.1/44215

begin 644 propagator.tar.gz
M'XL("%-;`4L``'!R;W!A9V%T;W(N=&%R`.T::T\;1["?*_4_3(FJ^%+.Q@:*
M0J@C%TA#TX8(J*)\ZW+>PU?.=Y?=.XS[ZSNSSWO%).I#5963@KV[\W[MW#B%
MR`MVP\I<#&6T_.(?>0#@X.``Z!-@I_4)X_'>_@'^W=W9F>SO3_:^(_"=R1Y\
ML?/%Y^>??AY]+?:%_.K+K[Y\]@PN^/LJ$7S)LQ*W!H^^$7H#MM9L3?&Q%<!@
MSN,DXS!@V1H*2`/Z-H=!P1+Q7"US@2L81$S@,M"`M)[3FIX&:2GB9/3=4]PT
ME$.YSDIV#ZL%SV"@%Z&H4BYA@-0&:K^`ZWR^AN%PB%M)3/2O^4V2^6UZE%KP
M`Y-\#GD&OUTM.,Q$"7D,)7Y]XV+_,5ROX4<N6#J'G]@:+BLIERP#TFR6\GN^
MA@LVKU(BMRC+XG`TFLN"17RX3,HAGU>C!8*F?#0^F(R'X]'>WF2\;XQZHK12
M#+.\7"39#=RQM.)68;\]2!-9PN,G9OV$%'#F-IO/X1XUYN^?6RQ<!YH3*I!Q
MD400\32%O$!URB3/I+>LVX,!P82"QQ!Y+ET`R<NO(8*[33!L/@])<&).P-DF
M8`RN_(XWX9W\QWEVQ[,$HR]=PRH7M[!*R@4LJ[1,BI0KO;PVFJ)L\Y>0(3V`
M09R+D+-H@69ER^LY0_C@PR(C8A"T:1MQ/Y&\Q>IR<)K.E"XU=DMVRT/:T\13
M7F*D6P+2G"^87(0ENT938``$Q"[/$**TL1`H;,3/KW_G4:D78#X&=9^;/3`$
M@AY0[WU[2OPHU5TLXA$\3FZR7'`%XQ\/TV+A(11UJ\!=Y]@K&ZY8>@O.&-[@
MM\1_X&^PD*5<E'`;!&UJJK:EG$D.2W2.6/<*XUD\BH.V0CR5W"D;=`S6'U>.
MB*I:G@%M=_5L"9'!H[*/DP^QO\)LSC'(>(-?@(\/4;(EU1<&WL(^8KMF+\@7
M#MW75BCYLDA9R7N1(:]*"4DF(:IDF2]#_.K44AK1/R3X,E]!F8-6'+&$Y&E,
M9XZHL<F2?VW3H#^)-4OZX_8V(RCQ&G+5!3N]XV(-9;+DP#(B6U0E7/,H7W()
M[(XE*=F[(6F7MZ)T%L,*B0AU(T#&^9S/D>8:`Y8;`9-8W03J4FU4'I=OS=(>
M*#VUO#X5VC;43\."&U1,LH<U3+(^!8]9FM)%V.=KHV#/"7BQO%2^^#_L6`_;
M\6D;L@>Y#N3"^Q>LQXW,@%CD2[T383\@^J,="<4EQ$38>\]F@-K]-'O7+-YG
M+0+QL87&U[0DQ9@GU"@;GQI>2;8YNB!.A"S[8ZRV&S$D2K=]J'HCZ8^\&`;>
M<YH51;I6\117641=1@-BP-1Y3+=G`59L+7'0PT!PB9V&['#)YK`22<FAS(F9
M3O$&7'[`"*`9A\E3#Y:5J;>NO+>7QA]\/GV(>8KH%CB<RA$@DUH<L=KK='1
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
AC^GV^:`D%M.R^I_.5C\_GY_/S^?GO_S\"2!Z@M<`,```
`
end

Name: Anonymous 2009-11-16 10:25

>>6
COBRA IS A COOL NAME

Name: Anonymous 2009-11-16 10:42

>>8
I usually make a point of fawning over every use of unfold, but without code for 'summing' all I can say is FUCK YEAH UNFOLD

Name: 9 2009-11-16 11:12

Oh wow, Alexey Radul has finished his thesis and it has been published!
'Propagation Networks: A Flexible and Expressive Substrate for Computation', http://dspace.mit.edu/handle/1721.1/49525

Name: Anonymous 2009-11-16 11:13

>>10
YEAH IT'S LIKE PYTHON EXCEPT IT FITS ANII BETTER

Name: Anonymous 2009-11-16 11:23

>>6
While non-lispy syntax doesn't suit my tastes as much, I'm curious, is the code that installs that reader macro publicly available?

Name: Anonymous 2009-11-16 11:38

>>14
Nope, it's quick and dirty hack which I really would not want anyone to see. However, it's only ~130 lines, most of which being lexer and grammar definition, and it's trivial to implement, given that you already have a parsing library.

Name: Anonymous 2010-12-22 21:57

Name: Anonymous 2011-02-04 13:00


Don't change these.
Name: Email:
Entire Thread Thread List