Dadas dos listas que no contienen elementos duplicados a
y b
, encontrar el cruce entre las dos listas y generar un Diagrama de Venn ASCII-Art. El diagrama de Venn utilizará una versión cuadriculada de los círculos tradicionales para simplificar.
Ejemplo
Dado:
a = [1, 11, 'Fox', 'Bear', 333, 'Bee']
b = ['1', 333, 'Bee', 'SchwiftyFive', 4]
Salida (el orden es 100% arbitrario, siempre que el diagrama de Venn sea correcto):
+-----+----+-------------+
|11 |333 |SchwiftyFive |
|Fox |Bee |4 |
|Bear |1 | |
+-----+----+-------------+
El programa puede considerar '1' == 1
o '1' != 1
, hasta su implementación. También puede optar por manejar todo como cadenas y solo aceptar la entrada de cadena.
Dado:
a=[]
b=[1,2,3]
Salida (observe cómo las dos partes vacías todavía tienen el espacio de la plataforma derecha):
+-+-+--+
| | |1 |
| | |2 |
| | |3 |
+-+-+--+
Dado:
a=[1]
b=[1]
Salida:
+-+--+-+
| |1 | |
+-+--+-+
Reglas
- Los elementos del diagrama de Venn se alinean a la izquierda y se rellenan hasta la entrada de longitud máxima más 1.
- El orden de los elementos dentro de las subsecciones del diagrama de Venn es arbitrario.
- Las esquinas del diagrama de Venn (donde se
|
encuentra-
) deben estar representadas por a+
. - Está garantizado que
a.join(b).length() > 0
, si ambos están vacíos, puede hacer lo que sea.- Incluso puede imprimir una foto de Abe Lincoln, no me importa.
- Esto es código golf , arte ascii y teoría de conjuntos .
Prima
El carbón de leña produce cuadros como este naturalmente, pero toda la parte de la teoría del conjunto ... No sé qué tan bien lo hace. +100 de recompensa por el envío de carbón más corto antes de que pueda agregar una recompensa a la pregunta (2 días después de que se me pregunte).
fuente
'1' == 1
es demasiadoRespuestas:
Python 2 ,
221210212 bytesPruébalo en línea!
fuente
PHP> = 7.1, 287 bytes
Versión en línea
Expandido
fuente
Carbón ,
1068987 bytes:Pruébalo en línea! Tenga en cuenta que el enlace es un código detallado con fines explicativos, con la
-sl
opción que muestra el código de carbón nativo equivalente. Toma la entrada como cadenas separadas por una nueva línea con una línea en blanco después de cada conjunto.Editar: Guardado 11 bytes gracias a @ ASCII-only. La versión anterior en realidad tenía un error cuando la última palabra en el primer conjunto no estaba en el segundo conjunto y también la primera columna era la más alta, lo que se manifestaba como una incapacidad aparente para optimizar un temporal. Ahorré 2 bytes al optimizar dos comandos Move (el desverbosificador ahora lo hace automáticamente, pero el código resultante siempre fue válido, por lo que la respuesta sigue compitiendo).
Editar: No creo que
Multiprint
solía funcionar con salida multilínea, pero lo hace actualmente y usar eso ahorraría 6 bytes, más otros 4 bytes porque el carbón de leña actual preinicializa lau
variable en la lista vacía: ¡ Pruébelo en línea!fuente
Multiprint
(P
)Map
existe (lo siento, se documentará lo antes posible)Map
ayudarme a optimizar la respuesta un poco más. Finalmente, creo que Charcoal a veces te permite usarlo←
sin unM
que ahorre un byte aquí, ¿o es un error?M
son intencionales (pero siempre recordar una dirección con una variable después es una impresión direccional)Move
logre una mejor desverbosificación (ahora también elimina más separadores innecesarios para que pueda volver a agregar las comas si lo desea)