Ruby - 125 znaków
146 144 140 137 134 126 125 znaków
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,"_"}
(Drugi znak nowej linii nie jest konieczny i jest dodawany tylko w celu uniknięcia paska przewijania w SO. W razie potrzeby średniki można zastąpić nowymi wierszami).
Ruby 1,9 wersja jest inna, ale tę samą długość (zamiast a[0]
przez a.ord
i "_"
za ?_
)
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,?_}
Zadzwoń z
$ ruby piano.rb C 14
molf
źródło
źródło
i%7%4<1||t>4?"_|___":"###__"
doi%7%4&&t<5?"###__":"_|___"
zaoszczędzisz 2 znaki. Uwielbiam ten%7%4
idiomOdpowiedzi:
LilyPond 285
288291310315330333340350znakówZgodnie z motywem muzycznym, oto rozwiązanie w języku przeznaczonym do składu nut, LilyPond:
Stosowanie:
$ lilypond thisfile.ly <input.in >output.out 2>/dev/null
źródło
RetroGolf - Applesoft BASIC: 236
239245249257245267285Dla czytelności wyświetlany w wielu wierszach, ale powinien być jednym wierszem:
Może być testowany za pomocą tego interpretera Applesoft BASIC w Javascript lub emulatorze .
Fortepian http://img685.imageshack.us/img685/3407/piano2.png
źródło
C # - 315
Nadal gram w golfa w C #, chociaż nie jest to zbyt lakoniczny język ...
źródło
Python - 164
źródło
t
iu
i mnożąc przez 7?Oktawę, 153
154155158159162172180186185188197199200206207209212214215219240244268znakówPo co używać tylko C lub C # lub F # (lub B lub D), skoro można programować z pełną oktawą?
(zawijane co 60 znaków dla przejrzystości)
Tak ... to rozwiązanie naprawdę oblicza złożoną sprzężoną transpozycję ciągu.
Stosowanie:
$ octave -q thisfile.m <input.in >output.out
źródło
C - 197
203207216224232240postacieTa odpowiednik 194- znakowej wersji zakłada, że przepełnienie bufora jest w porządku.
źródło
for(j=0; j<=l*5+h; j++)
<- bezużyteczne spacje i wydaje się, że uwzględniłeś je również w liczbie znakówPostScript: 239
245293312(zwykły); 219224225231(ASCII85)Wersja binarna rozszerzona przez kodowanie ASCII85 do 219-znakowego programu z tylko drukowalnymi znakami ASCII:
Stosowanie:
$ gs -q -dNOPROMPT -dNODISPLAY -dBATCH thisfile.ps <input.in >output.out
źródło
F #: 224
225, 226, 248, 252, 270, 276, 299, 306znakówUżyłem modułów 2, aby wykryć przestrzeń lub funt. '' to 32% 2 = 0 '#' to 35% 2 = 1, a ponieważ moje zera warunkowe zwrócone dla fałszu po prostu pomnożyłem wynik modułów.
Użyto <| operator, aby zgolić jeden znak spacji. Użyto przeciążenia operatora, aby zapisać kolejny znak.
oryginał
źródło
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]
sed 231
235234235237238244268269270276279280282287300307314329338znakówDziała dla maksymalnie 99 kluczy. Standardowe pianino ma 52 białe klawisze, więc to powinno wystarczyć.
Przykłady:
Ostatni przykład wyświetla standardową klawiaturę wraz z wyimaginowanymi czarnymi klawiszami na obu końcach.
źródło
PianoScript - 2 znaki
To jest jedna linijka:
Stosowanie:
Wynik:
Więcej informacji na temat języka PianoScript można znaleźć tutaj .
źródło
JavaScript - 195 znaków
Hej, golf to gra, w której rywalizujesz tylko ze sobą, prawda? :)
Rozwiązanie autorstwa gnarf; przeniesiony do Rhino (z drobną poprawką i zmianami formatowania) przez KirarinSnow; dodatkowo odłupane przez gnarf; błąd poprawiony przez KirarinSnow. cache użytkownika
k[1]
cwallenpooleStosowanie:
$ cp input.in 0; rhino thisfile.js
Szybka wersja demonstracyjna HTML: Test golfa - dodaje
readFile=prompt;print=function(a) {document.write("<pre>"+a);}
źródło
s=s[b](1-q,p=s.length-3)
Python3 - 158
Zapisać na
input
żyworaw_input
. Przegrać()
zaprint
źródło
F #: 355 znaczących znaków
Wszystko w jednej linii:
Rozszerzony:
źródło
gets
lub odpowiednik, zaoszczędzilibyśmy 22 znaki!SETL
165 znaków; Tłumaczenie rozwiązania Gribblers Python.
źródło
D2 (szablony): 331
370400+ 17 znaków(na podstawie rozwiązania Ruby).
Sprężony:
Wyjaśnił:
Ponieważ nie możemy przekazać parametrów z
dmd
wejścia, należy to zrobić w kodzie. Obsługuje tylko do 99 kluczy.źródło
Haskell:
212211208 znakówNadal zakłada litery zgodne z ASCII (w szczególności sekwencja „@ABCDEFG”), ale nie wymaga już znaku Char.ord
źródło
Ruby - 113 znaków
Działa z argumentami wiersza poleceń
Ruby - 118 znaków
źródło
PHP - 208 znaków
Trzeba to poprawić.
Wejście musi być dostarczone w stałej o nazwie PIANO.
źródło
F #
414386372 znaczące znaki:Aha, i jeden bonus, ten skrypt właściwie obsłuży "F # 372" poprawnie - nie będę cię denerwować, wklejając go tutaj ...
System.Console.ReadLine () to taki kłopot ...
źródło