Gegeben seien zwei Listen , die keine doppelten Elemente enthalten a
und b
finden Sie den Crossover zwischen den beiden Listen und Ausgabe eines ASCII-Art Venn - Diagramm. Das Venn-Diagramm verwendet der Einfachheit halber eine quadratische Version der traditionellen Kreise.
Beispiel
Gegeben:
a = [1, 11, 'Fox', 'Bear', 333, 'Bee']
b = ['1', 333, 'Bee', 'SchwiftyFive', 4]
Ausgabe (Reihenfolge ist 100% beliebig, solange das Venn-Diagramm korrekt ist):
+-----+----+-------------+
|11 |333 |SchwiftyFive |
|Fox |Bee |4 |
|Bear |1 | |
+-----+----+-------------+
Das Programm kann entweder '1' == 1
oder '1' != 1
bis zu Ihrer Implementierung berücksichtigen . Sie können auch festlegen, dass alles nur als Zeichenfolgen behandelt wird und nur Zeichenfolgeneingaben akzeptiert werden.
Gegeben:
a=[]
b=[1,2,3]
Ausgabe (Beachten Sie, dass die beiden leeren Teile immer noch den Platz auf dem rechten Pad haben):
+-+-+--+
| | |1 |
| | |2 |
| | |3 |
+-+-+--+
Gegeben:
a=[1]
b=[1]
Ausgabe:
+-+--+-+
| |1 | |
+-+--+-+
Regeln
- Elemente des Venn-Diagramms sind linksbündig ausgerichtet und auf den Eintrag mit der maximalen Länge plus 1 aufgefüllt.
- Die Reihenfolge der Elemente innerhalb der Unterabschnitte des Venn-Diagramms ist beliebig.
- Ecken des Venn-Diagramms (wo sich
|
trifft-
) müssen durch a dargestellt werden+
. - Sie haben die Garantie, dass
a.join(b).length() > 0
Sie alles tun können, wenn beide leer sind.- Sie können sogar ein Bild von Abe Lincoln drucken, egal.
- Dies ist Code-Golf , ASCII-Kunst und Set-Theorie .
Bonus
Holzkohle rendert Boxen wie diese natürlich, aber der ganze Teil der Mengenlehre ... Ich weiß nicht, wie gut das funktioniert. +100 Kopfgeld für die kürzeste Einreichung von Holzkohle, bevor ich der Frage ein Kopfgeld hinzufügen kann (2 Tage nach der Beantwortung).
quelle
'1' == 1
Antworten:
Python 2 ,
221210212 BytesProbieren Sie es online aus!
quelle
PHP> = 7,1, 287 Bytes
Online Version
Erweitert
quelle
Holzkohle ,
1068987 Bytes:Probieren Sie es online aus! Beachten Sie, dass der Link zu Erklärungszwecken ausführlichen Code enthält, mit der
-sl
Option, die den entsprechenden nativen Kohlecode anzeigt. Übernimmt die Eingabe als durch Zeilenumbrüche getrennte Zeichenfolgen mit einer Leerzeile nach jedem Satz.Bearbeiten: 11 Bytes dank @ ASCII-only gespeichert. Die vorherige Version hatte tatsächlich einen Fehler, als das letzte Wort im ersten Satz nicht im zweiten Satz war und auch die erste Spalte die höchste war, was sich in einer offensichtlichen Unfähigkeit äußerte, ein temporäres zu optimieren. Durch die Optimierung von zwei Verschiebungsbefehlen wurden 2 Bytes gespeichert (der Deverbosifier führt dies jetzt automatisch aus, aber der resultierende Code war immer gültig, sodass die Antwort immer noch konkurriert).
Bearbeiten: Ich glaube nicht, dass es
Multiprint
früher mit mehrzeiliger Ausgabe gearbeitet hat, aber es funktioniert derzeit und wenn dies verwendet wird, würden 6 Bytes plus weitere 4 Bytes eingespart, da die aktuelle Charcoal dieu
Variable in die leere Liste vorinitialisiert : Probieren Sie es online aus!quelle
Multiprint
(P
)Map
existiert ebenfalls (sorry, wird so schnell wie möglich dokumentiert)Map
, es hat mir geholfen, die Antwort ein bisschen mehr zu optimieren. Schließlich denke ich, dass Sie mit Charcoal manchmal←
ohne ein verwenden können,M
das hier ein Byte spart, oder ist das ein Fehler?M
sind beabsichtigt (aber denken Sie immer an eine Richtung mit einer Variablen nach einem Richtungsdruck)Move
Deverbosifizierung zieht (es werden jetzt auch mehr nicht benötigte Trennzeichen entfernt, sodass Sie die Kommas wieder hinzufügen können, wenn Sie möchten)