Cách đây một thời gian, tôi đã mua một chiếc ví mới có thể chứa 8 thẻ (4 cái ở cả hai mặt). Tuy nhiên, tôi dường như có nhiều thẻ hơn thế và tôi cần đưa ra lựa chọn mà tôi muốn mang theo bên mình. Một số thẻ tôi sử dụng thường xuyên hơn những thẻ khác, nhưng những thẻ tôi thích mang theo không nhất thiết là những thẻ tôi sử dụng nhiều nhất.
Các thách thức
Đưa ra một chồng thẻ, trả lại bố cục ví của tôi theo cách tốt nhất có thể ghi lại các ưu tiên và hạn chế của tôi. Bố cục nên như sau:
__ __ (row 1)
__ __ (row 2)
__ __ (row 3)
__ __ (row 4)
Hiện tại tôi có các thẻ sau - ngăn xếp sẽ luôn bao gồm một lựa chọn từ những thứ sau:
- 1 chứng minh nhân dân ( ID )
- 1 bằng lái xe ( DL )
- 2 thẻ tín dụng ( CC )
- 5 thẻ ghi nợ ( DC )
- 1 thẻ giao thông công cộng ( PC )
- 1 thẻ truy cập phòng tập thể dục ( GC )
- 9 thẻ thành viên từ các cửa hàng và kho ngẫu nhiên ( MC )
Tôi có một số ưu tiên và hạn chế:
- Thẻ được sắp xếp theo mức độ ưu tiên: ID, DL, CC, DC, PC, GC, MC
- Thẻ được sắp xếp theo tần suất sử dụng: CC, DC, PC, GC, MC, ID, DL
- Vì lý do an toàn, tổng số thẻ ghi nợ và thẻ tín dụng trong ví của tôi có thể nhiều hơn 1 so với tổng số tất cả các thẻ khác sẽ có trong ví của tôi ( N DC + N CC ≤ N ID + N DL + N PC + N GC + N MC +1).
- Nếu có, chứng minh nhân dân và bằng lái xe của tôi phải luôn ở hàng 1. Điều này không có nghĩa là các thẻ khác có thể không chiếm các vị trí trong hàng 1.
- Các thẻ được sử dụng thường xuyên nhất từ ngăn xếp phải luôn đi trong hàng 4.
Quy tắc
- Không có 2 thẻ có thể chiếm cùng một vị trí.
- Thẻ ưu tiên cao hơn luôn được ưu tiên hơn các thẻ ưu tiên thấp hơn, trừ khi hạn chế DC / CC có hiệu lực.
- ID / DL ở hàng 1 ghi đè quy tắc tần số: nếu chỉ được cung cấp ID, nó sẽ đi ở hàng 1 và hàng 4 sẽ trống!
- Định dạng đầu vào có thể được thực hiện theo bất kỳ cách nào bạn muốn, miễn là thứ tự của ngăn xếp đầu vào được giữ lại. ví dụ
ID,CC,PC,MC,MC,MC,DL
cũng có thể được cung cấp như ví dụ1ID 1CC 1PC 3MC 1DL 0DC 0GC
hoặcID CC PC MC MC MC DL
. Định dạng đầu ra có một vài hạn chế: tất cả các hàng phải bắt đầu ở một dòng mới, các cột phải được phân tách theo một cách nào đó. Các điểm trống có thể được trình bày theo bất kỳ cách nào bạn thích, miễn là nó không làm rối bố cục 4x2.
Có thể có nhiều hơn một giải pháp / đơn hàng, tùy thuộc vào bạn cung cấp giải pháp nào.
- Bạn có thể cho rằng các thẻ cùng loại sẽ luôn được nhóm ở đầu vào.
- Ngoài những điều trên, các quy tắc và quy tắc golf tiêu chuẩn được áp dụng.
Tặng kem
Bạn được phép xóa 15% tổng số tiền của mình nếu bạn cũng trả lại bất kỳ thẻ nào không có trong ví. In "Nó phù hợp!" trong trường hợp không còn thẻ Đầu ra bổ sung này nên được tách biệt rõ ràng với bố trí returend.
Ví dụ
Đầu vào:
ID, DL, CC, GC, MC
2 đầu ra có thể:
ID DL DL ID
__ __ or __ MC
MC __ __ __
CC GC GC CC
optional: It fits!
Đầu vào:
ID, CC, DC, PC, GC, MC, MC, MC, MC, MC
2 đầu ra có thể:
ID MC GC ID
MC MC or MC PC
PC GC MC MC
CC DC DC CC
optional: e.g. (MC, MC) or (2MC)
Đầu vào:
DC, DC, CC, CC, GC, DL
2 đầu ra có thể:
DL __ GC DL
__ __ or DC __
GC DC __ __
CC CC CC CC
optional: e.g. (DC) or (1DC)
Đầu vào:
CC, DC, DC, DC
2 đầu ra có thể:
__ __ __ __
__ __ or __ __
__ __ __ __
CC __ __ CC
optional: e.g. (DC, DC, DC) or (3DC)
Đầu vào:
CC, CC, MC, MC, MC, MC, MC, MC, PC, DC, DC, DC, DC, DC, GC
2 đầu ra có thể:
MC MC MC DC
PC GC or DC GC
DC DC PC MC
CC CC CC CC
optional: e.g. (DC, DC, DC, MC, MC, MC, MC) or (3DC, 4MC)
Đầu vào:
MC, MC, MC, MC, MC, MC, MC
2 đầu ra có thể:
__ MC MC MC
MC MC or MC MC
MC MC MC __
MC MC MC MC
optional: It fits!
Đầu vào:
ID, CC
2 đầu ra có thể:
ID __ __ ID
__ __ or __ __
__ __ __ __
CC __ CC __
optional: It fits!
Đây là mã golf , vì vậy mã ngắn nhất (tính bằng byte) sẽ thắng.