Isoraqathedh

Max-coords-needed

Mar 23rd, 2014
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 3.88 KB | None | 0 0
  1. (defun max-coords-needed (piece)
  2.   (loop for dest in piece
  3.      if (keywordp (first dest))
  4.        maximize (reduce #'+ (subseq dest 2) :key #'first) into max-x and
  5.        maximize (reduce #'+ (subseq dest 2) :key #'second) into max-y
  6.      else
  7.        maximize (first dest) into max-x and
  8.        maximize (second dest) into max-y
  9.      finally (return (list max-x max-y))))
  10.  
  11. ; in: DEFUN MAKE-DIAGRAM-ARRAY
  12. ;     (LOOP FOR DEST IN PIECE
  13. ;           IF (KEYWORDP (FIRST DEST))
  14. ;           MAXIMIZE (REDUCE #'+ (SUBSEQ DEST 2) :KEY #'FIRST) INTO MAX-X
  15. ;           AND ...)
  16. ; --> BLOCK LET SB-LOOP::WITH-MINIMAX-VALUE
  17. ; ==>
  18. ;   (LET ((MAX-X 0) (#:LOOP-MAXMIN-TEMP-1 0) (#:LOOP-MAXMIN-FLAG-2 NIL))
  19. ;     (DECLARE (TYPE REAL MAX-X #:LOOP-MAXMIN-TEMP-1))
  20. ;     (SB-LOOP::WITH-MINIMAX-VALUE #S(SB-LOOP::LOOP-MINIMAX
  21. ;                                     :ANSWER-VARIABLE MAX-Y
  22. ;                                     :TYPE REAL
  23. ;                                     :TEMP-VARIABLE #:LOOP-MAXMIN-TEMP-3
  24. ;                                     :FLAG-VARIABLE #:LOOP-MAXMIN-FLAG-4
  25. ;                                     :OPERATIONS (MAX)
  26. ;                                     :INFINITY-DATA NIL)
  27. ;       (SB-LOOP::WITH-MINIMAX-VALUE #S(SB-LOOP::LOOP-MINIMAX
  28. ;                                       :ANSWER-VARIABLE MAX-X
  29. ;                                       :TYPE REAL
  30. ;                                       :TEMP-VARIABLE #:LOOP-MAXMIN-TEMP-1
  31. ;                                       :FLAG-VARIABLE #:LOOP-MAXMIN-FLAG-2
  32. ;                                       :OPERATIONS (MAX)
  33. ;                                       :INFINITY-DATA NIL)
  34. ;         (SB-LOOP::WITH-MINIMAX-VALUE #S(SB-LOOP::LOOP-MINIMAX
  35. ;                                         :ANSWER-VARIABLE MAX-Y
  36. ;                                         :TYPE REAL
  37. ;                                         :TEMP-VARIABLE #:LOOP-MAXMIN-TEMP-3
  38. ;                                         :FLAG-VARIABLE #:LOOP-MAXMIN-FLAG-4
  39. ;                                         :OPERATIONS #
  40. ;                                         :INFINITY-DATA NIL)
  41. ;           (SB-LOOP::LOOP-BODY NIL # # # #)))))
  42. ;
  43. ; caught STYLE-WARNING:
  44. ;   The variable MAX-X is defined but never used.
  45. ;
  46. ; caught STYLE-WARNING:
  47. ;   The variable #:LOOP-MAXMIN-TEMP-1 is defined but never used.
  48. ;
  49. ; caught STYLE-WARNING:
  50. ;   The variable #:LOOP-MAXMIN-FLAG-2 is defined but never used.
  51.  
  52. ; --> BLOCK LET SB-LOOP::WITH-MINIMAX-VALUE LET
  53. ; --> SB-LOOP::WITH-MINIMAX-VALUE
  54. ; ==>
  55. ;   (LET ((MAX-Y 0) (#:LOOP-MAXMIN-TEMP-3 0) (#:LOOP-MAXMIN-FLAG-4 NIL))
  56. ;     (DECLARE (TYPE REAL MAX-Y #:LOOP-MAXMIN-TEMP-3))
  57. ;     (SB-LOOP::WITH-MINIMAX-VALUE #S(SB-LOOP::LOOP-MINIMAX
  58. ;                                     :ANSWER-VARIABLE MAX-X
  59. ;                                     :TYPE REAL
  60. ;                                     :TEMP-VARIABLE #:LOOP-MAXMIN-TEMP-1
  61. ;                                     :FLAG-VARIABLE #:LOOP-MAXMIN-FLAG-2
  62. ;                                     :OPERATIONS (MAX)
  63. ;                                     :INFINITY-DATA NIL)
  64. ;       (SB-LOOP::WITH-MINIMAX-VALUE #S(SB-LOOP::LOOP-MINIMAX
  65. ;                                       :ANSWER-VARIABLE MAX-Y
  66. ;                                       :TYPE REAL
  67. ;                                       :TEMP-VARIABLE #:LOOP-MAXMIN-TEMP-3
  68. ;                                       :FLAG-VARIABLE #:LOOP-MAXMIN-FLAG-4
  69. ;                                       :OPERATIONS (MAX)
  70. ;                                       :INFINITY-DATA NIL)
  71. ;         (SB-LOOP::LOOP-BODY NIL (# # NIL #) (#) (# # NIL #) (#)))))
  72. ;
  73. ; caught STYLE-WARNING:
  74. ;   The variable MAX-Y is defined but never used.
  75. ;
  76. ; caught STYLE-WARNING:
  77. ;   The variable #:LOOP-MAXMIN-TEMP-3 is defined but never used.
  78. ;
  79. ; caught STYLE-WARNING:
  80. ;   The variable #:LOOP-MAXMIN-FLAG-4 is defined but never used.
  81. ;
  82. ; compilation unit finished
  83. ;   caught 6 STYLE-WARNING conditions
Advertisement
Add Comment
Please, Sign In to add comment