Рубин - 125 символов
146 144 140 137 134 126 125 символов
a,n=$*;h=a[1]?0:1;s=a[0]-h+1
9.times{|t|puts (s..s+n.to_i).map{|i|i%7%4<1||t>4?" | ":"### "
}.join[h..-4].tr t>7?" ":n,"_"}
(Вторая новая строка не обязательна и добавлена только для того, чтобы избежать полосы прокрутки на SO. При желании точки с запятой можно заменить на новые строки.)
Версия Ruby 1.9 отличается, но имеет равную длину (заменяется a[0]
на a.ord
и "_"
на ?_
):
a,n=$*;h=a[1]?0:1;s=a.ord-h+1
9.times{|t|puts (s..s+n.to_i).map{|i|i%7%4<1||t>4?" | ":"### "
}.join[h..-4].tr t>7?" ":n,?_}
Звоните с
$ ruby piano.rb C 14
molf
источник
источник
i%7%4<1||t>4?"_|___":"###__"
кi%7%4&&t<5?"###__":"_|___"
и сохранить 2 символов. Мне нравится эта%7%4
идиомаОтветы:
Лилипонд, 285
288291310315330333340350знаковВ соответствии с музыкальной темой, вот решение на языке, предназначенном для набора нот, LilyPond:
Применение:
$ lilypond thisfile.ly <input.in >output.out 2>/dev/null
источник
RetroGolf - Applesoft BASIC: 236
239245249257245267285Показано в несколько строк для удобства чтения, но должно быть одной строкой:
Можно протестировать с этим интерпретатора Applesoft BASIC в Javascript или эмуляторе .
Фортепиано http://img685.imageshack.us/img685/3407/piano2.png
источник
C # - 315
Я упорствовать в гольф в C #, хотя это не очень лаконичный язык ...
источник
Питон - 164
источник
t
иu
и умножив на 7?Октава, 153
154155158159162172180186185188197199200206207209212214215219240244268знаковЗачем использовать только C, C # или F # (или B или D), если вы можете программировать с полной октавой?
(для ясности обернуты каждые 60 символов)
Да ... это решение действительно вычисляет сложное сопряженное транспонирование строки.
Применение:
$ octave -q thisfile.m <input.in >output.out
источник
С - 197
203207216224232240символыЭта эквивалентная версия с 194 символами предполагает, что с переполнением буфера все в порядке.
источник
for(j=0; j<=l*5+h; j++)
<- бесполезные пробелы, и вы, кажется, тоже включили их в подсчет символовPostScript: 239
245293312(обычный); 219224225231(ASCII85)Двоичная версия расширена с помощью кодировки ASCII85 в 219-символьную программу только с печатаемыми символами ASCII:
Применение:
$ gs -q -dNOPROMPT -dNODISPLAY -dBATCH thisfile.ps <input.in >output.out
источник
F #: 224
225, 226, 248, 252, 270, 276, 299, 306символовЯ использовал модули по 2 для обнаружения места или фунта. '' равно 32% 2 = 0 '#' равно 35% 2 = 1, и поскольку мои условные возвращенные нули для false, я просто умножил результат модулей.
Использовал <| оператор, чтобы сбрить один пробел. Используется перегрузка оператора для сохранения другого символа.
оригинал
источник
let g s i=for i=1 to i do printfn"%s"(String.replicate 99 s).[t+4*p..t+int(x.[2..])*5+5*p]
СЭД, 231
235234235237238244268269270276279280282287300307314329338символовРаботает до 99 ключей. В стандартном пианино 52 белые клавиши, поэтому этого должно быть достаточно.
Примеры:
В последнем примере печатается стандартная клавиатура вместе с воображаемыми черными клавишами с обеих сторон.
источник
PianoScript - 2 символа
Это однострочный:
Применение:
Выход:
Более подробную информацию о языке PianoScript можно найти здесь .
источник
JavaScript - 195 символов
Эй, гольф - это игра, в которой ты соревнуешься только сам с собой, верно? :)
Решение от gnarf; портирован на Rhino (с небольшими исправлениями и изменениями форматирования) KirarinSnow; далее сколотый неровностями; ошибка исправлена KirarinSnow. кеш
k[1]
от cwallenpooleПрименение:
$ cp input.in 0; rhino thisfile.js
Быстрая демонстрационная версия HTML: Гольф-тест - Добавляет
readFile=prompt;print=function(a) {document.write("<pre>"+a);}
источник
s=s[b](1-q,p=s.length-3)
Python3 - 158
Сохранить на
input
противraw_input
. Потерять на()
дляprint
источник
F #: 355 значащих символов
Все в одной строке:
Расширенный:
источник
gets
или что-то подобное, мы бы сэкономили 22 символа!SETL
165 символов; Перевод решения Python для гриблеров.
источник
D2 (шаблоны): 331
370400+ 17 персонажей(на основе решения Ruby.)
Сжатый:
Разъяснил:
Поскольку мы не можем передавать параметры из
dmd
ввода, это необходимо делать в коде. Поддерживает до 99 ключей.источник
Haskell:
212211208 символовОн по-прежнему предполагает символы, совместимые с ascii (в частности, последовательность "@ABCDEFG"), но больше не требует Char.ord
источник
Рубин - 113 символов
Работает с аргументами командной строки
Рубин - 118 символов
источник
PHP - 208 символов
Должны быть улучшены.
Вход должен быть доставлен в константе с именем PIANO.
источник
F #
414386372 значащих символа:Да, и один бонус, этот скрипт действительно правильно обрабатывает "F # 372" - хотя я не буду вас раздражать, вставляя его сюда ...
System.Console.ReadLine () такой облом ...
источник