มี 88 ปุ่มบนเปียโนมาตรฐานและ 95 ตัวอักษรพิมพ์ได้ (รหัสฐานสิบหก 20 ถึง 7E):
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
('ตัวอักษร' หมายถึงตัวอักษร ASCII ที่พิมพ์ได้จากที่นี่เป็นต้นไป)
ในJSFiddle นี้ฉันเอาประโยชน์จากการที่ทำและไวยากรณ์ง่ายที่สร้างเพลงเปียโนโดยใช้AudioSynth (ถ้าใครสามารถนำฉันไปยังชุดโน้ตเปียโนจริงที่เชื่อมโยงได้ฉันจะรู้สึกขอบคุณ)
อักขระแต่ละตัวในสตริงอินพุตนอกจากนี้() 01+-สอดคล้องกับหนึ่งคีย์เปียโน:
 CHARACTER:  !   "   #   $   %   &   '   *   ,   .   /   2   3   4   5   6   7   8   9   :   ;   <   =   >   ?   @   A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   Z   [   \   ]   ^   _   `   a   b   c   d   e   f   g   h   i   j   k   l   m   n   o   p   q   r   s   t   u   v   w   x   y   z   {   |   }   ~
KEY NUMBER:  1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88
      NOTE:  A  A#   B   C  C#   D  D#   E   F  F#   G  G#   A  A#   B   C  C#   D  D#   E   F  F#   G  G#   A  A#   B   C  C#   D  D#   E   F  F#   G  G#   A  A#   B   C  C#   D  D#   E   F  F#   G  G#   A  A#   B   C  C#   D  D#   E   F  F#   G  G#   A  A#   B   C  C#   D  D#   E   F  F#   G  G#   A  A#   B   C  C#   D  D#   E   F  F#   G  G#   A  A#   B   C
    OCTAVE:  0   0   0   1   1   1   1   1   1   1   1   1   1   1   1   2   2   2   2   2   2   2   2   2   2   2   2   3   3   3   3   3   3   3   3   3   3   3   3   4   4   4   4   4   4   4   4   4   4   4   4   5   5   5   5   5   5   5   5   5   5   5   5   6   6   6   6   6   6   6   6   6   6   6   6   7   7   7   7   7   7   7   7   7   7   7   7   8
ดังนั้นRPNPRRRเล่นโน้ต 7 ตัวแรกของMary Had a Little Lambโดยใช้พารามิเตอร์การกำหนดเวลาล่วงหน้าที่คุณสามารถดูได้ใน JSFiddle
Space ( ) หมายถึงที่พักดนตรีที่มีระยะเวลาหนึ่งช่วงเวลาโน้ต ดังนั้นจึงRPNPRRR PPP RUUเล่นโน้ต 13 ตัวแรกของ Mary Had a Little Lamb พร้อมวางในตำแหน่งที่เหมาะสม
หากอักขระใด ๆ ที่()01อยู่ข้างหน้าถูกนำหน้าด้วยลำดับของ0's และ1' s (regex [01]+) ลำดับนั้นจะถูกอ่านเป็นเลขฐานสองขและอักขระจะถูกแทนที่ด้วยสำเนาbของตัวเอง ดังนั้น101A11 10+1-0B01Cจะกลายเป็นAAAAA   ++-Cเพราะ101= 5, 11= 3, ฯลฯ (ลำดับของ0's และ1' ที่ส่วนท้ายของสตริงไม่มีผล)
วงเล็บที่ตรงกัน ( ()) ทำหน้าที่สองประการ:
- หากเนื้อหาของพวกเขาไม่ได้ลงท้ายด้วยลำดับของ0และ1บันทึกทั้งหมดจะถูกเล่นในเวลาเดียวกันกับคอร์ด (ซึ่งไม่แตกต่างจากโน้ต) ดังนั้น(NQU)เป็นคอร์ด C เล็ก ๆ น้อย ๆเกี่ยวกับคู่ 4.
 หากบันทึกที่ซ้ำกันที่มีอยู่เสียงของพวกเขายังซ้ำ ดังนั้น(NN)และ(NNN)เสียงที่แตกต่าง
