Это простое задание: написать программу или функцию, которая выводит список всех музыкальных нот (используя английские названия нот) от A ♭ до G♯.
На всех нотах без названия, состоящих из одной буквы (т.е. черных нот на музыкальной клавиатуре), их имя должно быть напечатано дважды, один раз как резкая нота, один раз как плоская единица. Резкие или плоские ноты, которые можно описать одной буквой, например, B♯ (C) или F ♭ (E), не должны выводиться.
Вот пример вывода:
Ab, A, A#, Bb, B, C, C#, Db, D, D#, Eb, E, F, F#, Gb, G, G#
Характеристики
Программа или функция не должны принимать никаких данных.
Примечания могут быть напечатаны в любом порядке и в любом списке вывода, разрешенного нашими стандартными правилами ввода-вывода
Острые и плоские символы Юникода (♯ / ♭) можно заменить на
b
и#
Как всегда, стандартные лазейки запрещены.
Поскольку это код-гольф , выигрывает самая маленькая программа в байтах.
источник
"C "
вместо"C"
?Ответы:
Malbolge ,
482370353 байтаR1: Удалены запятые между ними (как не требуется для испытания)
R2: сбрить несколько байтов
Попробуйте онлайн!
источник
Сборка CP-1610 ( Intellivision ), 31 DECLEs 1 = 39 байт
Подпрограмма, принимающая выходной указатель в R4 и записывающая туда заметки, разделенные пробелами. В примере кода мы пишем прямо на экран.
Шестнадцатеричный дамп (только рутина)
Полный источник
Выход
скриншот из jzIntv
1. Код операции CP-1610 кодируется 10-битным значением, известным как «DECLE». Длина этой процедуры составляет 31 DECLE, начиная с 4820 долларов США и заканчивая 483 долларами США (в комплекте).
источник
Python 3 , 50 байт
Попробуйте онлайн!
Python 2: 48 байт
Этот код можно настроить так, чтобы он включал B # и Cb, без каких-либо дополнительных байтов. Это может быть достигнуто путем замены
5
на6
.Кроме того, он (наконец) короче, чем просто вывод простой строки:
Python 3 , 51 байт
Попробуйте онлайн!
Python 2: 50 байтов
источник
05AB1E ,
161513 байт-2 байта благодаря @maxb .
Попробуйте онлайн.
Выводится в виде списка, где заметки с одним символом имеют завершающий пробел.
Объяснение:
Посмотрите эту подсказку 05AB1E (раздел Как сжать большие целые числа? ), Чтобы понять, почему
Ž7×
это так1999
.Ž7×
в качестве альтернативы может быть₄·<
(1000, удвоение, уменьшение на 1) для того же количества байтов.источник
7£
действительно необходимо? Кажется, отлично работает без него.Желе , 18? * 20 байт
Монадическая ссылка, возвращающая список списков символов.
* Если допустим смешанный список из (а) списков символов и (б) символов, уберите завершающий список
W€
для 18Попробуйте онлайн!
Как?
источник
bytes
в заголовке.Сетчатка 0.8.2 , 33 байта
Попробуйте онлайн! Объяснение:
Вставьте имена базовых нот.
Разверните каждую заметку, чтобы включить плоскую и резкую версии.
Удалить
B#
,E#
а также примечания, следующие за ними (Cb
иEb
).источник
Perl 6 , 41 байт
Попробуйте онлайн!
Простое перекрестное произведение примечаний и острых предметов / квартир, с последующим удалением лишних недействительных примечаний. Это блок анонимного кода, который создает строку:
источник
R , 50 байтов
Попробуйте онлайн!
Скучный ответ.
R , 60 байтов
Попробуйте онлайн!
источник
Cb
иE#
.Древесный уголь , 21 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
источник
Japt ,
2322 байтаПопытайся
источник
<6
но это<5
в объяснении.dzaima / APL REPL,
382825 байтПопробуйте онлайн!
источник
⎕←
.{}
LOL.Stax ,
1715 байтЗапустите и отладьте его
Бонусная программа: печать причудливых символов
источник
Рубин , 43 байта
Попробуйте онлайн!
С диапазоном
0..20
это напечатало бы массив, содержащий все квартиры, все натуральные и все острые предметы. НежелательныеFb Cb E# B#
опускаются при использовании диапазона2..18
Примечания распечатываются в порядке, указанном https://en.wikipedia.org/wiki/Circle_of_fifths , или, другими словами, каждый раз по возрастанию на 7 полутонов (отношение частот почти точно равно 1,5).
Это приводит к указанному порядку букв в ноте, в котором каждая нота на пять градусов включительно (известная как «пятая») выше предыдущей. Например,
F->C
этоFGABC
источник
мозговой трах , 106 байт
Попробуйте онлайн!
Выводит каждую ноту, разделенную возвратом каретки.
источник
Zsh , 36 байт
Ужасное решение, но оно сохраняет два символа.
(F)
присоединяет список к новым строкам и//[BE]#???
удаляет части строки, которые нам нужны.Попробуйте онлайн!
Зш , 38 байт
Мне всегда нравится, когда Zsh побеждает Perl (надеюсь, я не говорю слишком рано ...).
Попробуйте онлайн!
источник
Желе , 21 байт
Попробуйте онлайн!
источник
Брахилог , 36 байт
Попробуйте онлайн!
В настоящее время я нахожусь в процессе грубого форсирования индекса powerset, который позволил бы мне избавиться
⟨h₅ct₁₄⟩⟨h₁₂ct₅⟩
(и, следовательно↺
, от того , что выходные данные не обязательно должны быть в том же порядке, что и выходные данные примера), но это занимает довольно много времени. в то время как ... может быть, я должен отложить минуту, чтобы на самом деле выяснить, в каком порядке создаются подсписки, и таким образом вычислить индекс ...источник
Холст , 23 байта
Попробуй это здесь!
22 байта с дополнительными символами новой строки в выводе
источник
PHP , 65 байт
Составляет список с помощью цикла. Элементы разделяются
_
с помощью конечного разделителя.Попробуйте онлайн!
PHP , 43 байта
PHP выводит все как есть, когда нет внутри
<?php
и?>
тегов.Попробуйте онлайн!
источник
Pyth ,
2321 байтПопробуйте онлайн!
Изменить: Частичная перезапись, чтобы сохранить 2 байта, предыдущая версия:
s%2c*<r1G7"b #"xLG"fhoq
Попробуйте онлайн!источник
Commodore C64 / TheC64 Mini (возможно, другие 8-битные варианты BASIC Commodore) - 52 байта с токенами BASIC
Нажатие
CTRL
клавиши плюсN
на клавиатуре C64 переходит в «бизнес-режим» на наборе символов для символов верхнего / нижнего регистра. Мы можем распечатать это в виде строки в один байт / токен; и поскольку у нас есть 40 столбцов, пространство от G до G # не требуется.Нам не нужно закрывать строку в этом случае, так как это не многостраничная строка с
:
разделителем.Как это выглядит на экране Commodore C64 (и совместимых), показано ниже.
источник
Кег , 43 байта
Строка, сжатая.
TIO
источник
APL (Dyalog Unicode) , 45 байт
Попробуйте онлайн!
Простая
⎕R
операция замены, добавление,
к каждому элементу в строке, которая соответствует каждой букве в⎕A
алфавите, затем удаление первых 2 символов, которые есть,
.источник
Brainfuck, 214 байтов
Попробуйте онлайн!
источник
JavaScript (Node.js) , 84 байта
Попробуйте онлайн!
Простой возврат строки (как показано ниже) будет короче на 36 байтов, но где в этом удовольствие?
источник
бред ,
255115 байтПопробуйте онлайн!
источник
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.
Это кажется мне достаточно ясным, и я не вижу истории изменений на OP на моем экране.Баш 5 , 42 байта
Выход:
источник
Perl 5 ,
4741 байтПопробуйте онлайн!
источник
T-SQL, 124 байта
Разрывы строки предназначены только для отображения.
Длиннее, но гораздо интереснее, чем тривиальная версия (50 байт) :
источник
Z80Golf ,
3129 байтПопробуйте онлайн!
Пояснение :
Z80Golf - это просто фантастическая машина на базе 8-битного процессора Z80. Программа загружается в ячейку памяти
0x0000
, а остальная часть памяти заполняется нулями. Вывод осуществляется путем вызова0x8000
, который выведет значение регистра A в виде символа.Программа начинается с данных, которые будут обработаны, всего 6 байтов. Каждая пара байтов задает суффикс примечания и битовую маску, управляющую тем, какие буквы можно комбинировать с этим примечанием. Для сохранения байтов символ суффикса инвертируется (
xor 0xff
) - это позволяет выполнять данные в виде инструкций с небольшими побочными эффектами, что позволяет удалить скачок, пропускающий эти данные:Вот как процессор декодирует это:
Эти данные считываются по два байта за раз в пару регистров DE. Указатель стека используется для указания на следующий элемент. Он начинается с 0, и поскольку Z80 использует полный нисходящий стек, все всплывающие окна будут считывать следующую пару данных - все операции стека являются 16-разрядными.
Внешний цикл реализован с уменьшающимся счетчиком в регистре B, для которого Z80 предоставляет специальную поддержку в виде
djnz
инструкции:Текущее письмо хранится в регистре А. Поскольку приращение хорошо подходит в начале цикла, мы загружаем на единицу меньше, чем фактическое начальное значение
A
:источник