Dies soll eine Code-Golf-Herausforderung am einfacheren Ende des Spektrums sein. Aber ich dachte, es könnte schön sein, hier eine Mikrooptimierung herauszubringen.
Es gibt drei grundlegende Arten von DVI-Anschlüssen : DVI-A (analog), DVI-D (digital) und DVI-I (integriert). Darüber hinaus gibt es Single-Link- und Dual-Link-Versionen der DVI-D- und DVI-I-Anschlüsse. Jeder dieser fünf verschiedenen Anschlüsse verwendet einen anderen Satz von Stiften.
Angesichts einer von A
, D1
, D2
, I1
, I2
als eine Kennung für die Art des Verbinders, drucken die entsprechenden ASCII - Darstellung der Stifte des Steckers:
A:
# # # # # # #
===== # # #
# # # # # #
D1:
# # # # # #
===== # # # # # #
# # # # # #
D2:
# # # # # # # #
===== # # # # # # # #
# # # # # # # #
I1:
# # # # # # # #
===== # # # # # #
# # # # # # # #
I2:
# # # # # # # # # #
===== # # # # # # # #
# # # # # # # # # #
(Die X:
Zeilen sind nicht Teil der Ausgabe, Sie sollten nur 3 Zeilen drucken.)
Sie können ein Programm oder eine Funktion schreiben und Eingaben über STDIN, ARGV oder Funktionsargument vornehmen. Die Ausgabe muss mit einem optionalen Zeilenvorschub nach STDOUT gedruckt werden.
Sie können nachgestellte Leerzeichen in die zweite Zeile des A
Connectors einfügen oder nicht . Sie dürfen an keiner anderen Stelle zusätzliche führende oder nachfolgende Leerzeichen verwenden.
Dies ist Codegolf, daher gewinnt die kürzeste Antwort (in Bytes).
quelle
"I1"
stattI1
?Antworten:
CJam,
7970 BytesInspiriert von Nutkis Antwort . Dies stellt auch sicher, dass keine nachgestellten Leerzeichen vorhanden sind (außer in der zweiten Zeile).
Verwenden Sie diesen Link, um den Code zu kopieren, während SE nicht druckbare Zeichen entfernt.
Es gibt 5 Zeichen im nicht druckbaren ASCII-Bereich, jedoch innerhalb eines Bytes (ASCII-Code 255).
Wie es funktioniert :
Probieren Sie es hier online aus
quelle
Perl -
10091 (einschließlich 1 Flagge)Nutzt Nutkis Ideen zur Verwendung
-p
und Reduzierung von Doppelspalten. Vereinfachte Eliminierung von Leerzeichen.Die Eingabe stammt von stdin und darf nur den Connector-Typ ohne nachfolgende Newline enthalten.
Bisherige:
Übernimmt ein Befehlszeilenargument. Ungolfed:
quelle
$x=shift|" qb"
indem Sie 3 Vorkommen von doppeltem Leerzeichenb
in der Vorlage hinzufügen und durch ersetzen . Wenn Sie die Eingabeverarbeitung auf '-p' ändern, erhalten Sie zusätzlich 7 (abzüglich des Flags):$x=$_|""
und es ist kein final erforderlichsay
.x
nach konvertiere#
. Die zweite Zeile enthält jedoch immer noch Leerzeichen. DennA
der Raum erstreckt sich über das Finale#
der anderen Zeilen hinaus (was ich technisch zulasse). Aber für dieI1
,I2
usw. In einigen Fällen gibt es noch einen nachgestellten Bereich, für den gesorgt werden muss. Ich denke, ich kann ein paar weitere Charaktere herausgolfen.Python, 168 Zeichen
Scheint ein neuer Ansatz zu sein. Ich habe die Zeichenfolge:
Ich ersetze das
G
,H
und2
auf der Grundlage der Eingabe.quelle
J,
Minimiert153 121119 ZeichenEin dritter Ansatz: Packe alle
und alle
Uneingeschränkt#
in eine riesige ganze Zahl als Bits. Fügen Sie die=
's danach hinzu. Nutzt aber immer noch nicht die Symmetrie vieler Steckervarianten.Minimiert (153)
Auch als Funktion. Diese verwendet eine binäre Kodierung mit variabler Länge, indem Einsen in Binärzahlen zusammengefasst und durch Nullen getrennt werden. 0 Einsen in einer Reihe bedeuten
, 1
Ungolfed#
Einsen bedeutet , 2 Einsen bedeuten=
, 3 Einsen bedeuten Zeilenvorschub und 4 Einsen trennen die fünf Saiten voneinander.quelle
Marbelous, 281 Bytes / Zeichen
Minimiert:
Dies geschieht
D1
,D2
,I1
,I2
oderA
von STDIN. Das Verfolgen von Zeilenumbrüchen in der Eingabe ist optional. Die Ausgabe erfolgt nach STDOUT.Dieses Programm ruft Unterplatinen auf, die Teile von Steckverbindern drucken und diese ausfüllen
#
und je nach s oder Leerzeichen lassen.Versuchen Sie diese Antwort hier ; Es werden zylindrische Platten benötigt.
mit Kommentaren:
quelle
Perl 5: 105 (einschließlich 1 Flag)
Noch eine Perl-Lösung. Verwendet stdin für den Parameter.
quelle
GNU sed, 116 Bytes
Ausgabe:
quelle
J,
Minimiert198, 194,157 ZeichenAls Funktion implementiert. Beachten Sie, dass es sich bei der Funktion um einen Zug handelt, dh, Sie müssen ihn in Klammern setzen oder einem Namen zuweisen, um ihn zu verwenden (möglicherweise sollte ich die Parens als Teil der Funktion zählen, auch wenn dies technisch nicht der Fall ist).
UngolfedDie Idee ist, den gemeinsamen Teil der Zeichenfolge getrennt von den Zeichen zu speichern, die sich zwischen den Anschlusstypen unterscheiden.
S1
speichert die eindeutigen Zeichen undS2
fungiert als Muster, wobeix
's als Platzhalter zum Ausfüllen fungiert.quelle
Python -
167 166 164 161159quelle
JavaScript (ES6) 178
186Bearbeiten Wenn Sie 7 Basisblöcke haben, verwenden Sie die Basis 7
Der direkte Weg, indem Sie Zeichenfolgen mit Ersetzen und 7 Bausteine erstellen.
Ausgabe auf Standardausgabe mit Alarm, wie vom OP angefordert.
Jetzt werde ich einige Mikrooptimierungen versuchen ...
Test in der FireFox / FireBug-Konsole - Entfernen der Warnmeldung, um den Test zu vereinfachen
Ausgabe
quelle
APL (115)
Prüfung:
quelle
JavScript ES6, 186 Bytes
Code-Snippet anzeigen
Der Code ist schnell und schmutzig, aber er erledigt die Arbeit. Meistens werden die
#
s und Leerzeichen in binäre und dann in Basis 36 gesetzt. Ich suche nach einer eleganteren und hoffentlich kürzeren Lösung.quelle
Perl 5 - 150 (149 + 1 für
n
)Golf gespielt:
Eingabe von STDIN, Ausgabe an STDOUT. Füllt bestimmte Zeichen mit
#
oderabhängig von der Eingabe aus.
Ungolfed:
quelle