Mais um blog inútil.

Novembro 11, 2013

Arvorezinha v1 e v2 – Lisp

Filed under: Arvorezinha,Coding,Useless — falso @ 10:55

Ora viva amigos!

Tive uma submissão de arvorezinhas de um comparsa dos mirques, o _Lone_Wolf_ , ele presenteou-nos com as duas versões em Lisp.

v1

(defun arvorezinha (count) (loop for i from 1 to count do (princ(concatenate 'string (make-string i :initial-element #\*) (format t "~%" #\linefeed)))))

v2

(defun arvorezinha2 (height) (loop
    (loop for i from 1 to height do (princ(concatenate 'string (make-string (- height i -1) :initial-element #\ ) (make-string (- (* 2 i) 1) :initial-element #\*) (format t "~%" #\linefeed))))    
    (setf trunk (floor (/ (- (* height 2) 1) 2)))
    (loop for i from 1 to (/ height 2) do
      (if (/= (mod height 2) 0)
          (princ(concatenate 'string (make-string (+ (/ trunk 2) 1) :initial-element #\ ) (make-string (+ trunk 1) :initial-element #\#) (format t "~%" #\linefeed)))
          (princ(concatenate 'string (make-string (+ (ceiling (/ trunk 2)) 1) :initial-element #\ ) (make-string trunk :initial-element #\#) (format t "~%" #\linefeed)))
      )
    )
    (return '*****)
))

Pode-se experimentar o codigo aqui: http://www.compileonline.com/execute_lisp_online.php
Já agora, o que está aí são só funções pelo que estive a ver. Então para experimentar corre-se o seguinte:

;;v1
(arvorezinha 5)
;;v2
(arvorezinha2 5)

Comentar

widgeon
widgeon
widgeon
widgeon