Aprende Java fácil. Capítulo 15. Burlar el sistema de contadores de tiempo

Capítulo 15. Burlar el sistema de contadores de tiempo

Capítulo 15. Burlar el sistema de contadores de tiempo

El pasillo que da a la salida de la prisión es el más vigilado. Podrías pensar que es por miedo a que los presos escapen por ahí, pero no es así. Lo que ocurre es que todo el mundo entra y sale por el mismo lugar. Tanto visitas como funcionarios y presos siguen siempre el mismo camino.

Cada vez que alguien accede a la cárcel, se le hace un cacheo y las imágenes quedan grabadas. Además, hay que pasar por tres puntos de registro, divididos en varias estancias. En cada parada hay un guardia que no deja su puesto hasta que llega un relevo.

Bud cree que, como mucho, habrá dos personas. Incluso es posible que en algún momento necesiten realizar alguna tarea durante su turno y haya un corto período de tiempo en el que podamos estar solos.

El plan es identificar, medir y analizar las actividades de los carceleros para saber exactamente a qué hora debemos intentar la huida. Para ello, lo primero será analizar cuándo se abren y cierran las puertas. De esa forma, podremos identificar cuándo hay movimiento. Crearemos un programa que calcule el tiempo de inactividad de la puerta que conduce a la sala de espera. La puerta que da a las celdas podemos controlarla visualmente, y por la puerta de la calle no hay que preocuparse, ya que nadie la usa durante la noche.

Tenemos una pequeña ventaja: con una de las claves conseguidas en el despacho de Vicente, Pedro ha logrado acceder a los siete registros de actividades de la puerta de la semana pasada, uno para cada día. Con esto, ya podemos hacernos una idea de qué día es el más tranquilo y las horas en las que los vigilantes entran y salen. Lo primero será determinar qué día escogemos. Para ello, necesitamos crear un programa que lea los períodos de actividad de las puertas y los sume. Elegiremos el día para escapar que tenga el menor tiempo total de actividad.

El archivo divide el día en minutos, y en cada línea nos informa de cuántos segundos estuvo activa la puerta en ese minuto. Para que te hagas una idea, tiene este formato:

0
0
0
0
60
60
12
0
0

Ejercicio 1. Registrar el Tiempo de actividad. Necesitamos registrar el tiempo de actividad de las puertas para elegir un día para nuestro escape. Para ello necesitamos escribir un programa que lea el tiempo de inactividad de un archivo y registre el total de tiempo de inactividad en otro archivo.

Instrucciones:

  1. Utilizamos el archivo actividad.txt conseguido por Pedro, con tiempos de actividad en segundos (uno por línea).
  2. Lee los tiempos de actividad del archivo.
  3. Calcula el tiempo total de inactividad.
  4. Escribe el tiempo total de inactividad en un archivo total_actividad.txt

Solución:

import java.io.*;

