src/robots/bit-loom.lisp @ dcf037ea2878
Add second loom
| author | Steve Losh <steve@stevelosh.com> |
|---|---|
| date | Sun, 04 Feb 2018 00:51:49 -0500 |
| parents | 203fa16acf7a |
| children | 4c4396e7e5fa |
(in-package :magitek.robots.bit-loom) (defun pnm-to-png (pnm png) (sb-ext:run-program "pnmtopng" (list pnm) :search t :output png :error nil :if-output-exists :supersede) (sb-ext:run-program "mogrify" (list "-resize" "800x800" png) :error :output :search t)) (defun loom-1 (seed) (let ((depth (random-range-inclusive 16 19))) (flax.looms.001-triangles:loom seed depth "out.pnm" 3000 3000) (format nil "depth ~D" depth))) (defun loom-2 (seed) (let ((ticks (* 1000 (random-range-inclusive 3 8)))) (flax.looms.002-wobbly-lines:loom seed ticks "out.pnm" 2000 400) (format nil "~R ticks" ticks))) (defparameter *looms* '(loom-1 loom-2)) (defun generate-image (seed) (let* ((loom-index (random (length *looms*))) (loom (elt *looms* loom-index))) (pr 'running loom) (let ((extra (funcall loom seed))) (pnm-to-png "out.pnm" "out.png") (values (1+ loom-index) extra)))) (defun random-tweet () (let ((seed (random (expt 2 32)))) (multiple-value-bind (loom-number extra-information) (generate-image seed) (values (string-upcase (format nil "loom ~R, seed ~D~A" loom-number seed (if extra-information (concatenate 'string ", " extra-information) ""))) "out.png"))))