На стандартном пианино имеется 88 клавиш и 95 печатных символов ascii (шестнадцатеричные коды от 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 нот Мэри был барашек с использованием заданных параметров синхронизации вы можете увидеть в JSFiddle.
Пробел ( ) представляет музыкальный отдых, который длится один интервал нот. Так
RPNPRRR PPP RUU
звучит первые 13 нот Марии «Ягненок» с остатками на своих местах.
Если какой-либо символ помимо этого ()01
имеет префикс последовательности 0
's и 1
' (regex [01]+
), эта последовательность читается как двоичное число b , и символ заменяется на b копий самого себя. Так 101A11 10+1-0B01C
становится AAAAA ++-C
потому, что 101
= 5, 11
= 3 и т. Д. (Последовательность 0
's 1
' и 's' в конце строки не имеет никакого эффекта.)
Соответствующие скобки ( ()
) служат двум целям:
- Если их содержание не заканчивается последовательностью
0
's' и1
's', все ноты воспроизводятся одновременно с аккордом (который в остальном не отличается от ноты). Так(NQU)
что до минор 4 - до минор .
Если присутствуют дублирующие ноты, их звук также дублируется. Так(NN)
и(NNN)
звучат по другому. - Если их содержание делает конец с последовательностью
0
«s и1
» s, эта последовательность считывается в виде двоичного числа б , и в скобках и их содержание заменяются б копии контента. Так(NQU11)
становится 9 отдельных нот:NQUNQUNQU
.
Детали круглых скобок:
- Вложенные реплицирующие скобки (цель 2) - это хорошо:
(N(QU10)11)
→(NQUQU11)
→NQUQUNQUQUNQUQU
. - Вложенные неповторяющиеся скобки (цель 1) хороши, но не имеют никакого эффекта:
(A((+)C))
то же самое, что и(A+C)
. - Вы также можете комбинировать оба:
((N(QU10))11)
→(NQUQU)(NQUQU)(NQUQU)
. - Последовательность
0
's' и1
's' перед неповторяющимися скобками повторяет их так же, как повторяются отдельные символы. Так10(NQU)
становится(NQU)(NQU)
. - Последовательность
0
's' и1
's' перед копированием скобок не имеет никакого эффекта. (
всегда должен иметь соответствие)
, но не наоборот: напримерN)
, допустимо.
Плюс ( +
) и минус ( -
) соответственно увеличивают и уменьшают продолжительность заметок или временной интервал между заметками, в зависимости от их контекста:
- Находясь внутри неповторяющихся скобок, они немедленно увеличивают или уменьшают переменную длительности ноты на некоторое заданное количество миллисекунд (см. JSFiddle ). Так
(++)N
будет игратьN
дольше, чем обычно. - Когда снаружи нереплицирующегося круглых скобки, они увеличивают или уменьшают интервал между началом следующей ноты и нотами после него (и каждого последующего интервала) с помощью некоторого заданного числа миллисекунд. Так что в
++NP
промежутке междуN
иP
больше, чем обычно.
Длительность нот и временной интервал между ними не могут быть ниже 0.
Вызов
Я намеренно выбрал () 01+-
7 специальных символов, потому что они могут быть безобидно размещены во многих контекстах во многих языках программирования.
Ваша задача состоит в том, чтобы написать квинну в 512 байт или меньше, которая обеспечивает наилучшее звучание, когда сам код используется в качестве входной строки в JSFiddle .
Вы можете выбрать любые начальные значения (неотрицательные целые числа) для 4 параметров интервала / продолжительности, но ваша мелодия не должна длиться более 10 минут. Вы также должны сообщить нам, лучше ли звучит ваша мелодия на конкретном инструменте.
правила
- В вашем коде разрешены только вкладки, переводы строк и printable-ASCII. Все непечатаемые ASCII игнорируются создателем мелодии.
- Вывод может идти в файл или стандартный вывод или ближайшую альтернативу (например, предупреждение JS). Там нет ввода.
- Нет чтения исходного кода. Должно быть, это настоящий куайн.
- Удаление любых трех смежных исходных символов должно привести к тому, что программа больше не будет работать как квин. Это сделано для того, чтобы люди не написали хорошую песню в строке, а затем получили крошечную часть для вывода.
- Так что, если ваша программа была
MYCODE
тогдаMYC
,MYE
,MDE
иODE
все должны быть не quines (они могут ошибки или вывести что - то еще).
- Так что, если ваша программа была
Это конкурс популярности, за который проголосовал самый высокий голос.
Обновление: расслабленное последнее правило.
источник
Ответы:
С
Я решил, что мне понравился низкий грохочущий шум, генерируемый строкой,
/**/
который, по совпадению, не является способом открытия и закрытия комментария в C. Единственный другой интересный момент здесь - это то, что34
для a"
заменяется на35-1
(Завершение в1
намеренном порядке) на избежать ужасных аккордов. Я также пытался сделать финал звучащим драматичным. Я действительно сделал. Я намерен отредактировать это позже, чтобы оно звучало немного лучше.Насколько я понимаю правила, прокомментированные разделы все еще проходят окончательное правило, потому что их удаление приводит к неудачной квине.
источник
J
Да, я думаю, вы можете догадаться, как это будет происходить.
Трудно сделать что-нибудь классное в J без паренов, и, поскольку вы редко можете заканчивать их нулями и единицами, большинство вещей звучат так, как будто кто-то сидит на высоких и низких половинах клавиатуры одновременно. Я старался изо всех сил, я тебя знаю.
Я думаю, что это классная основа для фортепиано. Я действительно не знаю ничего о композиции, я просто схватил квинну и немного перевернул числа.
И, просто для удовольствия, играйте как EDM. Я называю это Japhex Twin .
Вы можете подтвердить quineiness этих мелких фрагментов кода на tryj.tk .
источник
Музыкальный бетон с питоном
У меня сегодня не так много времени, но я хотел получить ответ. Жанр - это оправдание тому, что ты ничего не говоришь. Может быть, звуковой эффект в видеоигре?
источник
С
Разрывается с переносами строк только в целях презентации; это только квинна (и только соответствует требованиям к длине), если переводы строк удалены.
Декларация printf была необходима для компиляции
(printf)
./*(*/
и/*)*/
использовались для сопоставления скобок в коде, в то время как сочетание скобок и оператора запятой использовалось для формирования аккордов изprintf
параметров.Редактировать: укороченный, чтобы соответствовать требованиям к размеру, а также сделать кусок быстрее.
Это звучит лучше всего на пианино.
источник
Схема
Это не может быть особенно мелодичным (на самом деле это звучит так, будто кто-то бросил мертвую свинью в детскую бабушку), но, по крайней мере, это короткий музыкальный фрагмент. Было бы трудно сделать что-нибудь намного более длинное или менее похожее на летучую свинью.
источник
Für Golfscript
Это удовлетворяет букве правила «не три последовательных удаления букв», хотя и не намерение, я понимаю.
источник
Кобра / Партия
Технически это не quine в Batch (он читает свой собственный источник). Это однако Quine в Кобре.
Лучше всего звучит в режиме пианино, что-то вроде музыки на уровне призраков из видеоигры эпохи Супер Марио.
источник
Pyth
Лучше всего играть с четвертой настройкой (сумма + и - интервал изменения) около 20, остальные по умолчанию. Лучше всего звучит на пианино.
источник
Haskell
(Я не уверен, нарушает ли имя переменной последнее правило.)
Лучше всего играть на фортепиано с длительностью ноты 1000 миллисекунд и интервалом ноты 250 миллисекунд, со стандартными значениями + и -.
источник