Die Klaviertasten sind 3 Zeichen breit und 7 Zeichen hoch. Wenn jedoch jeder Schlüssel 3 Zeichen breit wäre, gäbe es nicht genug Platz für die schwarzen Schlüssel. Aus diesem Grund sind einige der weißen Tasten teilweise ausgeschnitten. Es gibt 3 Arten von weißen Tasten.
Schlüssel mit der rechten Hälfte fehlen (R):
____
| |
| |
| |
| |
| |
| |
|___|
Schlüssel, bei denen die linke Hälfte fehlt (L):
____
| |
| |
| |
| |
| |
| |
|___|
Und Schlüssel mit der linken und rechten Hälfte fehlen (M):
___
| |
| |
| |
| |
| |
| |
|___|
Auf einer echten Tastatur sieht das Muster so aus:
RMLRMML, RMLRMML, RMLRMML...
und wiederholt sich für insgesamt 88 Tasten. Jetzt können Sie es nicht sehen, wenn die Tasten einzeln angezeigt werden, aber wenn Sie sie zusammenschieben, können Sie die schwarzen Tasten sehen.
_________________________________________________________
| | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
Deine Aufgabe
Bei einer positiven Ganzzahl N drucken Sie diese ASCII-Grafik eines Klaviers mit N weißen Tasten. Sie sollten in der Lage sein, jedes N von 1 bis einschließlich 52 zu verarbeiten (da echte Klaviere mit 88 Tasten 52 weiße Tasten haben). Hier ist die Testausgabe von 1 bis 8, und danach nimmt das Muster auf ähnliche Weise zu.
1
____
| |
| |
| |
| |
| |
| |
|___|
2
________
| | | |
| | | |
| | | |
| | | |
| | |
| | |
|___|___|
3
_____________
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | |
| | | |
|___|___|___|
4
________________
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | |
| | | | |
|___|___|___|___|
5
____________________
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | |
| | | | | |
|___|___|___|___|___|
6
________________________
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | |
| | | | | | |
|___|___|___|___|___|___|
7
_____________________________
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | |
| | | | | | | |
|___|___|___|___|___|___|___|
8
________________________________
| | | | | | | | | | | | | |
| | | | | | | | | | | | | |
| | | | | | | | | | | | | |
| | | | | | | | | | | | | |
| | | | | | | | |
| | | | | | | | |
|___|___|___|___|___|___|___|___|
Und last but not least gibt es hier eine Ausgabe mit 52 Tasten:
_________________________________________________________________________________________________________________________________________________________________________________________________________________
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
Standardlücken sind verboten und die kürzeste Antwort in Bytes gewinnt!
Antworten:
Pyth,
686563 BytesProbieren Sie es online!
Testsuite.
In dieser Version habe ich nur die Zuweisungen (J und K) ersetzt, um 2 Bytes zu sparen. Lesen Sie daher die unten stehende Version.
Vorherige 65-Byte-Version mit Erläuterung
Probieren Sie es online!
Schwarze Magie
quelle
JavaScript (ES6),
155149147 ByteWobei
\n
das wörtliche Zeilenumbruchzeichen darstellt. Nutzt die Tatsache, dass alle Zeilen nach dem ersten|
Zeichen beginnen. Erläuterung:Edit: 2 Bytes gespart, indem ich mein falsches Lesen der Spezifikation auf der Höhe der Tasten korrigiert habe.
quelle
Ruby, 119 Bytes
Ungolfed im Testprogramm
quelle
> <>
188182 BytesDie Anzahl der anzuzeigenden weißen Tasten sollte beim Programmstart auf dem Stapel vorhanden sein.
Bearbeiten : Ich habe es geschafft, ein paar Bytes durch Kombinieren der Ausgabe für die Zeilen 5/6 und 7 zu sparen. Vorherige Version:
quelle
PHP, 238 Bytes
Stellen Sie den Code wie üblich voran, fügen
<?php
Sie ihn in eine PHP-Datei ein (nennen wir ihnkeyboard.php
) und führen Sie ihn aus:Zwei weitere Bytes können auf PHP7 gespeichert werden, indem die Initialisierung von
$n
und$s
in ihre erste Verwendung gedrückt wird :Der ungolfed Code, eine Testsuite und andere Goodies sind auf Github zu finden .
quelle
Python
32,191185180182171145144133132 BytesDies könnte ein wenig Golfen gebrauchen, aber ich habe bereits so viel mit dem Code herumgespielt, dass ich möglicherweise nicht sehe, wo sich die Golfplätze befinden. Anregungen zum Golfen sind willkommen.
Bearbeiten: Misread die Spezifikation auf der Höhe der Schlüssel. Dieser Fehler wurde behoben.
Edit: Borrowed Neils 12 Schlüsselidee aus seiner Javascript-Antwort, entfernte einige Klammern und wechselte zu Python 2, um 11 Bytes zu sparen.
Bearbeiten: Viele Änderungen, um die Funktion auf eins zu reduzieren
for
Schleife reduzieren.Bearbeiten: Jetzt ein Programm anstelle einer Funktion.
Bearbeiten: Verwenden Sie jetzt
print"\n|".join()
wie von Neil vorgeschlagen, um 11 Bytes zu sparen. Verwandelte das Programm wieder in eine Funktion zum Speichern eines Bytes.quelle
"\n|".join
Trick weitere 10 Bytes einsparen .print
und zu entfernen"\n|"
!C # 1683 Bytes
Also ... nachdem ich Neils Antwort oben gesehen habe, ist das ziemlich peinlich, aber ich werde es trotzdem posten, weil ich eine Weile gebraucht habe (Segen). Ich habe meine mit C # erstellt. In der Klasse "Fncs" habe ich ein Array mit der typischen Reihenfolge der Schlüssel erstellt. Dann habe ich eine Funktion erstellt, mit der der Benutzer anhand einer bestimmten Ganzzahl einen geeigneten Index für dieses Array abrufen kann. Um einzelne Zeilen zu bearbeiten, habe ich eine "PianoKeyboard" -Klasse erstellt, die ein Wörterbuch enthält, in dem mehrere Zeichenfolgen für die einzelnen Zeilen gespeichert sind. Schließlich habe ich die Funktion "DrawKey" erstellt, mit der der entsprechende Text an die einzelnen Zeilen angehängt wird, und die Funktion "GetKeys", mit der der Gesamtwert der Zeichenfolge zurückgegeben wird.
quelle