C'est l'inverse de la musique: qu'y a-t-il dans cet accord? , qui consiste à imprimer les notes dans un accord donné. Cette fois, l'entrée est une liste de notes dans un accord, et votre tâche consiste à sortir de quel accord il s'agit.
Votre programme doit prendre en charge les accords triadiques suivants. Des exemples sont donnés avec la racine C. Les accords avec d'autres racines sont les mêmes accords avec toutes les notes tournées, donc C deviendra cette note fondamentale, par exemple Dmaj se compose de D, F # et A.
C C#D D#E F F#G G#A A#B
Db Eb Gb Ab Bb
Cmaj C E G
Cm C D# G
Caug C E G#
Cdim C D# F#
Csus4 C F G
Csus2 C D G
Notez que Caug est identique à Eaug et G # aug, et Csus4 est identique à Fsus2. Vous pouvez sortir l'un ou l'autre mais il y a un bonus si vous les sortez tous.
Et les septièmes accords pour le bonus sont répertoriés dans le tableau suivant:
C C#D D#E F F#G G#A A#B
Db Eb Gb Ab Bb
C7 C E G A#
Cm7 C D# G A#
Cmmaj7 C D# G B
Cmaj7 C E G B
Caug7 C E G# A#
Cdim7 C D# F# A
Règles
- Vous pouvez écrire soit un programme complet soit une fonction.
- L'entrée est une liste de notes, séparées par un espace ou un autre caractère pratique. Il peut également s'agir d'un tableau de chaînes (s'il prend l'entrée d'un argument de fonction) ou de la représentation sous forme de chaîne d'un tel tableau.
- L'entrée n'a pas besoin d'être dans un ordre spécifique.
- Il peut y avoir des notes en double dans l'entrée. Ils doivent être traités de la même manière qu'il n'y en a qu'un seul.
- La sortie est le nom de l'accord. Dans le cas où il affichera plusieurs noms, la même règle de saisie s'applique.
- Si l'entrée n'est pas un accord pris en charge, vous devez imprimer les notes telles quelles. Votre programme peut également prendre en charge d'autres accords non répertoriés dans les tableaux ci-dessus (ce qui est valide mais sans bonus).
- Vous pouvez utiliser d' autres notations répertoriées dans l'article Wikipedia . Mais si vous choisissez le
C
do majeur, vous devez ajouter un préfixe lisible par l'homme dans les deux cas pour distinguer un accord avec une seule note. - Vous ne pouvez pas utiliser de fonctions intégrées pour cette tâche (le cas échéant).
- C'est du code-golf. Le code le plus court en octets gagne.
Exemples
- Entrée:
C D# G
sortie:Cm
. - Entrée:
C Eb G
sortie:Cm
. - Entrée:
C Eb F#
sortie:Cdim
. - Entrée:
F A C#
sortie:Faug
,Aaug
,C#aug
,Dbaug
ouFaug Aaug C#aug
,Faug Aaug Dbaug
dans un ordre quelconque. - Entrée:
F D F F F F A A F
sortie:Dm
. - Entrée:
C D
sortie:C D
.
Bonus
- -30 s'il les imprime tous s'il y a plus d'une interprétation (pour aug, sus4 / sus2 et dim7).
- -70 s'il prend également en charge les accords de septième.
- -200 s'il accepte l'entrée MIDI et imprime chaque accord qu'il a reçu. Notez que les notes ne doivent pas commencer ou se terminer en même temps. Vous décidez de ce qui se passe dans les états intermédiaires (tant qu'il ne plante pas ou ne cesse pas de fonctionner). Vous pouvez supposer qu'il n'y a pas de notes dans les canaux de percussion (ou qu'il n'y a qu'un seul canal si cela vous convient). Il est recommandé de fournir également une version texte (ou tableau) pour les tests, surtout si elle dépend de la plate-forme.
B#
, Cb
etc.
Csus4 is the same as Gsus2
. Je pense que tu veux dire Csus2 is the same as Gsus4
, n'est-ce pas?