Giới thiệu
Bạn là bạn của một giám tuyển cho một bảo tàng nghệ thuật, người đã có niềm vui gần đây để có được nghệ thuật hiện đại từ bốn nghệ sĩ ( một số trong đó có thể cung cấp cho người quản lý không có tác phẩm nghệ thuật, những kẻ vô lại trẻ tuổi ). Vì đây là nghệ thuật hiện đại, tất cả các tác phẩm của bất kỳ nghệ sĩ nào đều trông giống hệt nhau. Bạn của bạn muốn sử dụng máy tính để giúp quyết định thứ tự nào để đặt những mảnh này vào.
Yêu cầu chương trình
Chương trình của bạn phải lấy năm số nguyên (được truyền cho một hàm hoặc nhập thông qua stdin (hoặc cách nào khác)). Bốn bức tranh đầu tiên là số lượng tranh được cung cấp bởi mỗi trong số bốn nghệ sĩ. Giá trị cuối cùng là một chỉ số hoán vị i
(tính từ 1, không phải 0). Người phụ trách muốn thấy i
hoán vị thứ tự theo thứ tự từ điển của các bức tranh.
Chương trình của bạn phải xuất ra hoán vị này ở bất kỳ định dạng hợp lý nào: vd abbccd
hoặc [0 1 1 2 2 3]
. Thời gian chạy cho tổng đầu vào ít hơn mười bức tranh phải mất ít hơn một giờ (điều này hy vọng sẽ không có vấn đề gì).
Bạn không được phép sử dụng bất kỳ chức năng dựng sẵn nào để thực hiện hoán vị
Ví dụ
Đầu vào: 0 1 2 0 2
Cho rằng chúng ta có một bức tranh của họa sĩ B và hai bức của họa sĩ C (và tất cả chúng đều trông giống nhau), các hoán vị theo thứ tự từ điển là:
['Bcc', ' cbc ', 'ccb']
Hoán vị được tô sáng sẽ là đầu ra chính xác, bởi vì nó là thứ hai theo thứ tự từ điển.
Đầu vào: 1 2 0 1 5
['abbd', 'abdb', 'adbb', 'babd', ' badb ', 'bbad', 'bbda', 'bdab', 'bdba', 'dabb', 'dbab', 'dbba']
Kiểm tra
Dưới đây là một số bài kiểm tra nên chính xác.
1 2 4 1 5 - ABBDCCCC
2 2 3 1 86 - ABBCACDC
4 1 2 0 24 - AACACBA
1 4 3 2 65 - ABBCBBDCDC
Một đoạn mã ngắn trong Python3 sẽ tạo ngẫu nhiên đầu vào và đầu ra có sẵn ở đây (không hợp lệ cho mục nhập, điều này sử dụng nhập khẩu hoán vị Python):
from itertools import permutations
from random import randint
a,b,c,d,n = randint(1,2),randint(1,2),randint(1,3),randint(1,3),randint(1,15)
print(str(a) + " " + str(b) + " " + str(c) + " " + str(d) + " " + str(n) + " - " + str(sorted(set([''.join(p) for p in permutations(a * "a" + b * "b" + c * "c" + d * "d")]))[n-1]))
Bảng điểm
Optimizer - CJam - 39 - Confirmed - Bruteforce
EDC65 - JavaScript - 120 - Confirmed - Bruteforce
Jakube - Python2 - 175 - Confirmed - Algorithmic
{:A.a.{~97+[:I.}:
là J hợp lệ và hoạt động, nhưng sử dụng A.
cho hầu hết các công việc, vì vậy nó không hợp lệ. Nếu bạn có thể viết một hàm thay thế A.
và đặt nó vào hàm này, bạn sẽ có câu trả lời hợp lệ.
{:A.[:I.}:
... Vấn đề là vậy, nhưng tôi vẫn không nghĩ A.
sẽ hợp lệ: jsoftware.com/help/dipedia/dacapdot.htmlm