{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "name": "demoDibujaLista.ipynb", "provenance": [], "collapsed_sections": [ "bSbNzegIgf-U", "_3cYDA9hhBE_" ] }, "kernelspec": { "name": "python3", "display_name": "Python 3" } }, "cells": [ { "cell_type": "code", "metadata": { "id": "gt5J9bMmUQLO" }, "source": [ "from listaVisual import *\n", "l = crearLista" ], "execution_count": 35, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "Gnko-H9Rgjrc" }, "source": [ "# Ejemplos basicos con lista de str" ] }, { "cell_type": "code", "metadata": { "id": "zGKkqfd8Uvyk", "colab": { "base_uri": "https://localhost:8080/", "height": 80 }, "outputId": "d6121917-ccd0-4119-c36c-5d0c9fc6ce4d" }, "source": [ "dibuja(listaVacia)" ], "execution_count": 18, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "" ], "image/svg+xml": "\n\n%3\n\n\n\nLista Vacia\n\nLista Vacia\n\n\n" }, "metadata": {}, "execution_count": 18 } ] }, { "cell_type": "code", "metadata": { "id": "YirYQuj-UwKR", "colab": { "base_uri": "https://localhost:8080/", "height": 80 }, "outputId": "af2e96fe-da08-45f4-98f8-158a7295f762" }, "source": [ "dibuja(l(\"one\",None))" ], "execution_count": 19, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "" ], "image/svg+xml": "\n\n%3\n\n\n\nlista(valor='one', siguiente=None)\n\none\n\n\n" }, "metadata": {}, "execution_count": 19 } ] }, { "cell_type": "code", "metadata": { "id": "Zt8Ly7jzVQ1h", "colab": { "base_uri": "https://localhost:8080/", "height": 175 }, "outputId": "c186e441-3e64-4c66-a30a-a2f50f7a1ac6" }, "source": [ "dibuja(l(\"one\",l(\"dva\",None)))" ], "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "" ], "image/svg+xml": "\n\n%3\n\n\n\nlista(valor='one', siguiente=lista(valor='dva', siguiente=None))\n\none\n\n\n\nlista(valor='dva', siguiente=None)\n\ndva\n\n\n\nlista(valor='one', siguiente=lista(valor='dva', siguiente=None))->lista(valor='dva', siguiente=None)\n\n\n\n\n" }, "metadata": { "tags": [] }, "execution_count": 28 } ] }, { "cell_type": "code", "metadata": { "id": "c9ohTzcIVxI9", "colab": { "base_uri": "https://localhost:8080/", "height": 271 }, "outputId": "317b5437-918f-4f07-c171-e544dddb4a47" }, "source": [ "lista = l(\"one\",l(\"dva\",l(\"trois\",None)))\n", "dibuja(lista)" ], "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "" ], "image/svg+xml": "\n\n%3\n\n\n\nlista(valor='one', siguiente=lista(valor='dva', siguiente=lista(valor='trois', siguiente=None)))\n\none\n\n\n\nlista(valor='dva', siguiente=lista(valor='trois', siguiente=None))\n\ndva\n\n\n\nlista(valor='one', siguiente=lista(valor='dva', siguiente=lista(valor='trois', siguiente=None)))->lista(valor='dva', siguiente=lista(valor='trois', siguiente=None))\n\n\n\n\n\nlista(valor='trois', siguiente=None)\n\ntrois\n\n\n\nlista(valor='dva', siguiente=lista(valor='trois', siguiente=None))->lista(valor='trois', siguiente=None)\n\n\n\n\n" }, "metadata": { "tags": [] }, "execution_count": 27 } ] }, { "cell_type": "code", "metadata": { "id": "QN3ICFsraLH4", "colab": { "base_uri": "https://localhost:8080/", "height": 463 }, "outputId": "d4c89f0a-1ff1-4d4a-c1a9-e17a5053597e" }, "source": [ "dibuja(lista,dibuja_puntero_inicial=True,dibuja_puntero_vacillo=True)" ], "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "" ], "image/svg+xml": "\n\n%3\n\n\n\nlista(valor='one', siguiente=lista(valor='dva', siguiente=lista(valor='trois', siguiente=None)))\n\none\n\n\n\nlista(valor='dva', siguiente=lista(valor='trois', siguiente=None))\n\ndva\n\n\n\nlista(valor='one', siguiente=lista(valor='dva', siguiente=lista(valor='trois', siguiente=None)))->lista(valor='dva', siguiente=lista(valor='trois', siguiente=None))\n\n\n\n\n\npuntero inicial\n\npuntero inicial\n\n\n\npuntero inicial->lista(valor='one', siguiente=lista(valor='dva', siguiente=lista(valor='trois', siguiente=None)))\n\n\n\n\n\nlista(valor='trois', siguiente=None)\n\ntrois\n\n\n\nlista(valor='dva', siguiente=lista(valor='trois', siguiente=None))->lista(valor='trois', siguiente=None)\n\n\n\n\n\nlista vacia\n\nlista vacia\n\n\n\nlista(valor='trois', siguiente=None)->lista vacia\n\n\n\n\n" }, "metadata": { "tags": [] }, "execution_count": 29 } ] }, { "cell_type": "markdown", "metadata": { "id": "bSbNzegIgf-U" }, "source": [ "# Con objetos simples que no son str" ] }, { "cell_type": "code", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 272 }, "id": "EjLgxCZ0cnvD", "outputId": "ca455ab1-de62-4a5c-c9a8-3ec854f7de4d" }, "source": [ "lista_de_numeros = l(1,l(2,l(3,None)))\n", "dibuja(lista_de_numeros)" ], "execution_count": 24, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "" ], "image/svg+xml": "\n\n%3\n\n\n\nlista(valor=1, siguiente=lista(valor=2, siguiente=lista(valor=3, siguiente=None)))\n\n1\n\n\n\nlista(valor=2, siguiente=lista(valor=3, siguiente=None))\n\n2\n\n\n\nlista(valor=1, siguiente=lista(valor=2, siguiente=lista(valor=3, siguiente=None)))->lista(valor=2, siguiente=lista(valor=3, siguiente=None))\n\n\n\n\n\nlista(valor=3, siguiente=None)\n\n3\n\n\n\nlista(valor=2, siguiente=lista(valor=3, siguiente=None))->lista(valor=3, siguiente=None)\n\n\n\n\n" }, "metadata": {}, "execution_count": 24 } ] }, { "cell_type": "markdown", "metadata": { "id": "_3cYDA9hhBE_" }, "source": [ "# Con objetos mas complejos que no definieron str" ] }, { "cell_type": "code", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 194 }, "id": "AmFJf_FPhFXv", "outputId": "e84c71d8-73f9-4ee4-95f8-90266b089c46" }, "source": [ "estructura.crear(\"record\", \"first_name last_name\")\n", "first_record = record(first_name=\"Jérémy\", last_name=\"Barbay\")\n", "second_record = record(first_name=\"Cynthia\", last_name=\"Vega\")\n", "lista_de_records = l(first_record,l(second_record,None))\n", "print(lista_de_records)\n", "dibuja(lista_de_records)" ], "execution_count": 43, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "lista(valor=record(first_name='Jérémy', last_name='Barbay'), siguiente=lista(valor=record(first_name='Cynthia', last_name='Vega'), siguiente=None))\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "" ], "image/svg+xml": "\n\n%3\n\n\n\nlista(valor=record(first_name='Jérémy', last_name='Barbay'), siguiente=lista(valor=record(first_name='Cynthia', last_name='Vega'), siguiente=None))\n\nrecord(first_name='Jérémy', last_name='Barbay')\n\n\n\nlista(valor=record(first_name='Cynthia', last_name='Vega'), siguiente=None)\n\nrecord(first_name='Cynthia', last_name='Vega')\n\n\n\nlista(valor=record(first_name='Jérémy', last_name='Barbay'), siguiente=lista(valor=record(first_name='Cynthia', last_name='Vega'), siguiente=None))->lista(valor=record(first_name='Cynthia', last_name='Vega'), siguiente=None)\n\n\n\n\n" }, "metadata": {}, "execution_count": 43 } ] }, { "cell_type": "markdown", "metadata": { "id": "gNAEpvfQhqWA" }, "source": [ "# Con objetos mas complejos que definieron str" ] }, { "cell_type": "code", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 194 }, "id": "hq3qQuHKhtjV", "outputId": "8c148cf0-8502-42e2-8990-5a61443a1cfb" }, "source": [ "class record:\n", " def __init__(self, parameter_first_name, parameter_last_name):\n", " self.first_name = parameter_first_name\n", " self.last_name = parameter_last_name\n", " def __str__(self):\n", " return \"(\"+str(self.first_name)+\", \"+str(self.last_name)+\")\"\n", "\n", "first_record = record(parameter_first_name=\"Jérémy\", parameter_last_name=\"Barbay\")\n", "second_record = record(parameter_first_name=\"Cynthia\", parameter_last_name=\"Vega\")\n", "lista_de_records = l(first_record,l(second_record,None))\n", "print(lista_de_records)\n", "dibuja(lista_de_records,dibuja_puntero_inicial=True,dibuja_puntero_vacillo=True)" ], "execution_count": 56, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "lista(valor=<__main__.record object at 0x7f0fd18d4450>, siguiente=lista(valor=<__main__.record object at 0x7f0fd18d42d0>, siguiente=None))\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "" ], "image/svg+xml": "\n\n%3\n\n\n\nlista(valor=<__main__.record object at 0x7f0fd18d4450>, siguiente=lista(valor=<__main__.record object at 0x7f0fd18d42d0>, siguiente=None))\n\n(Jérémy, Barbay)\n\n\n\npuntero inicial\n\npuntero inicial\n\n\n\npuntero inicial->lista(valor=<__main__.record object at 0x7f0fd18d4450>, siguiente=lista(valor=<__main__.record object at 0x7f0fd18d42d0>, siguiente=None))\n\n\n\n\n\nlista(valor=<__main__.record object at 0x7f0fd18d42d0>, siguiente=None)\n\n(Cynthia, Vega)\n\n\n\nlista(valor=<__main__.record object at 0x7f0fd18d42d0>, siguiente=None)->lista(valor=<__main__.record object at 0x7f0fd18d4450>, siguiente=lista(valor=<__main__.record object at 0x7f0fd18d42d0>, siguiente=None))\n\n\n\n\n\nlista vacia\n\nlista vacia\n\n\n\nlista(valor=<__main__.record object at 0x7f0fd18d42d0>, siguiente=None)->lista vacia\n\n\n\n\n" }, "metadata": {}, "execution_count": 56 } ] }, { "cell_type": "markdown", "metadata": { "id": "OUOVTjYTkNAd" }, "source": [ "# El codigo que agrega el modulo listaVisual a lista (por si le quieren ver y optimizar directamento aqui)" ] }, { "cell_type": "code", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 752 }, "id": "QVyvY2iIgzG0", "outputId": "480c7b83-5d18-4d1f-d01d-09277935755f" }, "source": [ "def dibuja(lista, dibuja_puntero_vacillo = False, dibuja_puntero_inicial = False):\n", " \"\"\"Dibuja una lista en svg.\n", " Si `dibuja_puntero_inicial` esta True, dibuja un nodo con el puntero inicial.\n", " Si `dibuja_puntero_vacillo` esta True, dibuja un nodo \"lista vacilla\" al final de la lista.\n", "\n", " Jérémy 'Le JyBy' Barbay, jeremy@barbay.cl\n", " \"\"\"\n", " display = graphviz.Digraph()\n", " display.format = 'svg'\n", " if vacia(lista):\n", " display.node(\"Lista Vacia\")\n", " else:\n", " display.node(name=repr(lista), label=str(cabeza(lista)))\n", " if dibuja_puntero_inicial:\n", " display.node(\"puntero inicial\")\n", " display.edge(\"puntero inicial\",repr(lista))\n", " while not vacia(cola(lista)):\n", " display.node(name=repr(cola(lista)), label=str(cabeza(cola(lista))))\n", " display.edge(tail_name = repr(lista),head_name = repr(cola(lista)))\n", " lista = cola(lista)\n", " if dibuja_puntero_vacillo:\n", " display.node(\"lista vacia\")\n", " display.edge(repr(lista),\"lista vacia\")\n", " svg = display.pipe().decode('utf-8')\n", " return SVG(svg)\n", "\n", "\n", "dibuja(l(1,l(\"deux\",l(\"tres\",l(\"tchetirie\",l(\"five\",l((6,7,8),None)))))),dibuja_puntero_inicial=True,dibuja_puntero_vacillo=True)" ], "execution_count": 63, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "" ], "image/svg+xml": "\n\n%3\n\n\n\nlista(valor=1, siguiente=lista(valor='deux', siguiente=lista(valor='tres', siguiente=lista(valor='tchetirie', siguiente=lista(valor='five', siguiente=lista(valor=(6, 7, 8), siguiente=None))))))\n\n1\n\n\n\nlista(valor='deux', siguiente=lista(valor='tres', siguiente=lista(valor='tchetirie', siguiente=lista(valor='five', siguiente=lista(valor=(6, 7, 8), siguiente=None)))))\n\ndeux\n\n\n\nlista(valor=1, siguiente=lista(valor='deux', siguiente=lista(valor='tres', siguiente=lista(valor='tchetirie', siguiente=lista(valor='five', siguiente=lista(valor=(6, 7, 8), siguiente=None))))))->lista(valor='deux', siguiente=lista(valor='tres', siguiente=lista(valor='tchetirie', siguiente=lista(valor='five', siguiente=lista(valor=(6, 7, 8), siguiente=None)))))\n\n\n\n\n\npuntero inicial\n\npuntero inicial\n\n\n\npuntero inicial->lista(valor=1, siguiente=lista(valor='deux', siguiente=lista(valor='tres', siguiente=lista(valor='tchetirie', siguiente=lista(valor='five', siguiente=lista(valor=(6, 7, 8), siguiente=None))))))\n\n\n\n\n\nlista(valor='tres', siguiente=lista(valor='tchetirie', siguiente=lista(valor='five', siguiente=lista(valor=(6, 7, 8), siguiente=None))))\n\ntres\n\n\n\nlista(valor='deux', siguiente=lista(valor='tres', siguiente=lista(valor='tchetirie', siguiente=lista(valor='five', siguiente=lista(valor=(6, 7, 8), siguiente=None)))))->lista(valor='tres', siguiente=lista(valor='tchetirie', siguiente=lista(valor='five', siguiente=lista(valor=(6, 7, 8), siguiente=None))))\n\n\n\n\n\nlista(valor='tchetirie', siguiente=lista(valor='five', siguiente=lista(valor=(6, 7, 8), siguiente=None)))\n\ntchetirie\n\n\n\nlista(valor='tres', siguiente=lista(valor='tchetirie', siguiente=lista(valor='five', siguiente=lista(valor=(6, 7, 8), siguiente=None))))->lista(valor='tchetirie', siguiente=lista(valor='five', siguiente=lista(valor=(6, 7, 8), siguiente=None)))\n\n\n\n\n\nlista(valor='five', siguiente=lista(valor=(6, 7, 8), siguiente=None))\n\nfive\n\n\n\nlista(valor='tchetirie', siguiente=lista(valor='five', siguiente=lista(valor=(6, 7, 8), siguiente=None)))->lista(valor='five', siguiente=lista(valor=(6, 7, 8), siguiente=None))\n\n\n\n\n\nlista(valor=(6, 7, 8), siguiente=None)\n\n(6, 7, 8)\n\n\n\nlista(valor='five', siguiente=lista(valor=(6, 7, 8), siguiente=None))->lista(valor=(6, 7, 8), siguiente=None)\n\n\n\n\n\nlista vacia\n\nlista vacia\n\n\n\nlista(valor=(6, 7, 8), siguiente=None)->lista vacia\n\n\n\n\n" }, "metadata": {}, "execution_count": 63 } ] }, { "cell_type": "code", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "3K-f4SjsmPUZ", "outputId": "83d53568-b432-44e2-89ab-04c007bca299" }, "source": [ "display = graphviz.Digraph()\n", "display.format = 'svg'\n", "help(display.node)" ], "execution_count": 48, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Help on method node in module graphviz.dot:\n", "\n", "node(name, label=None, _attributes=None, **attrs) method of graphviz.dot.Digraph instance\n", " Create a node.\n", " \n", " Args:\n", " name: Unique identifier for the node inside the source.\n", " label: Caption to be displayed (defaults to the node ``name``).\n", " attrs: Any additional node attributes (must be strings).\n", "\n" ] } ] }, { "cell_type": "code", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "rENBCgeumdAw", "outputId": "10da3287-c39f-4b6f-d75b-efef94668151" }, "source": [ "help(display.edge)" ], "execution_count": 52, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Help on method edge in module graphviz.dot:\n", "\n", "edge(tail_name, head_name, label=None, _attributes=None, **attrs) method of graphviz.dot.Digraph instance\n", " Create an edge between two nodes.\n", " \n", " Args:\n", " tail_name: Start node identifier.\n", " head_name: End node identifier.\n", " label: Caption to be displayed near the edge.\n", " attrs: Any additional edge attributes (must be strings).\n", "\n" ] } ] } ] }