Now I shall give you the Take Home Challenge Entire Prompt for reference:

Background 
Zipline both flies autonomous vehicles and operates a full-fledged logistics system. We run operations out of our distribution centers, which we call "nests." At a given nest, we have an inventory of medical supplies and a team of operators who manage that inventory and process orders from doctors. 
We’re going to build a lightweight inventory management and order processing system. This system will 
● manage an inventory of products 
● keep track of which items have been stocked 
● transform incoming orders into outgoing shipments as appropriate 
There are a number of reasons that we might not be able to directly ship the order as received: 
● The order is too big to fit in a single shipment (our max package size is 1.8kg) 
● We could be out of the requested product, in which case the order may be only partially filled 
Problem 
Let's build the backend of the system. Work in your best language. 
● Assume that the system starts with an "empty" inventory. 
● Before anything else happens, we will call init\_catalog. This serves to capture the list of products that are allowed to be stocked or ordered. 
● After this, our system will receive inputs via one interface: process\_order. These represent APIs that would be invoked by an external service. 
○ process\_order will be called to inject a new order into the system 
● Our goal is to make sure that, eventually, our program invokes a ship\_package API as many times as necessary to fulfill an order. 
● No single call to ship\_package should ever exceed the maximum shipment size (1.8kg). 
For convenience, each of these functions can be assumed to take a native list or dictionary loaded from a JSON payload. 
● init\_catalog(product\_info) – this will take an input of product\_info and do any setup necessary. This will be called once at the beginning program before any calls to
process\_order. After init\_catalog is first called, we can assume we have 0 of each product type. 
Example JSON for product\_info: 
[{"mass\_g": 700, "product\_name": "RBC A+ Adult", "product\_id": 0}, {"mass\_g": 700, "product\_name": "RBC B+ Adult", "product\_id": 1}, {"mass\_g": 750, "product\_name": "RBC AB+ Adult", "product\_id": 2}, {"mass\_g": 680, "product\_name": "RBC O- Adult", "product\_id": 3}, {"mass\_g": 350, "product\_name": "RBC A+ Child", "product\_id": 4}, {"mass\_g": 200, "product\_name": "RBC AB+ Child", "product\_id": 5}, {"mass\_g": 120, "product\_name": "PLT AB+", "product\_id": 6}, {"mass\_g": 80, "product\_name": "PLT O+", "product\_id": 7}, {"mass\_g": 40, "product\_name": "CRYO A+", "product\_id": 8}, {"mass\_g": 80, "product\_name": "CRYO AB+", "product\_id": 9}, {"mass\_g": 300, "product\_name": "FFP A+", "product\_id": 10}, {"mass\_g": 300, "product\_name": "FFP B+", "product\_id": 11}, {"mass\_g": 300, "product\_name": "FFP AB+", "product\_id": 12}] 
● process\_order(order) – This represents an incoming order from a hospital. The argument is a description of the order to process. We should eventually invoke ship\_package (multiple times if necessary) such that all of the products listed in the order are shipped, but we should never ship products that have not yet been stocked as part of our inventory. Remember that each package has a maximum mass of 1.8 kg. 
Example JSON for order 
{"order\_id": 123, "requested": [{"product\_id": 0, "quantity": 2}, {"product\_id": 10, "quantity": 4}]} 
● ship\_package(shipment) – This is just a stub API. In reality, this would need to feed a user-interface informing a fulfillment operator to pack and ship the package; in our case, all this needs to do is print out the shipment to the console. 
Example JSON for shipment 
{"order\_id": 123, "shipped": [{"product\_id": 0, "quantity": 1}, {"product\_id": 10, "quantity": 2}]}
참고용으로 테이크 홈 챌린지 전체 프롬프트를 알려드리겠습니다:배경 짚라인은 자율주행차를 운행하는 동시에 본격적인 물류 시스템을 운영하고 있습니다. 우리는 "네스트"라고 부르는 물류 센터에서 사업을 운영합니다. 각 네스트에는 의료용품 재고가 있고, 그 재고를 관리하고 의사들의 주문을 처리하는 운영자 팀이 있습니다. 우리는 가벼운 재고 관리 및 주문 처리 시스템을 구축할 것입니다. 이 시스템은 다음을 수행합니다. 제품 재고 관리 어떤 품목이 입고되었는지 추적하고 들어오는 주문을 적절하게 나가는 배송으로 변환합니다. 주문이 접수된 대로 바로 배송할 수 없는 이유는 여러 가지가 있습니다: 주문이 너무 커서 한 번에 발송할 수 없는 경우(최대 패키지 크기는 1.8kg) 요청하신 제품이 부족할 수 있으며, 이 경우 주문이 부분적으로만 채워질 수 있습니다. 문제 시스템 백엔드를 구축해 봅시다. 가장 잘 사용하는 언어로 작업하세요. 시스템이 "빈" 인벤토리로 시작한다고 가정합니다. 다른 일이 일어나기 전에 init\_catalog를 호출합니다. 이는 재고 또는 주문이 허용되는 제품 목록을 캡처하는 역할을 합니다. 그 후 시스템은 프로세스\_order라는 하나의 인터페이스를 통해 입력을 받습니다. 이는 외부 서비스에서 호출할 수 있는 API를 나타냅니다. 프로세스\_주문은 시스템에 새 주문을 주입하기 위해 호출됩니다. 우리의 목표는 결국 프로그램이 주문을 처리하는 데 필요한 횟수만큼 ship\_package API를 호출하도록 하는 것입니다. 배송\_패키지에 대한 단일 호출이 최대 배송 크기(1.8kg)를 초과하지 않아야 합니다. 편의상 각 함수는 JSON 페이로드에서 로드된 네이티브 목록 또는 사전을 가져온다고 가정할 수 있습니다. init\_catalog(product\_info) - 제품\_info를 입력받아 필요한 설정을 수행합니다. 이 함수는 시작 프로그램에서 한 번 호출되며, 이후에는프로세스\_주문. init\_catalog가 처음 호출된 후에는 각 제품 유형이 0개라고 가정할 수 있습니다. 제품\_정보에 대한 JSON 예제: [{"mass\_g": 700, "product\_name": "RBC A+ 성인", "product\_id": 0}, {"mass\_g": 700, "product\_name": "RBC B+ 성인", "product\_id": 1}, {"mass\_g": 750, "product\_name": "RBC AB+ 성인", "product\_id": 2}, {"mass\_g": 680, "product\_name": "RBC O- 성인", "product\_id": 3}, {"mass\_g": 350, "product\_name": "RBC A+ 어린이", "product\_id": 4}, {"mass\_g": 200, "product\_name": "RBC AB+ Child", "product\_id": 5}, {"mass\_g": 120, "product\_name": "PLT AB+", "product\_id": 6}, {"mass\_g": 80, "product\_name": "PLT O+", "product\_id": 7}, {"mass\_g": 40, "product\_name": "CRYO A+", "product\_id": 8}, {"mass\_g": 80, "product\_name": "CRYO AB+", "product\_id": 9}, {"mass\_g": 300, "product\_name": "FFP A+", "product\_id": 10}, {"mass\_g": 300, "product\_name": "FFP B+", "product\_id": 11}, {"mass\_g": 300, "product\_name": "FFP AB+", "product\_id": 12}] 프로세스\_주문(주문) - 병원에서 들어오는 주문을 나타냅니다. 인수는 처리할 주문에 대한 설명입니다. 결국 주문에 나열된 모든 제품이 배송되도록 ship\_package(필요한 경우 여러 번)를 호출해야 하지만 아직 재고가 없는 제품은 재고의 일부로 배송해서는 안 됩니다. 각 패키지의 최대 중량은 1.8kg이라는 점을 기억하세요. 주문에 대한 JSON 예제 {"order\_id": 123, "요청됨": [{"product\_id": 0, "quantity": 2}, {"product\_id": 10, "quantity": 4}]} ship\_package(shipment) - 이것은 단지 스텁 API입니다. 실제로는 주문 처리 작업자에게 패키지를 포장하고 배송하라는 사용자 인터페이스를 제공해야 하지만, 이 경우에는 콘솔에 배송을 인쇄하기만 하면 됩니다. 배송에 대한 JSON 예제 {"order\_id": 123, "shipped": [{"product\_id": 0, "quantity": 1}, {"product\_id": 10, "quantity": 2}]}