Generiere mir einen QFP-Chip!
QFP ist eine Art Formfaktor für eine elektrische Komponente, bei der Stifte aus den Seiten eines Chips herausragen. Hier ist ein Bild einer typischen QFP-Komponente:
Sie können sehen, dass die allgemeine Formel darin besteht, 4 Seiten mit der gleichen Anzahl von Stiften zu haben.
Ihre Herausforderung besteht darin, ein Programm zu erstellen, das eine Ganzzahl aufnimmt, die die Anzahl der Pins auf einer Seite darstellt, und eine ASCII-QFP-Komponente mit nummerierten Pins erstellt.
Eingang:
Eine einzelne Ganzzahl, die die Anzahl der Pins auf einer Seite darstellt
Ausgabe:
Ein ASCII-QFP-Chip mit einer entsprechenden Pinbelegung.
Beispiel:
Eingabe: 1
4 ┌┴┐ 1┤ ├3 └┬┘ 2
Eingabe: 2
87 ┌┴┴┐ 1┤ ├6 2┤ ├5 └┬┬┘ 34
Eingabe: 12
444444444333 876543210987 ┌┴┴┴┴┴┴┴┴┴┴┴┴┐ 1┤ ├36 2┤ ├35 3-34 4┤ ├33 5┤ ├32 6┤ ├31 7.30 8┤ ├29 9┤ ├28 10┤ ├27 11┤ ├26 12-25 └┬┬┬┬┬┬┬┬┬┬┬┬┘ 111111122222 345678901234
Regeln:
- Alle QFP-Chips müssen eingeschlossen und versiegelt sein. Abstand ist von größter Bedeutung. Staub in einem Mikroprozessor ist schlechtes Zeug!
- Die Pin-Nummerierung muss wie in den Beispielen erfolgen (von links nach rechts, von oben nach unten, gegen den Uhrzeigersinn nummeriert).
- Sie können mit der Nummerierung bei 0 beginnen, dies darf jedoch keine Auswirkungen auf den Chip haben (ein Eingang von 12 benötigt immer noch 12 Pins pro Seite).
- Die einzigen gültigen Zeichen in Ihrer Ausgabe sind
1,2,3,4,5,6,7,8,9,0,┌,┴,┐,├,┘,┬,└,┤
Leerzeichen und Zeilenumbrüche. - Alle Kodierungen für Sprachen sind erlaubt, aber Ihre Ausgabe MUSS mit den obigen Regeln übereinstimmen.
Dies ist ein Codegolf, und als solches gewinnt der Code mit der geringsten Anzahl von Bytes! Viel Glück!
code-golf
string
ascii-art
kolmogorov-complexity
tuskiomi
quelle
quelle
Antworten:
Mathematica, 271 Bytes
Anonyme Funktion. Nimmt eine Zahl als Eingabe und gibt eine Zeichenfolge als Ausgabe zurück. Das Nicht-Box-Zeichnungs-Unicode-Zeichen ist U + F3C7 (private Verwendung) für
\[Transpose]
.quelle
Kotlin ,
397393 BytesUnbenanntes Lambda.
Sie können es hier versuchen , aber Sie müssen die Quelle in sich selbst einfügen, da der Editor keine Programme in UTF-8-Codierung zu speichern scheint. Die ungolfed-Version ist ein vollständiges Programm. Sie sollten das also in vollem Umfang nutzen können.
Golf gespielt
(Art von) Ungolfed
Sparte eine Menge Bytes, indem der
%
Operator überlastet und zum Drucken verwendet wurde. Ich werde das wahrscheinlich später noch einmal wiederholen - ich denke, ich kann einige Bytes einsparen, wenn ichmod
einen anderen Operator als Verkettungsfunktion verwende. Mehr Interpolation und weniger Druckaufrufe.quelle
Python 2,
352343331 BytesProbieren Sie es hier aus.Beachten Sie, dass die Datei mit der UTF-8-Stückliste beginnen muss,
\xef\xbb\xbf
damit die Unicode-Literale im Standard-CPython-Interpreter funktionieren. Diese 3 Bytes werden hier gegen die Größe gezählt.repl.it
verwendet bereits Unicode, daher enthält der Link nur den hier gezeigten Code.Vielen Dank an @tuskiomi für die Kodierungsidee, die gespeichert wurde
921 Bytes.Teilweise ungolfed:
quelle
# -*- coding: utf-8 -*-
einen Zeilenumbruch nach oben, damit der Dolmetscher ihn akzeptiert. Die UTF-8-Codierung für jedes dieser Zeichen beträgt 3 Byte. Es war also nicht ausreichend, die Kosten für die Codierungsanweisung zu bezahlen. Ich habe gerade PEP 263 überprüft und kann mit nur#coding=utf-8
und einer neuen Zeile davonkommen, so dass es einige Bytes einspart.JavaScript (ES6),
295284 Byte (268 Zeichen), nicht konkurrierendDieser Code unterstützt keine PIN-Nummern über 99 und qualifiziert sich daher möglicherweise nicht als vollständig gültiger Eintrag. Aus diesem Grund stelle ich fest, dass es derzeit keine Wettbewerbe gibt.
Es könnte leicht modifiziert werden, um eine beliebige große Anzahl von Stiften zu unterstützen, indem breitere statische Ränder um den Chip verwendet werden. Dies kann jedoch auch gegen die Regeln verstoßen (da bin ich mir nicht sicher). Voll dynamische Ränder würden deutlich mehr Bytes kosten.
Demo
Code-Snippet anzeigen
quelle
Java 11,
451425393 Bytes-26 Bytes dank @ceilingcat .
Erläuterung:
Probieren Sie es online aus.
quelle