ปีคือ 930 และโบสถ์เกรโกเรียนกำลังมีปัญหา พวกเขามีเพลงสวดมนต์หลายพันหน้า แต่ปัญหาก็คือแผ่นเพลงทั้งหมดถูกโยนลงกองแทนที่จะเป็นระบบองค์กรจริง:
ภาพโดย gamerprinter ผู้ใช้ที่สมาคม cartographers'
คริสตจักรจำเป็นต้องจัดระเบียบแผ่นเพลงทั้งหมดดังนั้นพวกเขาจึงว่าจ้างวิศวกรซอฟต์แวร์ยุคกลางเพื่อเขียนโปรแกรมเพื่อจัดระเบียบให้พวกเขา คุณเป็นวิศวกรซอฟต์แวร์ที่ได้รับการว่าจ้าง อย่างไรก็ตามกระบวนการรวบรวมในยุคกลางนั้นเกี่ยวข้องกับโปรแกรมที่เขียนลงบนกระดาษโดยทีมงานของนักเขียนพระคัมภีร์ช้า ในการลดเวลาที่ใช้ในการรวบรวมโค้ดของทีมคุณต้องทำให้โปรแกรมมีขนาดเล็กที่สุดเท่าที่จะทำได้
คริสตจักรต้องการเพลงสวดมนต์ที่จะจัดตามออกขนาดดนตรีที่พวกเขาจะถูกเขียนใน. ทั้งหมดของเพลงสวดมนต์ในโบสถ์ถูกเขียนในเครื่องชั่ง Dorian เมื่อได้รับโน้ตของดนตรีชิ้นหนึ่งโปรแกรมของคุณจะส่งออกมาตราส่วนของโดเรียนที่มีอยู่ในที่นี่ฉันจะอธิบายอย่างชัดเจนว่ามาตราส่วนของโดเรียนคืออะไร หากคุณรู้อยู่แล้วคุณสามารถข้ามส่วนนี้ได้
มี 12 โน้ตที่เป็นไปได้ในทำนองใด ๆ ที่นี่พวกเขาอยู่ในลำดับ:
C C# D D# E F F# G G# A A# B
ดนตรี (แสดงโดยใช้S
) เป็นขั้นตอนที่เพิ่มขึ้นไปทางขวาหนึ่งห่อรอบ (ดังนั้นดนตรีขึ้นมาจาก B จะกลับไปที่ C) เสียง (แสดงโดยใช้T
) เป็นสอง semitones ตัวอย่างเช่น semitone ที่เพิ่มขึ้นจาก F # จะเป็น G เสียงที่เพิ่มขึ้นจาก F # จะเป็น G #
ในการสร้างมาตราส่วนของโดเรียนเราเริ่มจากโน้ตใด ๆ ในรายการจากนั้นเลื่อนขึ้นในรูปแบบต่อไปนี้โดยเขียนรายการโน้ตที่เราพบ:
T, S, T, T, T, S
ตัวอย่าง. ฉันเริ่มต้นจาก A. บันทึกในระดับ Dorian ของฉันจะกลายเป็น:
A
B (up a tone)
C (up a semitone)
D (up a tone)
E (up a tone)
F# (up a tone)
G (up a semitone)
ขนาดมีบันทึก A, B, C, D, E, F # และกรัมเพราะผมเริ่มต้นจากการที่เราจะเรียกสิ่งนี้ว่าขนาด Dorian ใน บริษัท A ดังนั้นจึงมีเครื่องชั่ง Dorian ถึง 12 เครื่องซึ่งแต่ละเครื่องมีการตั้งชื่อตามบันทึกย่อที่เริ่มต้น แต่ละคนใช้รูปแบบของเสียงและเซมิโคลอนเดียวกันโดยเริ่มจากตำแหน่งที่แตกต่างกัน หากคำอธิบายของฉันไม่ได้เชื่อมโยงกันคุณอาจปรึกษาวิกิพีเดีย
สามารถป้อนอินพุตของโปรแกรมจากสิ่งที่เหมาะสมสำหรับโปรแกรมของคุณ (เช่น STDIN, อาร์กิวเมนต์บรรทัดคำสั่ง, raw_input()
) มันอาจไม่ได้เริ่มต้นล่วงหน้าในตัวแปร การป้อนข้อมูลจะเป็นรายการของบันทึกย่อคั่นด้วยเครื่องหมายจุลภาคแสดงถึงทำนองของชิ้นส่วน อาจมีการบันทึกซ้ำ จะมีบันทึกที่แตกต่างกันมากพอในอินพุตเพื่อให้สามารถอนุมานขนาดของชิ้นได้อย่างเด็ดขาด ตัวอย่างอินพุต:
B,B,D,E,D,B,A,G#,A,G#,E,D,F#,E,F#,E,F#,G#,A
เอาต์พุตของโปรแกรมควรเป็นสตริงDorian scale in X
โดยที่ X คือบันทึกย่อเริ่มต้นของสเกล ผลลัพธ์ของอินพุตตัวอย่าง:
Dorian scale in B
เปรียบเทียบสิ่งนี้กับระดับ Dorian ใน B ( B C# D E F# G# A
) เราเห็นว่าโน้ตทั้งหมดของทำนองนั้นอยู่ในระดับนี้ หมายเหตุ C # ไม่ได้ใช้ในกรณีนี้ อย่างไรก็ตามมีบันทึกเพียงพอที่จะระบุ B Dorian เป็นคีย์ที่ถูกต้องอย่างไม่น่าสงสัย ไม่มีมาตราส่วนของโดเรียนอื่นที่เหมาะสมเพราะไม่ว่าเราจะลองสเกลอื่นใดจะมีโน้ตอย่างน้อยหนึ่งเพลงที่ไม่ได้เป็นสเกล
นี่คือรหัสกอล์ฟดังนั้นรายการที่มีจำนวนอักขระสั้นที่สุดจะเป็นผู้ชนะ ถามในความคิดเห็นหากคุณมีคำถาม