บทนำ
คุณเป็นเพื่อนของภัณฑารักษ์พิพิธภัณฑ์ศิลปะการที่ได้มีความสุขที่ผ่านมาของการได้รับงานศิลปะสมัยใหม่จากสี่ศิลปิน ( ซึ่งบางส่วนอาจจะให้ผู้ดูแลศูนย์ชิ้นงานศิลปะ, วายร้ายหนุ่ม ) เนื่องจากนี่คือศิลปะสมัยใหม่ชิ้นส่วนของศิลปินที่ได้รับจึงมีลักษณะเหมือนกันทุกประการ เพื่อนของคุณต้องการใช้คอมพิวเตอร์เพื่อช่วยตัดสินใจว่าจะสั่งซื้อชิ้นส่วนเหล่านี้ได้อย่างไร
ข้อกำหนดของโปรแกรม
โปรแกรมของคุณต้องใช้จำนวนเต็มห้าจำนวน (ส่งผ่านไปยังฟังก์ชันหรือป้อนผ่าน stdin (หรืออีกวิธีหนึ่ง)) สี่คนแรกคือจำนวนภาพวาดที่จัดทำโดยศิลปินสี่คนแต่ละคน ค่าสุดท้ายคือดัชนีการเปลี่ยนแปลงi
(นับจาก 1 ไม่ใช่ 0) ภัณฑารักษ์มีความประสงค์ที่จะเห็นการi
เรียงสับเปลี่ยนลำดับตามคำสั่งของภาพเขียน
โปรแกรมต้องออกของคุณเปลี่ยนแปลงนี้ในรูปแบบใด ๆ ที่เหมาะสม: เช่นหรือabbccd
[0 1 1 2 2 3]
รันไทม์สำหรับการป้อนข้อมูลที่รวมจำนวนภาพน้อยกว่าสิบภาพต้องใช้เวลาน้อยกว่าหนึ่งชั่วโมง (หวังว่าจะไม่มีปัญหา)
คุณไม่ได้รับอนุญาตให้ใช้ฟังก์ชั่นใด ๆ ที่สร้างขึ้นเพื่อเปลี่ยนวิธีเรียงสับเปลี่ยน
ตัวอย่าง
อินพุต: 0 1 2 0 2
เนื่องจากเรามีหนึ่งภาพวาดโดยศิลปิน B และสองโดยศิลปิน C (และพวกเขาทั้งหมดเหมือนกัน), เรียงลำดับตามลำดับคำศัพท์คือ:
[ 'สำเนาลับ', ' CBC ', 'CCB']
การเรียงสับเปลี่ยนที่ไฮไลต์จะเป็นผลลัพธ์ที่ถูกต้องเพราะเป็นลำดับที่สองตามลำดับพจนานุกรม
อินพุต: 1 2 0 1 5
['abbd', 'abdb', 'adbb', 'babd', ' badb ', 'bbad', 'bbda', 'bdab', 'bdba', 'dab', '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 ที่ควรสร้างอินพุตและเอาต์พุตแบบสุ่มมีอยู่ที่นี่ (ไม่ถูกต้องสำหรับการเข้าใช้สิ่งนี้ใช้ 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]))
ป้ายบอกคะแนน
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