Cette tâche est simple: écrire un programme ou une fonction qui génère la liste de toutes les notes de musique (en utilisant les noms de notes en anglais) de A ♭ à G♯.
Toutes les notes sans nom composé d'une seule lettre (c'est-à-dire les notes noires sur un clavier musical) devraient avoir leur nom imprimé deux fois, une fois comme la netteté d'une note, une fois comme le plat d'une. Les notes nettes ou plates qui peuvent être décrites avec une seule lettre, comme B♯ (C) ou F ♭ (E) ne doivent pas être émises.
Voici un exemple de sortie:
Ab, A, A#, Bb, B, C, C#, Db, D, D#, Eb, E, F, F#, Gb, G, G#
Caractéristiques
Le programme ou la fonction ne doit prendre aucune entrée.
Les notes peuvent être imprimées dans n'importe quel ordre et dans n'importe quelle sortie de liste autorisée par nos règles d'E / S standard
Les symboles Unicode nets et plats (♯ / ♭) peuvent être remplacés par
b
et#
Comme toujours, les échappatoires standard sont interdites.
Comme il s'agit de code-golf , le plus petit programme, en octets, gagne.
la source
"C "
au lieu de"C"
?Réponses:
Malbolge ,
482370353 octetsR1: Suppression des virgules entre les deux (comme cela n'est pas requis par le défi)
R2: raser quelques octets
Essayez-le en ligne!
la source
Assemblage CP-1610 ( Intellivision ), 31 DECLEs 1 = 39 octets
Une routine prenant un pointeur de sortie en R4 et y écrivant les notes, séparées par des espaces. Dans l'exemple de code, nous écrivons directement à l'écran.
Vidage hexadécimal (routine uniquement)
Source complète
Sortie
capture d'écran de jzIntv
1. Un opcode CP-1610 est codé avec une valeur de 10 bits, appelée «DECLE». Cette routine dure 31 DECLEs, commençant à 4820 $ et se terminant à 483E $ (inclus).
la source
Python 3 , 50 octets
Essayez-le en ligne!
Python 2:48 octets
Ce code peut être ajusté pour inclure B # et Cb, sans aucun octet supplémentaire. Ceci peut être réalisé en remplaçant
5
par6
.De plus, il est (enfin) plus court que la simple sortie de la chaîne simple:
Python 3 , 51 octets
Essayez-le en ligne!
Python 2:50 octets
la source
05AB1E ,
161513 octets-2 octets grâce à @maxb .
Essayez-le en ligne.
Sorties sous forme de liste, où les notes à caractère unique sont avec un espace de fin.
Explication:
Voir cette astuce 05AB1E (section Comment compresser les grands entiers? ) Pour comprendre pourquoi
Ž7×
est1999
.Ž7×
pourrait également être₄·<
(1000, double, diminution de 1) pour le même nombre d'octets.la source
7£
vraiment nécessaire? Semble bien fonctionner sans elle.Gelée , 18? * 20 octets
Un lien monadique renvoyant une liste de listes de personnages.
* Si une liste mixte de (a) listes de caractères et (b) caractères est acceptable, supprimez la fin
W€
de 18.Essayez-le en ligne!
Comment?
la source
bytes
dans l'en-tête.Retina 0.8.2 , 33 octets
Essayez-le en ligne! Explication:
Insérez les noms des notes de base.
Développez chaque note pour inclure des versions plates et nettes.
Supprimer
B#
,E#
ainsi que les notes qui les suivent (Cb
etEb
).la source
Perl 6 , 41 octets
Essayez-le en ligne!
Produit croisé simple des notes et des objets tranchants / plats, suivi de la suppression des notes supplémentaires non valides. Il s'agit d'un bloc de code anonyme qui produit la chaîne:
la source
R , 50 octets
Essayez-le en ligne!
Réponse ennuyeuse.
R , 60 octets
Essayez-le en ligne!
la source
Cb
etE#
.Fusain , 21 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
la source
Japt ,
2322 octetsEssayez-le
la source
<6
mais il est<5
dans l'explication.dzaima / APL REPL,
382825 octetsEssayez-le en ligne!
la source
⎕←
.{}
LOL.Stax ,
1715 octetsExécuter et déboguer
Programme bonus: imprimez les symboles fantaisie
la source
Rubis , 43 octets
Essayez-le en ligne!
Avec la gamme,
0..20
cela imprimerait un tableau contenant tous les appartements, tous les naturels et tous les objets tranchants. Les indésirablesFb Cb E# B#
sont omis en utilisant la plage2..18
Les notes sont imprimées ordonnées selon https://en.wikipedia.org/wiki/Circle_of_fifths , ou en d'autres termes ascendantes de 7 demi-tons (un rapport de fréquence de presque exactement 1,5) à chaque fois.
Cela conduit à l'ordre des lettres de notes donné, dans lequel chaque note est de cinq degrés inclus (connue sous le nom de "cinquième") au-dessus de la précédente. Par exemple
F->C
estFGABC
la source
brainfuck , 106 octets
Essayez-le en ligne!
Sort chaque note séparée par des retours chariot.
la source
Zsh , 36 octets
Une solution plus laide, mais elle enregistre deux caractères.
(F)
rejoint une liste sur les retours à la ligne et//[BE]#???
supprime les parties de la chaîne dont nous avons besoin.Essayez-le en ligne!
Zsh , 38 octets
J'apprécie toujours quand Zsh bat Perl (j'espère que je ne parlerai pas trop tôt ...).
Essayez-le en ligne!
la source
Gelée , 21 octets
Essayez-le en ligne!
la source
Brachylog , 36 octets
Essayez-le en ligne!
Je suis actuellement en train de forcer brutalement l'index du jeu de puissance qui me permettrait de me débarrasser de
⟨h₅ct₁₄⟩⟨h₁₂ct₅⟩
(et par extension↺
, car la sortie n'a pas besoin d'être dans le même ordre que l'exemple de sortie), mais cela prend un certain tandis que ... je devrais peut-être mettre une minute de côté pour déterminer dans quel ordre les sous-listes sont générées et calculer l'index de cette façon ...la source
Toile , 23 octets
Essayez-le ici!
22 octets avec des sauts de ligne supplémentaires dans la sortie
la source
PHP , 65 octets
Fait la liste avec une boucle. Les éléments sont séparés par
_
un séparateur de fin.Essayez-le en ligne!
PHP , 43 octets
PHP sort tout ce qui est, lorsqu'il n'est pas à l'intérieur
<?php
et les?>
balises.Essayez-le en ligne!
la source
Pyth ,
2321 octetsEssayez-le en ligne!
Edit: Réécriture partielle pour économiser 2 octets, version précédente:
s%2c*<r1G7"b #"xLG"fhoq
Essayez-le en ligne!la source
Commodore C64 / TheC64 Mini (probablement d'autres variantes BASIC Commodore 8 bits) - 52 octets BASIC à jeton
Appuyez sur la
CTRL
touche plusN
du clavier C64, vous passez en «mode entreprise» sur le jeu de caractères pour les caractères majuscules / minuscules. Nous pouvons imprimer ceci dans une chaîne dans un octet / jeton; et comme nous avons 40 colonnes, l'espace de G à G # n'est pas requis.Nous n'avons pas besoin de fermer la chaîne dans ce cas car il ne s'agit pas d'une ligne multi-instructions avec un
:
séparateur.À quoi cela ressemble sur un écran Commodore C64 (et compatibles) est illustré ci-dessous.
la source
Tonnelet , 43 octets
La chaîne, compressée.
TIO
la source
APL (Dyalog Unicode) , 45 octets
Essayez-le en ligne!
⎕R
Opération eplace simple , en ajoutant,
à chaque élément de la chaîne qui correspond à chaque lettre de l'⎕A
alphabet, puis en supprimant les 2 premiers caractères qui le sont,
.la source
Brainfuck, 214 octets
Essayez-le en ligne!
la source
JavaScript (Node.js) , 84 octets
Essayez-le en ligne!
Le simple retour de la chaîne (comme illustré ci-dessous) serait plus court de 36 octets, mais où est le plaisir?
la source
brainfuck ,
255115 octetsEssayez-le en ligne!
la source
All notes without a name consisting of a single letter (i.e. black notes on a musical keyboard) should have their name printed twice, once as the sharp of a note, once as the flat of one. Sharp or flat notes that can be described with a single letter, like B♯ (C) or F♭ (E) should not be outputted.
Cela me semble assez clair et je ne vois aucun historique de modification sur l'OP sur mon écran.Bash 5 , 42 octets
Sortie:
la source
Perl 5 ,
4741 octetsEssayez-le en ligne!
la source
T-SQL, 124 octets
Les sauts de ligne sont uniquement à des fins d'affichage.
Plus longue mais beaucoup plus intéressante que la version triviale (50 octets) :
la source
Z80Golf ,
3129 octetsEssayez-le en ligne!
Explication :
Z80Golf n'est qu'une simple machine fantastique basée sur le processeur Z80 8 bits. Le programme est chargé à l'emplacement de la mémoire
0x0000
et le reste de la mémoire est rempli de zéros. La sortie se fait en appelant0x8000
, qui affichera la valeur du registre A sous forme de caractère.Le programme démarre avec les données qui seront traitées, 6 octets au total. Chaque paire d'octets spécifie un suffixe de note et un masque de bits contrôlant laquelle des lettres peut être combinée avec cette note. Pour économiser des octets, le caractère suffixe est inversé (
xor 0xff
) - cela permet aux données d'être exécutées sous forme d'instructions avec peu d'effets secondaires, ce qui permet de supprimer un saut qui saute ces données:Voici comment le CPU décode ceci:
Ces données sont lues deux octets à la fois dans la paire de registres DE. Le pointeur de pile est utilisé pour pointer vers l'élément suivant. Il commence à 0 et, comme le Z80 utilise une pile pleine et décroissante, tous les pops liront la prochaine paire de données - toutes les opérations de pile sont en 16 bits.
La boucle externe est implémentée avec un compteur décrémentant dans le registre B, pour lequel le Z80 fournit un support spécial sous la forme de l'
djnz
instruction:La lettre actuelle est conservée dans le registre A. Parce que l'incrément s'adapte bien au début de la boucle, nous chargeons un de moins que la valeur de démarrage réelle de
A
:la source