Ruby - 125 Zeichen
146 144 140 137 134 126 125 Zeichen
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,"_"}
(Die zweite neue Zeile ist nicht erforderlich und wird nur hinzugefügt, um eine Bildlaufleiste in SO zu vermeiden. Semikolons können auf Wunsch durch neue Zeilen ersetzt werden.)
Die Ruby 1.9- Version ist unterschiedlich, aber gleich lang ( a[0]
nach a.ord
und "_"
nach ersetzt ?_
):
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,?_}
Rufen Sie an mit
$ ruby piano.rb C 14
molf
quelle
quelle
i%7%4<1||t>4?"_|___":"###__"
zui%7%4&&t<5?"###__":"_|___"
und speichern Sie 2 Zeichen. Ich liebe diese%7%4
RedewendungAntworten:
LilyPond, 285
288291310315330333340350ZeichenIn Übereinstimmung mit dem Musikthema finden Sie hier eine Lösung in einer Sprache, die zum Setzen von Musiknoten entwickelt wurde: LilyPond:
Verwendung:
$ lilypond thisfile.ly <input.in >output.out 2>/dev/null
quelle
RetroGolf - Applesoft GRUNDLAGEN: 236
239245249257245267285Zur besseren Lesbarkeit in mehreren Zeilen dargestellt, sollte jedoch eine einzelne Zeile sein:
Kann mit diesem Applesoft BASIC Interpreter in Javascript oder getestet werden einem Emulator .
Klavier http://img685.imageshack.us/img685/3407/piano2.png
quelle
C # - 315
Ich spiele weiterhin Golf in C #, obwohl es keine sehr knappe Sprache ist ...
quelle
Python - 164
quelle
t
und entfernenu
und mit 7 multiplizieren?Octave, 153
154155158159162172180186185188197199200206207209212214215219240244268ZeichenWarum nur C oder C # oder F # (oder B oder D) verwenden, wenn Sie mit einer vollen Oktave programmieren können?
(aus Gründen der Klarheit alle 60 Zeichen eingewickelt)
Ja ... diese Lösung berechnet wirklich die komplexe konjugierte Transponierte eines Strings.
Verwendung:
$ octave -q thisfile.m <input.in >output.out
quelle
C - 197
203207216224232240ZeichenDiese äquivalente Version mit 194 Zeichen geht davon aus, dass der Pufferüberlauf in Ordnung ist.
quelle
for(j=0; j<=l*5+h; j++)
<- nutzlose Leerzeichen, und Sie scheinen sie auch in die Anzahl der Charaktere aufgenommen zu habenPostScript: 239
245293312(regulär); 219224225231(ASCII85)Binärversion erweitert durch ASCII85-Codierung zu einem 219-Zeichen-Programm mit nur ASCII-druckbaren Zeichen:
Verwendung:
$ gs -q -dNOPROMPT -dNODISPLAY -dBATCH thisfile.ps <input.in >output.out
quelle
F #: 224
225, 226, 248, 252, 270, 276, 299, 306ZeichenIch habe Module von 2 verwendet, um nach einem Leerzeichen oder Pfund zu suchen. '' ist 32% 2 = 0 '#' ist 35% 2 = 1 und da meine bedingte Null für false zurückgegeben wurde, habe ich gerade das Modulergebnis multipliziert.
Verwendet die <| Bediener, um ein Leerzeichen zu rasieren. Überladen des Operators verwendet, um ein weiteres Zeichen zu speichern.
Original
quelle
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
235234235237238244268269270276279280282287300307314329338ZeichenFunktioniert für bis zu 99 Tasten. Das Standardklavier hat 52 weiße Tasten, dies sollte also ausreichen.
Beispiele:
Im letzten Beispiel wird die Standardtastatur zusammen mit imaginären schwarzen Tasten an beiden Enden gedruckt.
quelle
PianoScript - 2 Zeichen
Es ist ein Einzeiler:
Verwendung:
Ausgabe:
Weitere Informationen zur PianoScript-Sprache finden Sie hier .
quelle
JavaScript - 195 Zeichen
Hey, Golf ist ein Spiel, bei dem du nur gegen dich selbst antrittst, oder? :) :)
Lösung durch Zwerg; von KirarinSnow auf Rhino portiert (mit geringfügigen Korrekturen und Formatierungsänderungen); weiter vom Zwerg weggeschlagen; Fehler von KirarinSnow korrigiert. Zwischenspeicher
k[1]
von cwallenpooleVerwendung:
$ cp input.in 0; rhino thisfile.js
Schnelle HTML-Demoversion: Golf Test - Fügt hinzu
readFile=prompt;print=function(a) {document.write("<pre>"+a);}
quelle
s=s[b](1-q,p=s.length-3)
Python3 - 158
Für mehr
input
vsraw_input
. Verlieren Sie()
fürprint
quelle
F #: 355 signifikante Zeichen
Alles in einer Zeile:
Erweitert:
quelle
gets
oder gleichwertig, wir würden 22 Zeichen speichern!SETL
165 Zeichen; Übersetzung von Gribblers Python-Lösung.
quelle
D2 (Vorlagen): 331
370400+ 17 Zeichen(basierend auf der Ruby-Lösung.)
Komprimiert:
Erklärt:
Da wir keine Parameter von
dmd
der Eingabe übergeben können, muss dies im Code erfolgen. Unterstützt nur bis zu 99 Schlüssel.quelle
Haskell:
212211208 ZeichenEs werden weiterhin ASCII-kompatible Buchstaben angenommen (insbesondere die Sequenz "@ABCDEFG"), es wird jedoch kein Char.ord mehr benötigt
quelle
Ruby - 113 Zeichen
Wird mit Befehlszeilenargumenten ausgeführt
Ruby - 118 Zeichen
quelle
PHP - 208 Zeichen
Muss verbessert werden.
Die Eingabe muss in der Konstante PIANO erfolgen.
quelle
F #
414386372 signifikante Zeichen:Oh, und ein Bonus, dieses Skript wird "F # 372" tatsächlich korrekt behandeln - ich werde Sie nicht ärgern, wenn ich es hier einfüge ...
System.Console.ReadLine () ist so ein Mist ...
quelle