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>)
0 and the empty list. limit, sort this result and store it. 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?
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))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With