Как мне найти соответствующий индекс для этих двух векторов? - PullRequest
0 голосов
/ 12 января 2020

В ближайшем будущем я пытаюсь получить свой вектор поиска заказов, чтобы найти индекс имени в списке имен:

(def customer-names ["Adam" "Beth" "Chloe" "Daniel" "Nathan" "Olivia"])

Чтобы затем использовать этот индекс, чтобы найти соответствующие заказы пиццы в этом vector

(def pizzas ["P" "M" "P" "C" "P" "P" "S" "C" "M" "M" "S" "C"])

Где у каждого человека в списке будет по 2 пиццы на заказ (в том же порядке, что и список клиентов)

(defn order-finder [customer-names][pizzas]
  customer-names(.indexOf v "Adam")
    (.indexOf (pizzas = (.indexOf (customer-names * 2)))))

Поскольку я новичок в этом языке Интересно, можно ли вообще так сделать?

1 Ответ

2 голосов
/ 12 января 2020

Полагаю, ваше настоящее требование состоит в поиске пиццы по имени клиента. А получение .indexOf - это лишь промежуточный шаг, который вы бы пропустили, чтобы упростить задачу.

(def customer-names ["Adam" "Beth" "Chloe" "Daniel" "Nathan" "Olivia"])
(def pizzas ["P" "M" "P" "C" "P" "P" "S" "C" "M" "M" "S" "C"])

;; each customer has 2 pizzas - so the pizzas array can be re-arranged like:
;;
(partition 2 pizzas)
;; => (("P" "M") ("P" "C") ("P" "P") ("S" "C") ("M" "M") ("S" "C"))

;; now the order finder is just a `Cojure` map with keys as 
;; customer names, values as the pizzas ordered
;;
(def order-finder
  (zipmap customer-names (partition 2 pizzas)))
;; => {"Adam" ("P" "M"), "Beth" ("P" "C"), "Chloe" ("P" "P"), "Daniel" ("S" "C"), "Nathan" ("M" "M"), "Olivia" ("S" "C")}

;; Now to find pizzas by customer name, just look it up from the order-finder map:
;; 
(order-finder "Adam")
;; => ("P" "M")

...