Ich hasse Code Bloat!
Deshalb habe ich mich entschlossen, mein Windows 7-System durch eine Golfversion zu ersetzen. Ich weiß jedoch, dass es nicht einfach ist, also lassen Sie uns zuerst einen Prototyp erstellen. Es wird eine Liste von Fenstern vom Benutzer abgerufen und diese in einer pseudografischen Anzeige auf der Standardausgabe angezeigt.
Zum Beispiel: Benutzereingabe:
0,0,15,10 15,10,20,15 10,13,15,15 9,1,16,3 17,5,20,7 11,2,17,4 15,4,19,6 13,3,18,5
Der Code Golf® Window Manager ™ gibt Folgendes aus:
┌──────────────┐ │ :::::::: ┌─────┴┐ │ :::::::: │: ┌────┴┐ │ :::::::: └─┤: ┌───┴┐ │ :::::::::: └─┤ :::: ├┐ │ :::::::::::: └─┬──┘├┐ │ :::::::::::::: ├─┬─┘│ │ :::::::::::::: │ │ │ :::::::::::::: │ │ :::::::::::::: │ └──────────────┼────┐ │ :::: │ │ :::: │ ┌────┤ :::: │ │ :::: │ :::: │ └────┴────┘
Eingang:
- Entnommen aus der Standardeingabe (oder, falls Ihr System nicht über
stdin
eine Methode verfügt, die mehrere Eingabezeilen bereitstellen kann) - Jede Zeile enthält 4 Zahlen, die durch Komma - Koordinaten eines Fensters getrennt sind
- Die ersten beiden Zahlen: linke obere Ecke; Die letzten beiden Zahlen: untere rechte Ecke
- Mit
x,y
Notation
Ausgabe:
- Schreiben Sie es in die Standardausgabe (oder, falls Ihr System nicht über
stdout
etwas verfügt , das monospaced Text anzeigt). - Verwenden Sie zum Zeichnen von Fenstergrenzen einzelne Box-Drawing-Zeichen aus Codepage 437
- Windows, das später in der Eingabe angegeben wird, verdeckt die zuvor angegebenen
- Füllen Sie die Fenster mit dem Doppelpunkt:
:
- Führende und nachfolgende Leerzeichen sind in Ordnung, sofern sie die Ausrichtung der Fenster nicht beeinträchtigen
Anmerkungen:
- Maximale Auflösung, die ich unterstützen möchte: 76 (horizontal) mal 57 (vertikal)
- Keine Notwendigkeit, schlechte Eingaben zu unterstützen
- Maximale Anzahl von Fenstern: 255 (wenn Sie ein Limit benötigen)
- Meine Windows 7-
cmd
Shell zeigt standardmäßig Codepage mit 437 Zeichen an. Wenn jemand eine Möglichkeit hat, dies unter Linux zu tun (mitxterm
oder was auch immer), beschreiben Sie dies bitte hier
Zu Referenzzwecken lauten die Zeichencodes:
┌da ─c4 ┬c2 ┐bf
│b3 :3a │b3 │b3
├c3 ─c4 ┼c5 ┤b4
└c0 ─c4 ┴c1 ┘d9
Insgesamt: 12 verschiedene Charaktere.
javascript:$('pre').css('line-height','1em')
Antworten:
Python, 397 Zeichen
Wechseln Sie
C="...
zuC=u"...
und es wird stattdessen in Unicode gedruckt! Es kann schwierig sein, die Datei ordnungsgemäß zu speichern, da die Codepage 437 nicht mit einem Escapezeichen versehen ist (die erste Kommentarzeile für die Codierung ist erforderlich).Der Ansatz besteht darin, eine Karte inkrementell mit bitweisen Operatoren zu erstellen. Weniger Golf Version mit Kommentaren:
quelle
JavaScript ES6 (FF ≥ 31.0), 404 Zeichen
Ohne ES6:
w('0,0,15,10\n15,10,20,15\n10,13,15,15\n9,1,16,3\n17,5,20,7\n11,2,17,4\n15,4,19,6\n13,3,18,5');
gibt das Beispiel des OP korrekt aus.Die Kanten von Fenstern werden mit bitweisen Operatoren erstellt (Up = 8, Bottom = 4, Left = 2, Right = 1).
quelle
function w(s){...}
wirdw=(s)=>{...}
(und dies gilt auch für alle anderen Funktionsliterale). Und die Zeichensuchtabelle kann wahrscheinlich durch eine Zeichenfolge mit denselben Zeichen ersetzt werden.Array.fill()
mit "Desktop" initialisieren.[].fill([].fill(0,0,76),0,57)
, schade, dass es nicht funktioniert. Kann ich kürzer schreiben alsnew Array(57).fill(new Array(76).fill(0))
?new
Operatoren:Array(57).fill(Array(76).fill(0))
.Python, 672 Zeichen
Die weniger lesbare Version:
Ausgehend von der folgenden Version:
quelle