- หากเนื้อหาของพวกเขาจะจบลงด้วยการลำดับของ0'และ1' s ที่ลำดับอ่านเป็นเลขฐานสองขและวงเล็บและเนื้อหาของพวกเขาจะถูกแทนที่ด้วยขสำเนาของเนื้อหา ดังนั้น(NQU11)จะกลายเป็น 9NQUNQUNQUบันทึกบุคคล:
รายละเอียดวงเล็บ:
- รังจำลองวงเล็บ (วัตถุประสงค์ 2) ดี: (N(QU10)11)→การ→การ(NQUQU11)NQUQUNQUQUNQUQU
- รังไม่ใช่จำลองวงเล็บ (วัตถุประสงค์ 1) เป็นดี แต่ไม่มีผล: เป็นเช่นเดียวกับ(A((+)C))(A+C)
- นอกจากนี้คุณยังสามารถรวมทั้ง: →((N(QU10))11)(NQUQU)(NQUQU)(NQUQU)
- ลำดับของ0'และ1' ก่อนวงเล็บที่ไม่ทำซ้ำจะทำซ้ำในลักษณะเดียวกับที่อักขระแต่ละตัวซ้ำกัน ดังนั้นจะกลายเป็น10(NQU)(NQU)(NQU)
- ลำดับของ0'และ1' ก่อนที่จะจำลองแบบวงเล็บจะไม่มีผลใด ๆ
- (ต้องมีการจับคู่เสมอ- )แต่ไม่กลับกัน: เช่น- N)ถูกต้อง
บวก ( +) และลบ ( -) ตามลำดับเพิ่มและลดระยะเวลาของบันทึกหรือช่วงเวลาระหว่างบันทึกย่อขึ้นอยู่กับบริบท:
- เมื่ออยู่ในวงเล็บที่ไม่ทำซ้ำพวกมันจะเพิ่มหรือลดตัวแปรระยะเวลาบันทึกทันทีด้วยจำนวนมิลลิวินาทีที่กำหนดไว้ล่วงหน้า (ดูJSFiddle ) ดังนั้น(++)Nจะเล่นNในระยะเวลานานกว่าปกติ
- เมื่ออยู่นอกวงเล็บที่ไม่ใช่การจำลองข้อมูลพวกเขาจะเพิ่มหรือลดช่วงเวลาระหว่างการเริ่มต้นของบันทึกย่อถัดไปและบันทึกหลังจากนั้น (และแต่ละช่วงเวลาถัดมา) ตามจำนวนที่กำหนดไว้ล่วงหน้าเป็นมิลลิวินาที ดังนั้นใน++NPช่วงเวลาระหว่างNและPยาวกว่าปกติ
ระยะเวลาของบันทึกและช่วงเวลาระหว่างพวกเขาไม่สามารถลดลงต่ำกว่า 0
ท้าทาย
ฉันตั้งใจเลือก() 01+-ให้เป็นอักขระพิเศษ 7 ตัวเพราะพวกเขาสามารถวางในบริบทต่าง ๆ ในภาษาการเขียนโปรแกรมจำนวนมาก
งานของคุณคือการเขียนควินใน 512 ไบต์หรือน้อยกว่าที่ก่อให้เกิดการปรับแต่งที่ทำให้เกิดเสียงที่ดีที่สุดเมื่อรหัสตัวเองจะถูกนำมาใช้เป็นสายป้อนในJSFiddle
คุณสามารถเลือกค่าเริ่มต้นใด ๆ (จำนวนเต็มไม่เป็นลบ) สำหรับพารามิเตอร์ช่วงเวลา / ระยะเวลา 4 ตัว แต่การปรับค่าของคุณต้องไม่เกิน 10 นาที คุณควรบอกเราด้วยว่าการปรับแต่งเสียงของคุณดีที่สุดในเครื่องดนตรีชิ้นใด
กฎระเบียบ
- แท็บบรรทัดใหม่และ ASCII ที่พิมพ์ได้เท่านั้นที่ได้รับอนุญาตในรหัสของคุณ ASCII ที่ไม่สามารถพิมพ์ได้ทั้งหมดจะถูกละเว้นโดยผู้สร้างปรับแต่ง
- ผลลัพธ์อาจไปที่ไฟล์หรือ stdout หรือทางเลือกที่ใกล้เคียงที่สุด (เช่นการแจ้งเตือน JS) ไม่มีอินพุต
- ไม่มีการอ่านซอร์สโค้ด มันจะต้องเป็นควินจริง
- การลบอักขระแหล่งที่มาต่อเนื่อง 3 ตัวใด ๆจะต้องทำให้โปรแกรมไม่สามารถทำงานได้เหมือน quine นี่คือเพื่อให้แน่ใจว่าคนไม่ได้เขียนเพลงที่ดีในสายแล้วมีส่วนควินินเล็ก ๆ เพื่อส่งออก
- ดังนั้นหากโปรแกรมของคุณเป็นMYCODEตอนนั้นMYC,MYEและMDE,ODEทั้งหมดไม่ควรเป็น quines (มันอาจผิดพลาดหรือเอาท์พุทอย่างอื่น)
 
- ดังนั้นหากโปรแกรมของคุณเป็น
นี่คือการประกวดความนิยมคำตอบที่ได้รับคะแนนสูงสุดชนะ
อัปเดต:ผ่อนคลายกฎล่าสุด