Schreiben Sie das kürzeste Programm, das Gitarren-Tabs für die als Eingabe angegebenen Akkorde generiert.
Damit die Gitarristen unter Ihnen keinen Vorteil haben und es deterministisch (und wahrscheinlich einfacher zu codieren) machen, sind hier die einzigen Formen der zugelassenen Akkorde:
Major chords:
E F F# G G# A A# B C C# D D#
e 0---1---2---3---4---0---1---2---3---4---5---6---
B 0---1---2---3---4---2---3---4---5---6---7---8---
G 1---2---3---4---5---2---3---4---5---6---7---8---
D 2---3---4---5---6---2---3---4---5---6---7---8---
A 2---3---4---5---6---0---1---2---3---4---5---6---
E 0---1---2---3---4---0---1---2---3---4---5---6---
Minor chords:
Em Fm F#m Gm G#m Am A#m Bm Cm C#m Dm D#m
e 0---1---2---3---4---0---1---2---3---4---5---6---
B 0---1---2---3---4---1---2---3---4---5---6---7---
G 0---1---2---3---4---2---3---4---5---6---7---8---
D 2---3---4---5---6---2---3---4---5---6---7---8---
A 2---3---4---5---6---0---1---2---3---4---5---6---
E 0---1---2---3---4---0---1---2---3---4---5---6---
Beachten Sie, dass die 5 ersten Akkorde und die 7 letzten Akkorde jeder Serie unterschiedliche Formen haben.
Alle Akkorde sind einfache Dur- oder Moll-Akkorde (Nr. 7 oder andere Variationen).
Sie sollten sich auch um Wohnungen kümmern. Erinnerung:
A# = Bb
C# = Db
D# = Eb
F# = Gb
G# = Ab
B#, Cb, E# and Fb are not used
Die Ausgabe muss die erste Spalte mit den Kabelnamen enthalten, wie oben gezeigt. Der Akkordname muss nicht oben stehen. Akkorde müssen -
wie oben gezeigt durch 3 getrennt werden . Die letzten 3 -
sind optional.
Die Eingabe ist eine Zeichenfolge, die aus durch Leerzeichen getrennten Akkordnamen besteht.
Ein Beispiel für eine Eingabe ist:
Bm Gb A E G D Em F#
und die entsprechende Ausgabe ist:
e 2---2---0---0---3---5---0---2---
B 3---2---2---0---3---7---0---2---
G 4---3---2---1---4---7---0---3---
D 4---4---2---2---5---7---2---4---
A 2---4---0---2---5---5---2---4---
E 2---2---0---0---3---5---0---2---
Antworten:
JavaScript,
297277262235223 ZeichenIn der Golfversion sind keine Zeilenumbrüche von Bedeutung. Sie dienen nur dazu, die Antwort lesbar zu machen. Semikolons sind wichtig.
Bearbeiten: Ersetzt das äußere
map
durch eine while-Schleife und andere Bearbeitungen. Endlich innerhalb von 2 × der Größe der Golfscript-Version (vorerst)!Bearbeiten: Ersetzt das
indexOf
durch Mathe, zerlegt die Nachschlagetabelle, weitere kleine Verbesserungen.Edit: Ein weiterer
map
zufor
und in einem Finale hatte\n
ich unnötig gegessen. Endlich in Jules 'Python-Version.Die Ausgabe nutzt das
---
optionale Nachziehen nicht mehr aus , da:quelle
Golfscript, 136 Zeichen
Volle 23 Zeichen (17,5%) behandeln diese beiden Zeichen am Anfang jeder Ausgabezeile.
Beispielausgabe, Testen der Edge Cases:
Ich habe nur ungefähr eine Stunde damit verbracht, daher kann es wahrscheinlich um mindestens 5 bis 10 Zeichen reduziert werden. Konzeptionell stellt sich heraus, dass es der DocMax-Lösung ziemlich ähnlich ist: Nachschlagetabelle für vier Fälle, dann inkrementieren um einen Versatz und die Zeichenfolgen in der richtigen Reihenfolge verbinden.
quelle
Nachdem ich das geschrieben hatte, wurde mir klar, dass ich das viel schlauer hätte machen können ... vielleicht mache ich einen weiteren Eintrag. Hoffentlich bekomme ich nur Punkte dafür, dass ich der Schnellste bin!
Auf jeden Fall gibt es 962 Zeichen von Perl.
Hier ist die entsprechende Ausgabe.
quelle
Da es schon kürzere Lösungen gibt (verdammt GolfScript!), Ist hier meine:
Python, 229 Zeichen
Ausgabe:
quelle
Python, 449 Zeichen
quelle
C99 - 231 Zeichen
Die Akkorde werden in der Befehlszeile angegeben, ein Argument pro Akkord, und natürlich gibt es keine Eingabevalidierung.
Probelauf:
Nicht golfen
Nichtstandardisierte C - 206 Zeichen
Wenn es uns nicht um Sprachspezifikationen geht, kann GCC den folgenden Einzeiler in eine funktionale Binärdatei kompilieren, obwohl C99-Variablendeklarationen mit einer K & R-Argumentdeklaration (und einer impliziten Deklaration von printf) gemischt werden.
quelle
C ++, 432
Beachten Sie, dass hierfür die Gitarrenstimmung als erster Parameter erforderlich ist. (Die meisten Nicht-Standard-Stimmungen führen zu lächerlichen Ergebnissen, aber ich vermute, Sie geben sich mit der Standard-Stimmungen zufrieden.)
Für Hotel California können Sie tun
$./a.out EBGDAE Cbm Gb Bbb Fb G D Em F# Bm F# G## D## F## C## D##m E##
. Ergebnis:quelle
390 345340 PostscriptVereinfacht zu einem gitarren-pragmatischen Ansatz (die E-Form ist nur eine Variation der A-Form, die mit einem Fingerwechsel eine Saite nach unten verschoben wird). Leihte die Idee der codierten Zeichenfolge aus den anderen Antworten.
Vorher:
450 442418 PostscriptAuch hier habe ich das Ausgabeformat korrigiert. (Frühere Versionen begannen mit "E ---" anstatt mit "e".)
Wie man es laufen lässt:
gsnd -q -- tab.ps Bm Gb A E G D Em F\#
(verstecke die Spitze von der Schale).Die Version ohne Golf war fast schwieriger als die mit Golf. Aber ich habe versucht, gründlich zu sein. Edit: noch ein paar Kommentare zu den Tricksy-Bits.
Und wie wäre es mit Haus der aufgehenden Sonne als Test?
quelle