소개
당신은 (사 예술가에서 현대 미술을 받고 최근 기뻐했다 미술관에 대한 큐레이터의 친구가 큐레이터에게 예술의 제로 조각, 젊은 악당을 제공 할 수 있습니다 일부를 ). 이것은 현대 미술이기 때문에 주어진 예술가의 작품은 모두 똑같이 보입니다. 친구가 컴퓨터를 사용하여 이러한 조각을 넣을 순서를 결정하려고합니다.
프로그램 요구 사항
프로그램은 5 개의 정수를 가져와야합니다 (함수로 전달되거나 stdin (또는 다른 방법으로 입력)). 처음 네 개는 각 네 명의 예술가가 제공 한 그림 수입니다. 마지막 값은 순열 인덱스입니다 i
(0이 아닌 1부터 계산). 큐레이터 i
는 그림의 사전 순으로 순열 을보고자합니다 .
프로그램은이 순열을 합리적인 형식 (예 : abbccd
또는) 으로 출력해야합니다 [0 1 1 2 2 3]
. 총 10 개 미만의 그림을 입력하는 데 걸리는 시간은 1 시간 미만이어야합니다 (문제가 없을 것입니다).
내장 함수를 사용하여 순열을 해결할 수 없습니다.
예
입력 : 012 2
아티스트 B의 그림 한 개와 아티스트 C의 그림 두 개가 모두 같고 (사실 모두 동일하게 보임) 사전 사전 순서는 다음과 같습니다.
[ 'bcc', ' cbc ', 'ccb']
강조 표시된 순열은 사전 순서의 두 번째이므로 올바른 출력이됩니다.
입력 : 12 2 5
[ 'abbd', 'abdb', 'adbb', 'babd', ' badb ', 'bbad', 'bbda', 'bdab', 'bdba', 'dabb', 'dbab', 'dbba']
테스팅
다음은 올바른 테스트입니다.
1 2 4 1 5 - ABBDCCCC
2 2 3 1 86 - ABBCACDC
4 1 2 0 24 - AACACBA
1 4 3 2 65 - ABBCBBDCDC
입력과 출력을 무작위로 생성해야하는 Python3의 짧은 코드는 여기에서 사용할 수 있습니다 (입력에 유효하지 않음, 파이썬 순열 가져 오기를 사용함).
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]))
스코어 보드
Optimizer - CJam - 39 - Confirmed - Bruteforce
EDC65 - JavaScript - 120 - Confirmed - Bruteforce
Jakube - Python2 - 175 - Confirmed - Algorithmic
{:A.a.{~97+[:I.}:
유효한 J이고 작동하지만 A.
대부분의 작업에 사용되므로 유효하지 않습니다. 이 함수에서 대체 A.
하고 대체 할 수있는 함수를 작성할 수 있다면 올바른 답을 얻을 수 있습니다.
{:A.[:I.}:
... 것입니다.하지만 여전히 A.
유효 하지 않다고 생각 합니다 : jsoftware.com/help/dictionary/dacapdot.htm