public class Main {
    public static void main(String[] args) {
        String archivoEntrada = "actividad.txt";
        String archivoSalida = "total_actividad.txt";

        try (BufferedReader br = new BufferedReader(new FileReader(archivoEntrada));
             BufferedWriter bw = new BufferedWriter(new FileWriter(archivoSalida))) {

            String linea;
            int totalActividad = 0;

            while ((linea = br.readLine()) != null) {
                totalActividad += Integer.parseInt(linea);
            }

            bw.write("Total tiempo de actividad: " + totalActividad + " segundos");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

El lunes es el día con menor actividad, así que ya sabemos cuándo debemos emprender la huida. Según el registro, desde el minuto 1322 hasta el 1438, es decir, desde las 22:02 hasta las 23:58, la puerta está inactiva. Luego, aproximadamente vuelve a activarse a las 2:00 y, posteriormente, cada hora hasta las 6:00, cuando se abre la puerta principal y se llena de policías. En cada ocasión, las puertas están activas y abiertas por menos de dos minutos.

Una vez que sabemos a qué horas se abren las puertas, necesitamos determinar si se abrieron para dejar entrar a alguien o quizás para que alguien saliera. Los funcionarios deben realizar una serie de tareas durante su guardia. Pedro ha conseguido acceso al registro de estas tareas nocturnas y las veces que los guardias las anotan como realizadas. Necesitamos crear un pequeño programa que registre esas actividades y las devuelva en un formato de texto. Sabemos que sus actividades principales son: patrullaje regular, inspección y mantenimiento, y limpieza y desinfección.

El archivo de registro luce así:

"iRKJi2KpMW", "ixpFHX0v8s", "rMxNXbeUxC", "bjO9IUsFGc", "LpTB2ffO8w", "S4WwZffjqB", "HuuSb3RH6l", "O8OmH1ApJx", "LpFKbFT7hU", "TZ9BmcroA7", "dyLWJCvbU6", "qNlWgK2wzD", "s6vEOgmfsY", "ccDtnysyec", "waITKPmWbY", "HH9N0Ufih4", "cGIet9lE4y", "MCwCJ6LNQP", "OfecGXWhqY", "SOd3Tco6mI", "r8QwQDbHyp", "4V6bJhJ20x", "nzkiWhmxVj", "0tT2nDToVa", "67NEMfhs2x", "W3HXrDI7SJ", "KgGoiFJfMN", "2WK7UZVmgX", "3KNx0fDu54", "Rn20v6baaz", "t8jChEgFSz", "489dXWEFi6", "oNSsEfNwaP", "V4zx2r6XR8", "2dPXcKbZNQ", "WpsxQvEbVw", "7f6floF3VU", "W1joPNEiK1", "pXpGUMRsZq", "1M1jDBpiGu", "xjZBVieX1Q", "y3dVBuhTrJ", "s0YB6CVSFV", "vZQgDge2HJ", "EsWhUsnhLa", "hevhsUt0ux", "bYwU4Qy6Gl", "sCW32VXSfD", "mwCdwQ809e", "zyRwiYkfDk", "ko4o26MErP", "Lk1rspAJQK", "d5Y9IPuMk5", "yKj992kdnn", "Q1XsuVqUGr", "fHMDmXiAcp", "dql0nmQJcm", "qRqSHARwSA", "CgV8ne6fRG", "30DYrnKWoA", "r1QrdR0es2", "HXTV8XvYoP", "GQAWwyhMSL", "4yMmh7e5NW", "yT2kIJvDqN", "AbIqpbKj5h", "haAriF42gR", "O6MciwEwQ4", "hW8Pf9IkX7", "kUaN7Cnv96", "tAROxtCUiP", "aZEZynwwpj", "cqzR5Y3Ipi", "M69Qr3BWJj", "ySTegpfDxw", "f47AKb3Bsn", "XOsmCGvcSo", "wA7iC3Fq1k", "NqTC2OpWGr", "IvvkjHR0Q2", "JyT5lu4QPo", "2whhr0ixDg", "xcYX1ELvDi", "zTS8EJE0hh", "7gYXpaaPIs", "UiZ8tMlvfl", "uuSBzI6IfZ", "BdcQ3ci06N", "VNrQV6uZvU", "gZILASO2gT", "iOIRRKFxhc", "jkSGZFtIpw", "2gkQKh6J8L", "jnTyMxcG8I", "X07Mj6M0Rj", "SqjfH3cyLO", "GfKiA3DZ4w", "RBIquXXt0k", "udPC3Q0PXo", "CM44vkuwyT", "20n5Uwv6s8", "5ST85ixStb", "uliTvpFukE", "ErQPLyDuRw", "XX5eaAXr1a", "nLenQQgqoP", "ThjBwzns36", "8RghH8Vneq", "FWFaHu0c2a", "HqGai14Ao6", "nFEi87Bafj", "rotkzVlY3k", "Tah5BZU49N", "YILUBnOTTh", "kyhPp7TWZp", "q1kiVAMsHv", "OvKuo3mvSX", "htDbhBg7vs", "O8ZBRQB5cO", "TlUDfrzdUi", "7yIIltvZSI", "HkAkB7qO3c", "j4DvSZL3Ry", "ONmRHuWdGc", "a7LmXNTfap", "MlHEWHZhrz", "ADKHiZeBAS", "0KQ6aXlsZY", "OKMfZsps6e", "vJpOxdfzEd", "BKs9UTKTQJ", "DBNrFCM5d7", "hse8XLelZK", "3jz3bLreNc", "ZZSHQ35FpT", "jOmaC6iMOW", "iXvhHmq2pn", "gqnfV11and", "DDfLkv3uBg", "UQjsb1ixF0", "08zSNrhvxs", "LSWyFeFyYv", "Patrullaje regular", "4Bpd1idsum", "vCgKs8GFTI", "uhUIpi1VLd", "AQn63M3ANF", "Y39NIKxIgJ", "YcpNNmT3GX", "C8Di70GqS7", "Ybg4P3BOij", "6Tb4opfNeC", "aTmzLU9opz", "QSHg6ZRmyH", "lVUz2kHAOn", "Inspección y mantenimiento", "wUxaxSm9lC", "DVTb4JEZQ9", "sjahqvnVsk", "TfvPongU7w", "gQ6g0rJ7ax", "bejbKLd6ZR", "SMj8MjDEWY", "fanVKMvsmZ", "Patrullaje regular", "gmqX2oBxvm", "Mb9B4SHLvM", "64rh8hh6Li", "SjalZaHsOA", "yxDLOhr4Od", "qfN1GbZNFA", "C4q5ridJ7I", "aQLm7SJeEo", "LNDWA1UHzG", "QpYvFfSY6S", "I7ySXRZkQH", "WwtkFmM7pP", "gl794m6lyl", "6fvgHjprUx", "SVlNByrKBN", "DNEmWPvl51", "Mm6NxxNkdF", "gyLw8TP8kH", "vcqjXfWTYz", "bpuMR5EVFB", "sMMP5HpxJg", "9hU32sjepp", "RsYnv80Hx2", "SilPvzI3gD", "L7pspbXgSw", "RvAtxqkYF2", "9gOPHDbw31", "uUDPlKRjU3", "NkPKW7zkZK", "dBOiqar26k", "GXPsNzuULq", "KwwpvvPqQ2", "Tif0qfs2eq", "3xTc242fPW", "c5jJz3DVrV", "zrK0VW0AQH", "zPJt2lGxKU", "C3ssWKqU5s", "XsfI0o5asg", "QiR4pDd4N0", "q4iY9xGn3V", "msQISGxfMJ", "yRyD1ec8fb", "dBfcrywOUD", "O9cMzNXF5t", "lNuV5TSkbO", "YEgbviK7AV", "HKrrLQBtt2", "ZU0hqtXuNa"

Ejercicio 2. Generar un Log de Actividades. Bud necesita generar un log de actividades para analizar el comportamiento de los carceleros. Escribe un programa que registre las diferentes actividades del sistema en un archivo.

Instrucciones:

  1. Crea un array con diferentes actividades («Patrullaje regular», «Inspección y mantenimiento», » Limpieza y desinfección»).
  2. Escribe estas actividades en un archivo log_actividades.txt, una por línea.

Solución:

import java.io.*;

public class Main {
    public static void main(String[] args) {

        String[] actividades = {
            "iRKJi2KpMW", "ixpFHX0v8s", "rMxNXbeUxC", "bjO9IUsFGc", "LpTB2ffO8w", "S4WwZffjqB", "HuuSb3RH6l", "O8OmH1ApJx", "LpFKbFT7hU",
            "TZ9BmcroA7", "dyLWJCvbU6", "qNlWgK2wzD", "s6vEOgmfsY", "ccDtnysyec", "waITKPmWbY", "HH9N0Ufih4", "cGIet9lE4y", "MCwCJ6LNQP", "OfecGXWhqY",
            "SOd3Tco6mI", "r8QwQDbHyp", "4V6bJhJ20x", "nzkiWhmxVj", "0tT2nDToVa", "67NEMfhs2x", "W3HXrDI7SJ", "KgGoiFJfMN", "2WK7UZVmgX", "3KNx0fDu54",
            "Rn20v6baaz", "t8jChEgFSz", "489dXWEFi6", "oNSsEfNwaP", "V4zx2r6XR8", "2dPXcKbZNQ", "WpsxQvEbVw", "7f6floF3VU", "W1joPNEiK1", "pXpGUMRsZq",
            "1M1jDBpiGu", "xjZBVieX1Q", "y3dVBuhTrJ", "s0YB6CVSFV", "vZQgDge2HJ", "EsWhUsnhLa", "hevhsUt0ux", "bYwU4Qy6Gl", "sCW32VXSfD", "mwCdwQ809e",
            "zyRwiYkfDk", "ko4o26MErP", "Lk1rspAJQK", "d5Y9IPuMk5", "yKj992kdnn", "Q1XsuVqUGr", "fHMDmXiAcp", "dql0nmQJcm", "qRqSHARwSA", "CgV8ne6fRG",
            "30DYrnKWoA", "r1QrdR0es2", "HXTV8XvYoP", "GQAWwyhMSL", "4yMmh7e5NW", "yT2kIJvDqN", "AbIqpbKj5h", "haAriF42gR", "O6MciwEwQ4", "hW8Pf9IkX7",
            "kUaN7Cnv96", "tAROxtCUiP", "aZEZynwwpj", "cqzR5Y3Ipi", "M69Qr3BWJj", "ySTegpfDxw", "f47AKb3Bsn", "XOsmCGvcSo", "wA7iC3Fq1k", "NqTC2OpWGr",
            "IvvkjHR0Q2", "JyT5lu4QPo", "2whhr0ixDg", "xcYX1ELvDi", "zTS8EJE0hh", "7gYXpaaPIs", "UiZ8tMlvfl", "uuSBzI6IfZ", "BdcQ3ci06N", "VNrQV6uZvU",
            "gZILASO2gT", "iOIRRKFxhc", "jkSGZFtIpw", "2gkQKh6J8L", "jnTyMxcG8I", "X07Mj6M0Rj", "SqjfH3cyLO", "GfKiA3DZ4w", "RBIquXXt0k", "udPC3Q0PXo",
            "CM44vkuwyT", "20n5Uwv6s8", "5ST85ixStb", "uliTvpFukE", "ErQPLyDuRw", "XX5eaAXr1a", "nLenQQgqoP", "ThjBwzns36", "8RghH8Vneq", "FWFaHu0c2a",
            "HqGai14Ao6", "nFEi87Bafj", "rotkzVlY3k", "Tah5BZU49N", "YILUBnOTTh", "kyhPp7TWZp", "q1kiVAMsHv", "OvKuo3mvSX", "htDbhBg7vs", "O8ZBRQB5cO",
            "TlUDfrzdUi", "7yIIltvZSI", "HkAkB7qO3c", "j4DvSZL3Ry", "ONmRHuWdGc", "a7LmXNTfap", "MlHEWHZhrz", "ADKHiZeBAS", "0KQ6aXlsZY", "OKMfZsps6e",
            "vJpOxdfzEd", "BKs9UTKTQJ", "DBNrFCM5d7", "hse8XLelZK", "3jz3bLreNc", "ZZSHQ35FpT", "jOmaC6iMOW", "iXvhHmq2pn", "gqnfV11and", "DDfLkv3uBg",
            "UQjsb1ixF0", "08zSNrhvxs", "LSWyFeFyYv", "Patrullaje regular", "4Bpd1idsum", "vCgKs8GFTI", "uhUIpi1VLd", "AQn63M3ANF", "Y39NIKxIgJ",
            "YcpNNmT3GX", "C8Di70GqS7", "Ybg4P3BOij", "6Tb4opfNeC", "aTmzLU9opz", "QSHg6ZRmyH", "lVUz2kHAOn", "Inspección y mantenimiento", "wUxaxSm9lC",
            "DVTb4JEZQ9", "sjahqvnVsk", "TfvPongU7w", "gQ6g0rJ7ax", "bejbKLd6ZR", "SMj8MjDEWY", "fanVKMvsmZ", "Patrullaje regular", "gmqX2oBxvm",
            "Mb9B4SHLvM", "64rh8hh6Li", "SjalZaHsOA", "yxDLOhr4Od", "qfN1GbZNFA", "C4q5ridJ7I", "aQLm7SJeEo", "LNDWA1UHzG", "QpYvFfSY6S", "I7ySXRZkQH",
            "WwtkFmM7pP", "gl794m6lyl", "6fvgHjprUx", "SVlNByrKBN", "DNEmWPvl51", "Mm6NxxNkdF", "gyLw8TP8kH", "vcqjXfWTYz", "bpuMR5EVFB", "sMMP5HpxJg",
            "9hU32sjepp", "RsYnv80Hx2", "SilPvzI3gD", "L7pspbXgSw", "RvAtxqkYF2", "9gOPHDbw31", "uUDPlKRjU3", "NkPKW7zkZK", "dBOiqar26k", "GXPsNzuULq", "KwwpvvPqQ2", "Tif0qfs2eq",
            "3xTc242fPW", "c5jJz3DVrV", "zrK0VW0AQH", "zPJt2lGxKU", "C3ssWKqU5s", "XsfI0o5asg", "QiR4pDd4N0", "q4iY9xGn3V", "msQISGxfMJ", "yRyD1ec8fb", "dBfcrywOUD", "O9cMzNXF5t", "lNuV5TSkbO", "YEgbviK7AV", "HKrrLQBtt2", "ZU0hqtXuNa"
        };

        String archivoSalida = "log_actividades.txt";

        try (BufferedWriter bw = new BufferedWriter(new FileWriter(archivoSalida))) {
            for (String actividad : actividades) {
                bw.write(actividad);
                bw.newLine();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Ejercicio 3. Necesitamos analizar el log de actividades para identificar patrones repetitivos durante la noche. Si alguno de ellos no se repite durante la noche que pretendemos escapar, significa que puede que el pasillo esté vacío.

Instrucciones:

  1. Lee el archivo log_actividades.txt.
  2. Cuenta la cantidad de veces que cada actividad ocurre.
  3. Escribe los resultados en un archivo resumen_actividades.txt.

Solución:

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) {

        String archivoEntrada = "log_actividades.txt";
        String archivoSalida = "resumen_actividades.txt";

        Map<String, Integer> contadorActividades = new HashMap<>();

        try (
            BufferedReader br = new BufferedReader(new FileReader(archivoEntrada));
            BufferedWriter bw = new BufferedWriter(new FileWriter(archivoSalida))
        ) {
            String linea;

            while ((linea = br.readLine()) != null) {
                contadorActividades.put(linea, contadorActividades.getOrDefault(linea, 0) + 1);
            }

            for (Map.Entry<String, Integer> entry : contadorActividades.entrySet()) {
                bw.write(entry.getKey() + ": " + entry.getValue());
                bw.newLine();
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Ejercicio 4. Actualizar el registro de Actividades. Necesitamos actualizar el log de actividades en tiempo real para reflejar cambios en el sistema. Escribe un programa que agregue nuevas actividades al archivo de log de actividades.

Instrucciones:

  1. Usa un array para simular nuevas actividades que se agregan al sistema: «Monitoreo de cámaras», «Comunicación con el puesto de control».
  2. Agrega estas actividades al final del archivo log_actividades.txt.

Solución:

import java.io.*;

public class Main {
    public static void main(String[] args) {

        String[] nuevasActividades = {
            "6UX5w1vjQJ", "KAB1GksspV", "ziuAVNowpG", "uG0BEclHuq", "0xgydgyaK7", "IkSjUcqTbg", "7ZzjJYTCID",
            "7oGiZxDCIP", "9BRePDOokd", "SLR5QqI1gm", "dzHGx84mQH", "tTP235qyws", "Fk7qbJXHUN", "b82VQ4j1R5",
            "B2I4iZ096c", "yI6ntrP2cz", "y4rC1OQMJg", "WIjc2dUrde", "OYukZtwS1L", "qkwGHmjPao", "HycTVJeLB4",
            "ZaUckOVqbT", "qODG1FAhVE", "erLTxdRe61", "qZ1NgPNFt9", "bUifZB8w4s", "Monitoreo de cámaras",
            "zCrzN1ZDUg", "gzCzIGm23u", "cDFm0hkrFw", "IDI0VBjizw", "klhN9ZnUyu", "GuscO6H64v", "DJrhWpPTqr",
            "zM3MWg5rSj", "DMYzD7vkHF", "BNghDoM55o", "yr89K38y7l", "H2qEcM6elW", "iw6OVfFJDh", "yj16xbky6M",
            "lFcJ6bQs54", "CNSJhoARCw", "jOxs8ry2fx", "INZj1DoLqA", "GSEGuaChrR", "jrE68aipWX", "h8doJ65vcr",
            "2EoBD02CKL", "C1av3xn5eG", "R8w7lp6uKQ", "sr1E5Nf6cz", "6C5Eff5czg", "WHVPxvyciZ", "KlO6H5Vduk",
            "x6NIpTkJBK", "3YvHL9eQQ0", "qYYtIPWjpv", "UZKlgaZ4TD", "msiexEsxj9", "RzoCEriGyZ", "vLuY3gwLJO",
            "d45CH4k7cs", "rGdyVlst2Q", "3XRVIfo9mc", "eWUlCZ8UOo", "Monitoreo de cámaras", "ic7SdX8di8",
            "C4qAoBxA3D", "Comunicación con el puesto de control", "VBxKrQngfS", "fICz9PFnDX", "dk2ncCGc8x",
            "QG1MBYgT9i", "HAJkKvCVwT", "gYoMT0TLOu", "vaNsJoXLnd", "TpBnt4Ieav", "TduiTd43zP", "Qm2zhvHZXB",
            "n7BOCacWYA", "VY4N9FrFPB", "TACDi2dNQY", "VW4PHE8ZDb", "SDYMTOCNJc", "Jnt9v9dgKy", "pY0yYILavE",
            "G9ERpaXMNl", "qDkqFSu4Sr", "O3VyiIOh6E", "5qB9sTCmKH", "g5MyR0lXeu", "egzksA1lg2", "h6uLmm8tbp",
            "Fx7ay5mNkD", "neDWml2spW", "IwkPB704pi", "7WqwiNEBrv", "9ed11mNwh7", "kf3qNbMBkS", "MYFOZ3hHC8",
            "t4I0RK0M8O", "tkvxwGzdjg", "8YsZ8xVw0m", "EdFd9zOWF5", "Te6y3Oa5XP", "9sg2XIQxbQ", "kJhouzOXkS",
            "128laUqDWt", "nJDSEaneBg", "2rGSBCuzTd", "a5GbJeDTDh", "WVvQGSEkjL", "Q26giaMbeM", "ArdXbDImAh",
            "Ll3nyJ5PRS", "WjZL4th5V5", "fTtNnPheOS", "73rwDzESwL", "8eXQ7OW9gv", "SMgcsFvILx", "wRKnDVc55v",
            "UWC1QxcVZc"
        };

        String archivoSalida = "log_actividades.txt";

        try (BufferedWriter bw = new BufferedWriter(new FileWriter(archivoSalida, true))) {
            for (String actividad : nuevasActividades) {
                bw.write(actividad);
                bw.newLine();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Ejercicio 5. Manipular Tiempos de actividad de las puertas. Escribe un programa que lea los tiempos de actividad y les asigne de un archivo y los modifique.

Instrucciones:

  1. Crea un archivo tiempos_registro.txt con tiempos de registro en milisegundos (uno por línea).
  2. Lee los tiempos de registro del archivo.
  3. Incrementa cada tiempo en una cantidad fija (1 segundo).
  4. Escribe los tiempos modificados en un archivo tiempos_modificados.txt.

Solución:

import java.io.*;

public class Main {
    public static void main(String[] args) {
        String archivoEntrada = "actividad.txt";
        String archivoSalida = "tiempos_modificados.txt";
        int incremento = 1;

        try (
            BufferedReader br = new BufferedReader(new FileReader(archivoEntrada));
            BufferedWriter bw = new BufferedWriter(new FileWriter(archivoSalida))
        ) {
            String linea;
            while ((linea = br.readLine()) != null) {
                long tiempoOriginal = Long.parseLong(linea);
                long tiempoModificado = tiempoOriginal + incremento;
                bw.write(Long.toString(tiempoModificado));
                bw.newLine();
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Como era de esperar, el programa detectó rápidamente el error y procedió a identificarlo y repararlo. Simplemente reinició el sistema, y los registros volvieron a la normalidad.

Logramos nuestro objetivo: durante ese periodo de mantenimiento y búsqueda de errores, se abrió una ventana temporal que permitía modificar todos los archivos. Pedro aprovechó ese momento para cambiar la lista de tareas programadas para el lunes por la lista que nosotros necesitábamos, la que deja el pasillo libre durante una hora.

¿Te gustó? Pues no te lo guardes, ¡compártelo como si fuera un chisme! 😏