Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NP-Complete Appetizers bug

I'm trying to solve this in a brute-force manner using Common Lisp. For educational and entertainment purposes.

Here's the code

(defparameter +items+
  '((:mixed-fruit 215)
    (:french-fries 275)
    (:side-salad 335)
    (:hot-wings 355)
    (:mozzarella-sticks 420)
    (:sampler-plate 580)))

(defun appetizers (limit items)
  (let ((res (make-hash-table :test 'equal)))
    (labels ((rec (total acc)
               (if (= total limit)
                   (setf (gethash (sort acc #'string<= :key #'symbol-name) res) total)
                   (loop for (name val) in items for 
                         new-total = (+ total val)
                         when (>= limit new-total) 
                           do (rec new-total (cons name acc))))))
      (rec 0 nil)
      (alexandria:hash-table-alist res))))

I think this should give me back the correct result. Given a limit and a table of (<item-name> <price>)

  1. start from 0 and the empty list.
  2. If the running total is equal to limit, sort this result and store it.
  3. For each item in the input item table, if the price of adding it to the already chosen items would be less than or equal to the limit, recur with its cost added to the running total, and it added to the chosen items list.
  4. Once you're done, collect all the recorded results.

The problem is, it returns incorrect output:

CL-USER> (appetizers 1505 +items+)
(((:HOT-WINGS :HOT-WINGS :HOT-WINGS :MIXED-FRUIT :MIXED-FRUIT :SAMPLER-PLATE)
  . 1505)
 ((:HOT-WINGS :HOT-WINGS :MIXED-FRUIT :SAMPLER-PLATE) . 1505)
 ((:HOT-WINGS :MIXED-FRUIT :MIXED-FRUIT :MIXED-FRUIT :SAMPLER-PLATE
   :SAMPLER-PLATE :SAMPLER-PLATE :SAMPLER-PLATE)
  . 1505)
 ((:HOT-WINGS :MIXED-FRUIT :MIXED-FRUIT :MIXED-FRUIT :MIXED-FRUIT
   :SAMPLER-PLATE :SAMPLER-PLATE :SAMPLER-PLATE :SAMPLER-PLATE)
  . 1505)
 ((:MIXED-FRUIT :SAMPLER-PLATE :SAMPLER-PLATE) . 1505)
 ((:HOT-WINGS :SAMPLER-PLATE :SAMPLER-PLATE :SAMPLER-PLATE) . 1505)
 ((:HOT-WINGS :HOT-WINGS :HOT-WINGS :SAMPLER-PLATE :SAMPLER-PLATE
   :SAMPLER-PLATE)
  . 1505)
 ((:SAMPLER-PLATE :SAMPLER-PLATE) . 1505)
 ((:HOT-WINGS :HOT-WINGS :MIXED-FRUIT :MIXED-FRUIT :MIXED-FRUIT :MIXED-FRUIT
   :MIXED-FRUIT :SAMPLER-PLATE :SAMPLER-PLATE :SAMPLER-PLATE)
  . 1505)
 ((:HOT-WINGS :HOT-WINGS :HOT-WINGS :MIXED-FRUIT :MIXED-FRUIT :SAMPLER-PLATE
   :SAMPLER-PLATE :SAMPLER-PLATE)
  . 1505)
 ((:MIXED-FRUIT :MIXED-FRUIT :SAMPLER-PLATE :SAMPLER-PLATE :SAMPLER-PLATE)
  . 1505))
CL-USER> 

It claims they're each 1505 worth of appetizers, but actually aren't:

CL-USER> (defun cost-of (chosen-items items)
            (loop for i in chosen-items
                  sum (second (assoc i items))))
COST-OF
CL-USER> (loop for (lst . quote-total-endquote) 
                 in (appetizers 1505 +items+)
               collect (cost-of lst +items+))
(2075 1505 3320 3535 1375 2095 2805 1160 3525 3235 2170)
CL-USER> 

If I try to print things out step-by-step

(defun appetizers (limit items)
  (let ((res (make-hash-table :test 'equal)))
    (labels ((rec (total acc)
               (format t "Recurring with ~s ~s~%" total acc)
               (if (= total limit)
                   (progn 
                     (format t "Done: ~s ~s (~s)~%" total acc (cost-of acc items))
                     (setf 
                        (gethash (sort acc #'string<= :key #'symbol-name) res) 
                        total))
                   (loop for (name price) in items 
                         for new-total = (+ total price)
                         when (>= limit new-total) 
                           do (rec new-total (cons name acc))))))
      (rec 0 nil)
      (alexandria:hash-table-alist res))))

I get some rather odd results

CL-USER> (appetizers 1505 +items+)
Recurring with 0 NIL
Recurring with 215 (:MIXED-FRUIT)
Recurring with 430 (:MIXED-FRUIT :MIXED-FRUIT)
Recurring with 645 (:MIXED-FRUIT :MIXED-FRUIT :MIXED-FRUIT)
Recurring with 860 (:MIXED-FRUIT :MIXED-FRUIT :MIXED-FRUIT :MIXED-FRUIT)
Recurring with 1075 (:MIXED-FRUIT :MIXED-FRUIT :MIXED-FRUIT :MIXED-FRUIT
                     :MIXED-FRUIT)
Recurring with 1290 (:MIXED-FRUIT :MIXED-FRUIT :MIXED-FRUIT :MIXED-FRUIT
                     :MIXED-FRUIT :MIXED-FRUIT)
Recurring with 1505 (:MIXED-FRUIT :MIXED-FRUIT :MIXED-FRUIT :MIXED-FRUIT
                     :MIXED-FRUIT :MIXED-FRUIT :MIXED-FRUIT)
Done: 1505 (:MIXED-FRUIT :MIXED-FRUIT :MIXED-FRUIT :MIXED-FRUIT
            :MIXED-FRUIT :MIXED-FRUIT :MIXED-FRUIT) (1505)
Recurring with 1350 (:FRENCH-FRIES :MIXED-FRUIT) ;; wrong
Recurring with 1410 (:SIDE-SALAD :MIXED-FRUIT)   ;; wrong
Recurring with 1430 (:HOT-WINGS :MIXED-FRUIT)    ;; wrong

All of the lines labelled wrong seem to have the single :mixed-fruit priced at 1075, which is actually the price of 5x:mixed-fruit.

I've been staring at this long enough that I'm pretty sure I can't find the bug myself. Where did I go wrong here?

like image 546
Inaimathi Avatar asked Apr 24 '26 00:04

Inaimathi


1 Answers

The function sort is destructive; it's permitted to destructively modify a list. This leads to strange results when you're incrementally building and storing a list. First, let's look at a simple example. The results in the following are what I get with SBCL, but implementations could do different things.

(loop
   for n from 0 below 5
   for l = (list n) then (list* n l)
   collecting (sort l '<))
;=> ((0 1 2 3 4) (0 1 2 3 4) (1 2 3 4) (2 3 4) (3 4))

What you really want instead is to copy the list before you sort it:

(loop
   for n from 0 below 5
   for l = (list n) then (list* n l)
   collecting (sort (copy-list l) '<))
;=> ((0) (0 1) (0 1 2) (0 1 2 3) (0 1 2 3 4))

How does this apply to your code? You use sort in:

(setf (gethash (sort acc #'string<= :key #'symbol-name) res) total)

This means the first time you do this, you're storing the correct list in the hash table, but acc itself may no longer be what you expect it to be, and on subsequent iterations, you may modify the list structure again, which may also modify the keys in the table. If you sort a copy of acc rather than acc you get different results. Compare this updated code and the results:

(defun appetizers (limit items)
  (let ((res (make-hash-table :test 'equal)))
    (labels ((rec (total acc)
               (if (= total limit)
                   (setf (gethash (sort (copy-list acc) #'string<= :key #'symbol-name) res) total) 
                                        ;;^^^^^^^^^^^^^
                   (loop for (name val) in items for 
                         new-total = (+ total val)
                         when (>= limit new-total) 
                           do (rec new-total (cons name acc))))))
      (rec 0 nil)
      (hash-table-alist res))))

CL-USER> (appetizers 1505 +items+)
(((:HOT-WINGS :HOT-WINGS :MIXED-FRUIT :SAMPLER-PLATE) . 1505)
 ((:MIXED-FRUIT :MIXED-FRUIT :MIXED-FRUIT :MIXED-FRUIT :MIXED-FRUIT :MIXED-FRUIT :MIXED-FRUIT) . 1505))

To see what kind of modifications were happening to acc, you can add some debug output to your loop. E.g.,

(defun appetizers (limit items)
  (let ((res (make-hash-table :test 'equal)))
    (labels ((rec (total acc)
               (if (= total limit)
                   (setf (gethash (sort acc #'string<= :key #'symbol-name) res) total)
                   (loop for (name val) in items for 
                         new-total = (+ total val)
                      with acc2 = (copy-list acc)
                      when (>= limit new-total)
                      do (rec new-total (cons name acc))
                         (when (not (equal acc2 acc))
                           (format t "~&changed from ~a to ~a" acc acc2))))))
      (rec 0 nil)
      (hash-table-alist res))))

CL-USER> (appetizers 1505 +items+)
changed from (MIXED-FRUIT MIXED-FRUIT) to (MIXED-FRUIT MIXED-FRUIT
                                           MIXED-FRUIT MIXED-FRUIT
                                           MIXED-FRUIT MIXED-FRUIT)
changed from (MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT) to (MIXED-FRUIT
                                                       MIXED-FRUIT
                                                       MIXED-FRUIT
                                                       MIXED-FRUIT
                                                       MIXED-FRUIT)
changed from (MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT) to (MIXED-FRUIT
                                                       MIXED-FRUIT
                                                       MIXED-FRUIT
                                                       MIXED-FRUIT
                                                       MIXED-FRUIT)
changed from (MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT) to (MIXED-FRUIT
                                                       MIXED-FRUIT
                                                       MIXED-FRUIT
                                                       MIXED-FRUIT
                                                       MIXED-FRUIT)
changed from (MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT) to (MIXED-FRUIT
                                                       MIXED-FRUIT
                                                       MIXED-FRUIT
                                                       MIXED-FRUIT
                                                       MIXED-FRUIT)
changed from (MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT) to (MIXED-FRUIT
                                                       MIXED-FRUIT
                                                       MIXED-FRUIT
                                                       MIXED-FRUIT
                                                       MIXED-FRUIT)
changed from (MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT) to (MIXED-FRUIT
                                                                               MIXED-FRUIT
                                                                               MIXED-FRUIT)
changed from (MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT) to (MIXED-FRUIT
                                                                               MIXED-FRUIT
                                                                               MIXED-FRUIT)
changed from (MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT) to (MIXED-FRUIT
                                                                               MIXED-FRUIT
                                                                               MIXED-FRUIT)
changed from (MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT) to (MIXED-FRUIT
                                                                               MIXED-FRUIT
                                                                               MIXED-FRUIT)
changed from (MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT) to (MIXED-FRUIT
                                                                               MIXED-FRUIT
                                                                               MIXED-FRUIT)
changed from (MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT) to (MIXED-FRUIT
                                                                               MIXED-FRUIT
                                                                               MIXED-FRUIT)
changed from (MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
              MIXED-FRUIT) to (MIXED-FRUIT MIXED-FRUIT)
changed from (MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
              MIXED-FRUIT) to (MIXED-FRUIT MIXED-FRUIT)
changed from (MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
              MIXED-FRUIT) to (MIXED-FRUIT MIXED-FRUIT)
changed from (MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
              MIXED-FRUIT) to (MIXED-FRUIT MIXED-FRUIT)
changed from (MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
              MIXED-FRUIT) to (MIXED-FRUIT MIXED-FRUIT)
changed from (MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
              MIXED-FRUIT) to (MIXED-FRUIT MIXED-FRUIT)
changed from (MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
              MIXED-FRUIT MIXED-FRUIT) to (MIXED-FRUIT)
changed from (MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
              MIXED-FRUIT MIXED-FRUIT) to (MIXED-FRUIT)
changed from (MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
              MIXED-FRUIT MIXED-FRUIT) to (MIXED-FRUIT)
changed from (HOT-WINGS MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
              MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT SAMPLER-PLATE) to (HOT-WINGS
                                                                     HOT-WINGS
                                                                     MIXED-FRUIT
                                                                     MIXED-FRUIT
                                                                     MIXED-FRUIT
                                                                     MIXED-FRUIT
                                                                     MIXED-FRUIT
                                                                     MIXED-FRUIT
                                                                     MIXED-FRUIT)
changed from (HOT-WINGS HOT-WINGS MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
              MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
              SAMPLER-PLATE) to (HOT-WINGS MIXED-FRUIT MIXED-FRUIT
                                 MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
                                 MIXED-FRUIT MIXED-FRUIT)
changed from (HOT-WINGS HOT-WINGS MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
              MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
              SAMPLER-PLATE) to (HOT-WINGS MIXED-FRUIT MIXED-FRUIT
                                 MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
                                 MIXED-FRUIT MIXED-FRUIT)
changed from (SAMPLER-PLATE) to (SAMPLER-PLATE HOT-WINGS HOT-WINGS
                                 MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
                                 MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
                                 MIXED-FRUIT SAMPLER-PLATE)
changed from (HOT-WINGS HOT-WINGS MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
              MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
              SAMPLER-PLATE SAMPLER-PLATE) to (HOT-WINGS MIXED-FRUIT
                                               MIXED-FRUIT MIXED-FRUIT
                                               MIXED-FRUIT MIXED-FRUIT
                                               MIXED-FRUIT MIXED-FRUIT)
changed from (MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
              MIXED-FRUIT MIXED-FRUIT SAMPLER-PLATE SAMPLER-PLATE) to (MIXED-FRUIT)
changed from (MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
              MIXED-FRUIT MIXED-FRUIT SAMPLER-PLATE SAMPLER-PLATE) to (MIXED-FRUIT)
changed from (HOT-WINGS HOT-WINGS MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
              MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
              SAMPLER-PLATE SAMPLER-PLATE SAMPLER-PLATE) to (HOT-WINGS
                                                             SAMPLER-PLATE
                                                             MIXED-FRUIT
                                                             MIXED-FRUIT
                                                             MIXED-FRUIT
                                                             MIXED-FRUIT
                                                             MIXED-FRUIT
                                                             MIXED-FRUIT
                                                             MIXED-FRUIT
                                                             SAMPLER-PLATE
                                                             SAMPLER-PLATE)
changed from (SAMPLER-PLATE) to (SAMPLER-PLATE MIXED-FRUIT MIXED-FRUIT
                                 MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
                                 MIXED-FRUIT MIXED-FRUIT SAMPLER-PLATE
                                 SAMPLER-PLATE)
changed from (SAMPLER-PLATE) to (SAMPLER-PLATE MIXED-FRUIT MIXED-FRUIT
                                 MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
                                 MIXED-FRUIT MIXED-FRUIT SAMPLER-PLATE
                                 SAMPLER-PLATE)
changed from (SAMPLER-PLATE) to (SAMPLER-PLATE MIXED-FRUIT MIXED-FRUIT
                                 MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
                                 MIXED-FRUIT MIXED-FRUIT SAMPLER-PLATE
                                 SAMPLER-PLATE)
changed from (MIXED-FRUIT SAMPLER-PLATE SAMPLER-PLATE SAMPLER-PLATE) to (MIXED-FRUIT)
changed from (HOT-WINGS MIXED-FRUIT SAMPLER-PLATE) to (HOT-WINGS
                                                       MIXED-FRUIT
                                                       HOT-WINGS)
changed from (MIXED-FRUIT SAMPLER-PLATE) to (MIXED-FRUIT HOT-WINGS)
changed from (MIXED-FRUIT SAMPLER-PLATE) to (MIXED-FRUIT HOT-WINGS)
changed from (SAMPLER-PLATE) to (SAMPLER-PLATE MIXED-FRUIT SAMPLER-PLATE)
changed from (MIXED-FRUIT SAMPLER-PLATE SAMPLER-PLATE) to (MIXED-FRUIT
                                                           HOT-WINGS)
changed from (HOT-WINGS HOT-WINGS MIXED-FRUIT SAMPLER-PLATE SAMPLER-PLATE) to (HOT-WINGS)
changed from (HOT-WINGS HOT-WINGS MIXED-FRUIT SAMPLER-PLATE SAMPLER-PLATE) to (HOT-WINGS)
changed from (HOT-WINGS HOT-WINGS MIXED-FRUIT SAMPLER-PLATE SAMPLER-PLATE) to (HOT-WINGS)
changed from (MIXED-FRUIT SAMPLER-PLATE SAMPLER-PLATE SAMPLER-PLATE) to (MIXED-FRUIT
                                                                         HOT-WINGS
                                                                         HOT-WINGS
                                                                         HOT-WINGS
                                                                         MIXED-FRUIT
                                                                         SAMPLER-PLATE
                                                                         SAMPLER-PLATE)
changed from (HOT-WINGS MIXED-FRUIT MIXED-FRUIT SAMPLER-PLATE
              SAMPLER-PLATE SAMPLER-PLATE) to (HOT-WINGS HOT-WINGS
                                               HOT-WINGS MIXED-FRUIT
                                               SAMPLER-PLATE SAMPLER-PLATE)
changed from (HOT-WINGS MIXED-FRUIT MIXED-FRUIT SAMPLER-PLATE
              SAMPLER-PLATE SAMPLER-PLATE) to (HOT-WINGS HOT-WINGS
                                               HOT-WINGS MIXED-FRUIT
                                               SAMPLER-PLATE SAMPLER-PLATE)
changed from (HOT-WINGS MIXED-FRUIT MIXED-FRUIT SAMPLER-PLATE
              SAMPLER-PLATE SAMPLER-PLATE) to (HOT-WINGS HOT-WINGS
                                               HOT-WINGS MIXED-FRUIT
                                               SAMPLER-PLATE SAMPLER-PLATE)
changed from (HOT-WINGS MIXED-FRUIT MIXED-FRUIT SAMPLER-PLATE
              SAMPLER-PLATE SAMPLER-PLATE) to (HOT-WINGS HOT-WINGS
                                               HOT-WINGS MIXED-FRUIT
                                               SAMPLER-PLATE SAMPLER-PLATE)
changed from (HOT-WINGS MIXED-FRUIT MIXED-FRUIT SAMPLER-PLATE
              SAMPLER-PLATE SAMPLER-PLATE) to (HOT-WINGS HOT-WINGS
                                               HOT-WINGS MIXED-FRUIT
                                               SAMPLER-PLATE SAMPLER-PLATE)
changed from (SAMPLER-PLATE) to (SAMPLER-PLATE HOT-WINGS MIXED-FRUIT
                                 MIXED-FRUIT SAMPLER-PLATE SAMPLER-PLATE
                                 SAMPLER-PLATE)
changed from (HOT-WINGS MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT SAMPLER-PLATE
              SAMPLER-PLATE SAMPLER-PLATE SAMPLER-PLATE) to (HOT-WINGS
                                                             HOT-WINGS
                                                             HOT-WINGS
                                                             MIXED-FRUIT
                                                             SAMPLER-PLATE
                                                             SAMPLER-PLATE)
changed from (HOT-WINGS HOT-WINGS MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
              SAMPLER-PLATE SAMPLER-PLATE SAMPLER-PLATE SAMPLER-PLATE) to (HOT-WINGS)
changed from (HOT-WINGS HOT-WINGS MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
              SAMPLER-PLATE SAMPLER-PLATE SAMPLER-PLATE SAMPLER-PLATE) to (HOT-WINGS)
changed from (MIXED-FRUIT SAMPLER-PLATE SAMPLER-PLATE SAMPLER-PLATE
              SAMPLER-PLATE SAMPLER-PLATE) to (MIXED-FRUIT SAMPLER-PLATE
                                               HOT-WINGS HOT-WINGS
                                               MIXED-FRUIT MIXED-FRUIT
                                               MIXED-FRUIT SAMPLER-PLATE
                                               SAMPLER-PLATE SAMPLER-PLATE
                                               SAMPLER-PLATE)
changed from (SAMPLER-PLATE) to (SAMPLER-PLATE HOT-WINGS HOT-WINGS
                                 MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
                                 SAMPLER-PLATE SAMPLER-PLATE SAMPLER-PLATE
                                 SAMPLER-PLATE)
changed from (SAMPLER-PLATE) to (SAMPLER-PLATE HOT-WINGS HOT-WINGS
                                 MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
                                 SAMPLER-PLATE SAMPLER-PLATE SAMPLER-PLATE
                                 SAMPLER-PLATE)
changed from (SAMPLER-PLATE) to (SAMPLER-PLATE HOT-WINGS HOT-WINGS
                                 MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
                                 SAMPLER-PLATE SAMPLER-PLATE SAMPLER-PLATE
                                 SAMPLER-PLATE)
changed from (HOT-WINGS MIXED-FRUIT SAMPLER-PLATE) to (HOT-WINGS
                                                       SAMPLER-PLATE)
changed from (SAMPLER-PLATE) to (SAMPLER-PLATE HOT-WINGS HOT-WINGS
                                 MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
                                 SAMPLER-PLATE SAMPLER-PLATE SAMPLER-PLATE
                                 SAMPLER-PLATE)
changed from (SAMPLER-PLATE) to (SAMPLER-PLATE HOT-WINGS HOT-WINGS
                                 MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
                                 SAMPLER-PLATE SAMPLER-PLATE SAMPLER-PLATE
                                 SAMPLER-PLATE)
changed from (HOT-WINGS HOT-WINGS MIXED-FRUIT MIXED-FRUIT MIXED-FRUIT
              MIXED-FRUIT SAMPLER-PLATE SAMPLER-PLATE SAMPLER-PLATE
              SAMPLER-PLATE SAMPLER-PLATE) to (HOT-WINGS)
changed from (HOT-WINGS HOT-WINGS MIXED-FRUIT SAMPLER-PLATE) to (HOT-WINGS
                                                                 MIXED-FRUIT
                                                                 SAMPLER-PLATE)
changed from (MIXED-FRUIT SAMPLER-PLATE) to (MIXED-FRUIT HOT-WINGS
                                             SAMPLER-PLATE)
changed from (HOT-WINGS HOT-WINGS MIXED-FRUIT SAMPLER-PLATE) to (HOT-WINGS
                                                                 SAMPLER-PLATE)
changed from (HOT-WINGS HOT-WINGS MIXED-FRUIT SAMPLER-PLATE) to (HOT-WINGS
                                                                 SAMPLER-PLATE)
changed from (HOT-WINGS HOT-WINGS MIXED-FRUIT SAMPLER-PLATE) to (HOT-WINGS
                                                                 SAMPLER-PLATE)
changed from (HOT-WINGS MIXED-FRUIT MIXED-FRUIT SAMPLER-PLATE) to (HOT-WINGS
                                                                   HOT-WINGS
                                                                   HOT-WINGS
                                                                   MIXED-FRUIT
                                                                   SAMPLER-PLATE)
changed from (HOT-WINGS HOT-WINGS MIXED-FRUIT MIXED-FRUIT SAMPLER-PLATE) to (HOT-WINGS
                                                                             SAMPLER-PLATE)
changed from (HOT-WINGS HOT-WINGS MIXED-FRUIT MIXED-FRUIT SAMPLER-PLATE) to (HOT-WINGS
                                                                             SAMPLER-PLATE)
(((:HOT-WINGS :HOT-WINGS :HOT-WINGS :MIXED-FRUIT :MIXED-FRUIT :SAMPLER-PLATE)
  . 1505)
 ((:HOT-WINGS :HOT-WINGS :MIXED-FRUIT :SAMPLER-PLATE) . 1505)
 ((:HOT-WINGS :MIXED-FRUIT :SAMPLER-PLATE) . 1505)
 ((:HOT-WINGS :HOT-WINGS :HOT-WINGS :MIXED-FRUIT :MIXED-FRUIT :MIXED-FRUIT
   :MIXED-FRUIT :SAMPLER-PLATE :SAMPLER-PLATE :SAMPLER-PLATE :SAMPLER-PLATE
   :SAMPLER-PLATE)
  . 1505)
 ((:HOT-WINGS :HOT-WINGS :HOT-WINGS :MIXED-FRUIT :MIXED-FRUIT :MIXED-FRUIT
   :MIXED-FRUIT :SAMPLER-PLATE :SAMPLER-PLATE :SAMPLER-PLATE :SAMPLER-PLATE
   :SAMPLER-PLATE)
  . 1505)
 ((:HOT-WINGS :MIXED-FRUIT :MIXED-FRUIT :MIXED-FRUIT :SAMPLER-PLATE
   :SAMPLER-PLATE :SAMPLER-PLATE :SAMPLER-PLATE :SAMPLER-PLATE)
  . 1505)
 ((:HOT-WINGS :HOT-WINGS :MIXED-FRUIT :MIXED-FRUIT :MIXED-FRUIT :MIXED-FRUIT
   :SAMPLER-PLATE :SAMPLER-PLATE :SAMPLER-PLATE :SAMPLER-PLATE :SAMPLER-PLATE)
  . 1505)
 ((:HOT-WINGS :HOT-WINGS :MIXED-FRUIT :MIXED-FRUIT :MIXED-FRUIT :MIXED-FRUIT
   :MIXED-FRUIT :MIXED-FRUIT :MIXED-FRUIT :SAMPLER-PLATE :SAMPLER-PLATE
   :SAMPLER-PLATE)
  . 1505)
 ((:HOT-WINGS :HOT-WINGS :HOT-WINGS :MIXED-FRUIT :SAMPLER-PLATE :SAMPLER-PLATE
   :SAMPLER-PLATE)
  . 1505)
 ((:HOT-WINGS :HOT-WINGS :MIXED-FRUIT :SAMPLER-PLATE :SAMPLER-PLATE
   :SAMPLER-PLATE)
  . 1505)
 ((:MIXED-FRUIT :SAMPLER-PLATE :SAMPLER-PLATE :SAMPLER-PLATE) . 1505))
like image 155
Joshua Taylor Avatar answered Apr 27 '26 14:04

Joshua Taylor