Einführung
Der Parsons-Code ist nur eine einfache Möglichkeit, Tonhöhenschwankungen in einem Musikstück zu beschreiben , unabhängig davon, ob eine Note höher oder niedriger als die vorherige ist.
Selbst wenn Sie sich nicht an Melodien erinnern können, können Sie sich noch gut daran erinnern, ob eine Note hoch oder runter geht. Der Parsons-Code kann Ihnen also helfen, eine Musik mithilfe einer Suchmaschine zu identifizieren.
Beschreibung
Jede Variation wird durch ein einzelnes Zeichen dargestellt. Dies ist eines der folgenden:
R
wenn die Note mit der vorherigen identisch ist (steht für " R epeat" )U
wenn die Note höher ist als die vorherige (steht für " U p" )D
wenn die Note niedriger ist als die vorherige (steht für " D own" )
Die Anfangsnotiz ist geschrieben als *
.
Beispiel
Hier ist ein Beispiel für Parsons Code (Beginn von "Ode an die Freude" ):
*RUURDDDDRUURDR
Sie können es tatsächlich so visualisieren :
*-*
/ \
* *
/ \
*-* * *-*
\ / \
* * *-*
\ /
*-*
Wir werden das von nun an eine Kontur nennen .
Die Regeln zum Zeichnen solcher Zähler werden im obigen Beispiel als selbsterklärend angesehen .
Herausforderung
Jetzt kommt die wahre Herausforderung.
Schreiben Sie ein Programm, das bei einer Kontur als Eingabe den entsprechenden Parsons-Code ausgibt.
Sie werden nicht aufgefordert, die Kontur zu zeichnen, sondern das Gegenteil.
Suchen Sie anhand der Kontur den ursprünglichen Parsons-Code.
Regeln
- Es gelten die üblichen Regeln für das Code-Golfen
- Das kürzeste Programm in Anzahl von Bytes gewinnt
- Die Eingabe ist eine Kontur und die Ausgabe muss ein gültiger Parsons-Code sein
- Details zu zusätzlichen Leerzeichen für die Eingabe sind irrelevant. Tun Sie, was für Sie am besten funktioniert
- Aufgrund der vorherigen Regel ist es Ihnen nicht gestattet, Teile der Ausgabe und / oder des Programms auf die eine oder andere Weise mit zusätzlichen Leerzeichen fest zu codieren
Anmerkungen
- Dies kann zum Testen nützlich sein
- Der entsprechende Parsons-Code für
*
ist*
- Eine leere Zeichenfolge ist keine gültige Kontur
- Ein Parsons-Code beginnt immer mit
*
*
dem nichts zu tun ist?
*
? Nee. Es sollte wohl drucken *
. Ich werde diesen Eckfall hinzufügen.
*
. Immer.