{"id":914,"date":"2026-04-08T21:42:37","date_gmt":"2026-04-08T21:42:37","guid":{"rendered":"https:\/\/www.bogotajvm.com.co\/?page_id=914"},"modified":"2026-07-01T01:19:27","modified_gmt":"2026-07-01T01:19:27","slug":"miscelanea-de-ejercicios","status":"publish","type":"page","link":"https:\/\/www.bogotajvm.com.co\/en\/starter-kit\/miscelanea-de-ejercicios\/","title":{"rendered":"Miscel\u00e1nea de Ejercicios"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"914\" class=\"elementor elementor-914\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-bba1440 e-flex e-con-boxed e-con e-parent\" data-id=\"bba1440\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-9d29224 e-con-full e-flex e-con e-child\" data-id=\"9d29224\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-37534fa elementor-widget elementor-widget-html\" data-id=\"37534fa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<link rel=\"license\" href=\"https:\/\/creativecommons.org\/licenses\/by\/4.0\/\">\r\n\r\n<link rel=\"stylesheet\" href=\"css\/main.css\">\r\n<link href=\"https:\/\/cdn.jsdelivr.net\/npm\/prismjs@1.29.0\/themes\/prism.css\" rel=\"stylesheet\" \/>\r\n<link href=\"https:\/\/cdn.jsdelivr.net\/npm\/prismjs@1.29.0\/plugins\/line-numbers\/prism-line-numbers.css\" rel=\"stylesheet\" \/>\r\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/prismjs@1.29.0\/prism.min.js\"><\/script>\r\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/prismjs@1.29.0\/components\/prism-java.min.js\"><\/script>\r\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/prismjs@1.29.0\/plugins\/line-numbers\/prism-line-numbers.min.js\"><\/script>\r\n\r\n<h1>Miscel\u00e1nea de Ejercicios<\/h1>  \r\n\r\n<h4>M1<\/h4>\r\n\r\n<p>Un emprendedor decidi\u00f3 subir el precio de su producto estrella por un porcentaje escogido.\r\nPero entonces se dio cuenta que las personas dejaron de comprarlo en la misma cantidad.\r\nEntonces decidi\u00f3 hacer un descuento al precio actualizado por el mismo porcentaje. Sin\r\nembargo, al hacerlo el precio del producto no fue el mismo en el que comenz\u00f3.<\/p>\r\n\r\n<p>Haz una funci\u00f3n llamada aumentoDescuento que reciba un precio y un porcentaje, p de modo\r\nque 0 < p < 100, y devuelva el precio resultante despu\u00e9s de aplicar un aumento por el\r\nporcentaje dado y a ese resultado aplicarle un descuento por ese mismo porcentaje.<\/p>\r\n\r\n\r\n<figure class=\"code-block\">\r\n            <pre><code class=\"language-java\">assertEquals(93.75, aumentoDescuento(100, 25.0), 1e-4);\r\nassertEquals(960.0, aumentoDescuento(1000.0, 20.0), 1e-4);\r\nassertEquals(990.0, aumentoDescuento(1000.0, 10.0), 1e-4);<\/code><\/pre>\r\n        <\/figure>\r\n\r\n<h4>M2<\/h4>\r\n\r\n<p>Despu\u00e9s del paso de un hurac\u00e1n, queremos un an\u00e1lisis de como se afectaron las cercas que\r\nrodean las casas de una poblaci\u00f3n. Para tal efecto alguien hace un diagrama empezando por\r\nun poste al azar y escribiendo \"#\" si el poste no fue afectado y \"-\" si el poste fue afectado y va a\r\ntener que ser reemplazado.<\/p>\r\n\r\n<p>Haz una funci\u00f3n que reciba un diagrama v\u00e1lido y devuelva la mayor cantidad contigua de\r\npostes que deben ser reemplazados. Dado que las cercas son circulares y el inicio de un\r\ndiagrama es aleatorio, el primer paso es modificar el String para garantizar que no comienza en\r\nun \"-\".<\/p>\r\n\r\n<p>Por ejemplo si el diagrama es \"#--#---#-#\" la respuesta es 3 dado que hay 4 postes que no\r\ndeben ser reparados, el espacio m\u00e1s grande est\u00e1 entre el segundo y el tercer poste y el\r\nespacio mide 3 postes.<\/p>\r\n\r\n<p>Por ejemplo si el String inicial es \"---###---\" el primer paso debe ser transformar ese String a\r\n\"###------\" moviendo cada caracter \"-\" inicial de la cadena al final de la cadena.<\/p>\r\n\r\n<p>Para este ejemplo la respuesta ser\u00eda 6.<\/p>\r\n\r\n<figure class=\"code-block\">\r\n            <pre><code class=\"language-java\">assertEquals(3, m\u00e1ximoHueco(\"#--#---#-#\"));\r\nassertEquals(5, m\u00e1ximoHueco(\"-----\"));\r\nassertEquals(0, m\u00e1ximoHueco(\"####\"));\r\nassertEquals(6, m\u00e1ximoHueco(\"###------\"));<\/code><\/pre>\r\n        <\/figure>\r\n\r\n<h4>M3<\/h4>\r\n\r\n<p>Un d\u00eda despreocupado ves una nota en un papel en donde est\u00e1 escrito el n\u00famero 121, pero por\r\nalguna raz\u00f3n en vez de leerlo \"ciento veintiuno\" lo lees \"un uno, un dos, un uno\" y ahora\r\nescribes ese \"n\u00famero\" 111211, ahora puedes hacer ese ejercicio nuevamente: \"tres unos, un\r\ndos, dos unos\" y al escribirlo ser\u00eda \"311221\" y te das cuenta que podr\u00edas continuar as\u00ed\r\nindefinidamente.<\/p>\r\n\r\n<p>Haz una funci\u00f3n que tome un String que contiene solo d\u00edgitos, y un n\u00famero entero y retorne el\r\nString resultante despu\u00e9s de aplicar el proceso antes descrito, la cantidad de veces indicada\r\npor el par\u00e1metro.<\/p>\r\n\r\n<figure class=\"code-block\">\r\n            <pre><code class=\"language-java\">assertEquals(\"111211\", selfDescribing(\"121\", 1));\r\nassertEquals(\"311221\", selfDescribing(\"121\", 2));\r\nassertEquals(\"13212211\", selfDescribing(\"121\", 3));<\/code><\/pre>\r\n        <\/figure>\r\n\r\n<h4>M4<\/h4>\r\n\r\n<p>Queremos hacer un software que provea estad\u00edsticas de un torneo deportivo. En este torneo\r\nlos partidos pueden tener 3 resultados para un equipo: ganar, empatar o perder. Cada uno de\r\nestos resultados los asociamos con un caracter: \u2018O\u2019, \u2018-\u2019 y \u2018X\u2019 respectivamente. Para visualizar\r\nlos \u00faltimos 5 resultados podemos escribir un String as\u00ed: \u201cOO--X\u201d que significa que sus \u00faltimos 2\r\npartidos los gano, pero antes de esos partidos llevaba 2 partidos empatados y antes uno\r\nperdido. Los partidos m\u00e1s recientes tienen un \u00edndice menor en el String.<\/p>\r\n\r\n<p>Haz una funci\u00f3n que dado un String de 5 caracteres con los resultados de un equipo con la\r\ntendencia del equipo. La tendencia es el conteo de resultados iguales sin interrupci\u00f3n\r\nempezando desde el resultado m\u00e1s reciente. Por ejemplo en el ejemplo anterior la tendencia\r\nser\u00eda \u201c2 ganados\u201d porque el resultado m\u00e1s reciente es un partido ganado y a partir de ah\u00ed la\r\ncantidad de partidos ganados sin interrupci\u00f3n es 2.<\/p>\r\n\r\n<p>Para las tendencias usa las palabras: \u201cganado, empatado, perdido\u201d y en caso de que la\r\ntendencia sea mayor que 1, agrega una \u201cs\u201d a la palabra.<\/p>\r\n\r\n<figure class=\"code-block\">\r\n            <pre><code class=\"language-java\">assertEquals(\"2 ganados\", tendencia(\"OO--X\"));\r\nassertEquals(\"5 empatados\", tendencia(\"-----\"));\r\nassertEquals(\"1 perdido\", tendencia(\"X-XXX\"));<\/code><\/pre>\r\n        <\/figure>\r\n        \r\n        <p>\u00a9 2022 Carlos Obreg\u00f3n. This work is licensed under Creative Commons Attribution 4.0 International (CC BY 4.0)<\/p>       \r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d8b5f20 e-flex e-con-boxed e-con e-parent\" data-id=\"d8b5f20\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-15d9481 elementor-widget elementor-widget-shortcode\" data-id=\"15d9481\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\t\t<div data-elementor-type=\"container\" data-elementor-id=\"2038\" class=\"elementor elementor-2038\" data-elementor-post-type=\"elementor_library\">\n\t\t\t\t<div class=\"elementor-element elementor-element-95a4ae3 e-flex e-con-boxed e-con e-parent\" data-id=\"95a4ae3\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-19c4dee elementor-widget elementor-widget-html\" data-id=\"19c4dee\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t   <script>\nfunction initChapterNav(activeIndex) {\n\n  \/* \u2500\u2500 Chapters \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  const chapters = [\n    {\n      title: \"Funciones\",\n      url: \"https:\/\/www.bogotajvm.com.co\/starter-kit\/funciones\",\n      sections: [\n        { title: \"\u00a1Hola Mundo! \u00a1Hola Java!\", anchor: \"hola-java\" },\n        { title: \"\u00a1Hola Mundo! version 2.0\",  anchor: \"hola-java-refactor\" },\n        { title: \"Espacio en blanco\",          anchor: \"espacio-en-blanco\" },\n        { title: \"Comentarios\",                anchor: \"comentarios\" },\n        { title: \"Quiz\",                anchor: \"Quiz\" },\n        { title: \"Ejercicios\",                 anchor: \"ejercicios\" },\n      ]\n    },\n    {\n      title: \"Operadores\",\n      url: \"https:\/\/www.bogotajvm.com.co\/starter-kit\/operadores\",\n      sections: [\n        { title: \"Tipos Primitivos\",          anchor: \"tipos-primitivos\" },\n        { title: \"Operadores Num\u00e9ricos\",      anchor: \"operadores-numericos\" },\n        { title: \"Operadores Relacionales\",   anchor: \"operadores-relacionales\" },\n        { title: \"Operadores L\u00f3gicos\",        anchor: \"operadores-logicos\" },\n        { title: \"Operador Ternario\",         anchor: \"operador-ternario\" },\n        { title: \"Diversi\u00f3n con Funciones\",   anchor: \"diversion-con-funciones\" },\n          { title: \"Quiz\",                anchor: \"Quiz\" },\n        { title: \"Ejercicios\",                anchor: \"ejercicios-cap2\" },\n      ]\n    },\n    {\n      title: \"Variables\",\n      url: \"https:\/\/www.bogotajvm.com.co\/starter-kit\/variables\",\n      sections: [\n        { title: \"C\u00f3digo legado: c\u00f3digo sin var\",       anchor: \"codigo-sin-var\" },\n        { title: \"Cuidados con literales y variables\",  anchor: \"literales-variables\" },\n        { title: \"N\u00fameros M\u00e1gicos\",                     anchor: \"numeros-magicos\" },\n        { title: \"Reasignaciones\",                      anchor: \"reasignaciones\" },\n        { title: \"Misi\u00f3n secundaria: Casting\",          anchor: \"casting\" },\n        { title: \"Quiz\",          anchor: \"Quiz\" },\n        { title: \"Ejercicios\",                          anchor: \"ejercicios-cap3\" },\n      ]\n    },\n    {\n      title: \"String y StringBuilder\",\n      url: \"https:\/\/www.bogotajvm.com.co\/starter-kit\/string-y-stringbuilder\",\n      sections: [\n          \n          { title: \"M\u00e9todos Destacados de String\",       anchor: \"metodos-destacados\" },\n        { title: \"String Format\",  anchor: \"string-format\" },\n        { title: \"StringBuilder\",                     anchor: \"stringbuilder\" },\n        { title: \"Misi\u00f3n secundaria: Inmutabilidad\",                      anchor: \"inmutabilidad\" },\n        { title: \"Quiz\",          anchor: \"quiz\" },\n        { title: \"Ejercicios\",                          anchor: \"ejercicios-cap4\" },\n        ]\n    },\n    {\n      title: \"Programas en Java\",\n      url: \"https:\/\/www.bogotajvm.com.co\/starter-kit\/programas-en-java\",\n      sections: [     \n          { title: \"Paquetes\",       anchor: \"paquetes\" },\n        { title: \"Importaciones\",  anchor: \"importaciones\" },\n        { title: \"Importaciones Static\",                     anchor: \"importaciones-static\" },\n        { title: \"Constantes de Clase\",                      anchor: \"constantes-clase\" },\n        { title: \"Especificaciones\",                      anchor: \"especificaciones\" },\n        { title: \"Ejercicios\",                          anchor: \"ejercicios-cap5\" },\n        ]\n    },\n    {\n      title: \"Ciclos\",\n      url: \"https:\/\/www.bogotajvm.com.co\/starter-kit\/ciclos\",\n      sections: [\n           { title: \"Operadores compuestos\",       anchor: \"operadores -compuestos\" },\n        { title: \"Ciclos For\",  anchor: \"ciclos-for\" },\n        { title: \"Strings\",                     anchor: \"strings\" },\n        { title: \"Ciclos For vs Ciclos While\",                      anchor: \"ciclosfor-cicloswhile\" },\n        { title: \"Ciclos Anidados\",                      anchor: \"ciclos-anidados\" },\n        { title: \"Strings de m\u00faltiples l\u00edneas\",                      anchor: \"strings-multipleslineas\" },\n         { title: \"Ciclos Infinitos\",                      anchor: \"ciclos-infinitos\" },\n          { title: \"Logs\",                          anchor: \"logs\" },\n        { title: \"Ejercicios\",                          anchor: \"ejercicios-cap6\" },\n        ]\n    },\n    {\n      title: \"Condicionales\",\n      url: \"https:\/\/www.bogotajvm.com.co\/starter-kit\/condicionales\",\n      sections: [\n          \n           { title: \"Las muchas formas de switch\",       anchor: \"muchasformas\" },\n        { title: \"Las muchas formas de if\",  anchor: \"formas-if\" },\n        { title: \"Flujos de ejecuci\u00f3n con condicionales\",                     anchor: \"ejecuci\u00f3ncondicionales\" },\n        { title: \"Orden de condiciones\",                      anchor: \"condiciones\" },\n        { title: \"Switch vs If\",                      anchor: \"switch\" },\n        { title: \"m\u00faltiples retornos en una funci\u00f3n\",                      anchor: \"retornosfunci\u00f3n\" },\n        { title: \"Ejercicios\",                          anchor: \"ejercicios-cap7\" },\n        ]\n    },\n    {\n      title: \"Arreglos\",\n      url: \"https:\/\/www.bogotajvm.com.co\/starter-kit\/arreglos\",\n      sections: [\n          { title: \"Arreglos como Par\u00e1metros\",       anchor: \"Comoparametros\" },\n        { title: \"Mutabilidad en los arreglos\",  anchor: \"mutabilidad\" },\n        { title: \"Par\u00e1metros de salida\",                     anchor: \"parametrossalida\" },\n        { title: \"Arreglos como valores de retorno\",                      anchor: \"arreglos-retorno\" },\n        { title: \"Valores predeterminados\",                      anchor: \"valores-predeterminados\" },\n        { title: \"Arreglos Multidimensionales\",                      anchor: \"a-multidimensionales\" },\n        { title: \"Copiar una matriz\",                      anchor: \"copiar-matriz\" },\n        { title: \"Iteraciones\",                      anchor: \"iteraciones\" },\n        { title: \"Ejercicios\",                          anchor: \"ejercicios-cap8\" },\n          ]\n    },\n    {\n      title: \"Miscel\u00e1nea de Ejercicios\",\n      url: \"https:\/\/www.bogotajvm.com.co\/starter-kit\/miscelanea-de-ejercicios\/\",\n      sections: []\n    },\n    {\n      title: \"Tipos de Datos\",\n      url: \"https:\/\/www.bogotajvm.com.co\/starter-kit\/tipos-de-datos\/\",\n      sections: [\n           { title: \"M\u00e9todos no accesores\",       anchor: \"metodosaccesores\" },\n        { title: \"Estatico vs No- Estatico\",  anchor: \"estatico\" },\n        { title: \"Igualdad\",                     anchor: \"igualdad\" },\n        { title: \"Implementaci\u00f3n por defecto de una clase\",                      anchor: \"implementacionclase\" },\n        { title: \"Ejercicios\",                          anchor: \"ejercicioscap9\" },\n        ]\n    },\n    {\n      title: \"Constructores\",\n      url: \"https:\/\/www.bogotajvm.com.co\/starter-kit\/constructores\/\",\n      sections: [\n           { title: \"M\u00faltiples Constructores\",       anchor: \"multiplesconstructores\" },\n        { title: \"F\u00e1bricas Est\u00e1ticas\",  anchor: \"fabricasestaticas\" },\n        { title: \"Java Beans\",                     anchor: \"javabeans\" },\n        { title: \"Constructores Con Visibilidad por Defecto\",                      anchor: \"constructoresdefecto\" },\n         { title: \"Side Quest: Builders\",                      anchor: \"sidequestbuilders\" },\n        { title: \"Ejercicios\",                          anchor: \"ejercicioscap11\" },\n        ]\n    },\n    {\n      title: \"Referencias y Null\",\n      url: \"https:\/\/www.bogotajvm.com.co\/starter-kit\/referencias-y-null\/\",\n      sections: [\n                  { title: \"Pasar por valor\",       anchor: \"pasarporvalor\" },\n        { title: \"NULL\",  anchor: \"null\" },\n        { title: \"Valores Nulos\",                     anchor: \"valoresnulos\" },\n        { title: \"Ejercicios\",                          anchor: \"ejercicioscap12\" },\n        ]\n    },\n    {\n      title: \"Enums\",\n      url: \"https:\/\/www.bogotajvm.com.co\/starter-kit\/enums\/\",\n      sections: [\n           { title: \"Metodos y Atributos\",       anchor: \"metodosyatributos\" },\n        { title: \"Sobreescritura de M\u00e9todos por Constante\",  anchor: \"sobreescrituraconstante\" },\n        { title: \"Ejercicios\",                          anchor: \"ejercicioscapenums\" },\n        ]\n    },\n    {\n      title: \"Inmutabilidad\",\n      url: \"https:\/\/www.bogotajvm.com.co\/starter-kit\/inmutabilidad\/\",\n      sections: [\n           { title: \"Mutabilidad en el interior\",       anchor: \"mutabilidadinterior\" },\n        { title: \"Withers\",  anchor: \"withers\" },\n        { title: \"Ejercicios\",                          anchor: \"ejerciciopuzzle\" },\n        ]\n    },\n    {\n      title: \"Manejo de Errores\",\n      url: \"https:\/\/www.bogotajvm.com.co\/starter-kit\/manejo-de-errores\/\",\n      sections: [\n          { title: \"Estrategia de Manejo de Errores\",       anchor: \"estrategiaerrores\" },\n        { title: \"El usuario final no debe ver un stacktrace\",  anchor: \"stacktrace\" },\n        { title: \"Cambios en el C\u00f3digo\",                     anchor: \"cambiosc\u00f3digo\" },\n        { title: \"Mensajes de Error\",                      anchor: \"mensajeserror\" },\n         { title: \"Librer\u00eda de Validaciones\",                      anchor: \"librer\u00edavalidaciones\" },\n        ]\n    }\n  ];\n\n  \/* \u2500\u2500 Styles \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  const CSS = `\n    #cn-toggle {\n      position: fixed;\n      bottom: 24px;\n      left: 24px;\n      width: clamp(44px, 6vw, 100px);\n      height: clamp(44px, 6vw, 100px);\n      border-radius: 50%;\n      background: #fff;\n      border: 1px solid #d0d0d0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      cursor: pointer;\n      z-index: 9000;\n      box-shadow: 0 2px 8px rgba(0,0,0,.12);\n      transition: background .15s;\n      padding: 0;\n    }\n    #cn-toggle:hover { background: #f5f5f5; }\n    #cn-toggle svg {\n      color: black;\n      display: block;\n      width: clamp(18px, 2.4vw, 40px);\n      height: clamp(18px, 2.4vw, 40px);\n    }\n\n@media (prefers-color-scheme: dark) {\n#cn-toggle { background: #2a2a2a; border-color: #444; }\n#cn-toggle:hover { background: #333; }\n}\n\n    #cn-panel {\n      position: fixed;\n      bottom: calc(clamp(44px, 6vw, 100px) + 36px);\n      left: 24px;\n      width: 270px;\n      max-height: 72vh;\n      overflow-y: auto;\n      background: #fff;\n      border: 1px solid #d0d0d0;\n      border-radius: 12px;\n      padding: 10px 0;\n      z-index: 8999;\n      box-shadow: 0 4px 16px rgba(0,0,0,.10);\n      display: none;\n      box-sizing: border-box;\n      font-family: inherit;\n    }\n    #cn-panel.cn-open { display: block; }\n\n    @media (prefers-color-scheme: dark) {\n      #cn-panel { background: #1e1e1e; border-color: #444; box-shadow: 0 4px 16px rgba(0,0,0,.4); }\n    }\n\n    .cn-header {\n      font-size: 11px;\n      font-weight: 600;\n      letter-spacing: .07em;\n      text-transform: uppercase;\n      color: #999;\n      padding: 0 14px 8px;\n      border-bottom: 1px solid #eee;\n      margin-bottom: 4px;\n    }\n    @media (prefers-color-scheme: dark) {\n      .cn-header { color: #666; border-color: #333; }\n    }\n\n    .cn-chapter {\n      display: flex;\n      align-items: center;\n    }\n    .cn-chapter-link {\n      flex: 1;\n      padding: 7px 6px 7px 14px;\n      font-size: 13.5px;\n      line-height: 1.35;\n      color: #222;\n      text-decoration: none;\n      display: block;\n    }\n    .cn-chapter-link:hover { color: #0066cc; }\n    .cn-chapter-link.cn-active {\n      font-weight: 600;\n      color: #0066cc;\n    }\n    @media (prefers-color-scheme: dark) {\n      .cn-chapter-link { color: #ddd; }\n      .cn-chapter-link:hover, .cn-chapter-link.cn-active { color: #5aacff; }\n    }\n\n    .cn-expand-btn {\n      width: 30px;\n      height: 30px;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      cursor: pointer;\n      color: #bbb;\n      border-radius: 6px;\n      margin-right: 8px;\n      flex-shrink: 0;\n      background: none;\n      border: none;\n      padding: 0;\n      transition: color .15s, background .15s;\n    }\n    .cn-expand-btn:hover { color: #555; background: #f0f0f0; }\n    .cn-expand-btn svg { transition: transform .2s; display: block; }\n    .cn-expand-btn.cn-open svg { transform: rotate(90deg); }\n\n    @media (prefers-color-scheme: dark) {\n      .cn-expand-btn { color: #555; }\n      .cn-expand-btn:hover { color: #aaa; background: #2e2e2e; }\n    }\n\n    .cn-section-list {\n      display: none;\n      padding: 2px 8px 6px 28px;\n      border-bottom: 1px solid #f0f0f0;\n      margin-bottom: 2px;\n    }\n    .cn-section-list.cn-open { display: block; }\n\n    @media (prefers-color-scheme: dark) {\n      .cn-section-list { border-color: #2a2a2a; }\n    }\n\n    .cn-section-link {\n      display: block;\n      padding: 4px 0;\n      font-size: 12.5px;\n      line-height: 1.4;\n      color: #666;\n      text-decoration: none;\n    }\n    .cn-section-link:hover { color: #0066cc; }\n\n    @media (prefers-color-scheme: dark) {\n      .cn-section-link { color: #888; }\n      .cn-section-link:hover { color: #5aacff; }\n    }\n  `;\n\n  \/* \u2500\u2500 SVG icons \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  function iconMenu() {\n    return `<svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n      stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\">\n      <line x1=\"4\" y1=\"6\" x2=\"20\" y2=\"6\"\/>\n      <line x1=\"4\" y1=\"12\" x2=\"20\" y2=\"12\"\/>\n      <line x1=\"4\" y1=\"18\" x2=\"20\" y2=\"18\"\/>\n    <\/svg>`;\n  }\n\n  function iconClose() {\n    return `<svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"\n      stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\">\n      <line x1=\"5\" y1=\"5\" x2=\"19\" y2=\"19\"\/>\n      <line x1=\"19\" y1=\"5\" x2=\"5\" y2=\"19\"\/>\n    <\/svg>`;\n  }\n\n  function iconChevron() {\n    return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\n      stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n      <polyline points=\"9 18 15 12 9 6\"\/>\n    <\/svg>`;\n  }\n\n  \/* \u2500\u2500 Build UI \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n\n  \/\/ Inject styles\n  const style = document.createElement(\"style\");\n  style.textContent = CSS;\n  document.head.appendChild(style);\n\n  \/\/ Build toggle button\n  const toggle = document.createElement(\"button\");\n  toggle.id = \"cn-toggle\";\n  toggle.setAttribute(\"aria-label\", \"Toggle navigation\");\n  toggle.innerHTML = iconMenu();\n\n  \/\/ Build panel\n  const panel = document.createElement(\"nav\");\n  panel.id = \"cn-panel\";\n  panel.setAttribute(\"aria-label\", \"Course navigation\");\n\n  const header = document.createElement(\"div\");\n  header.className = \"cn-header\";\n  header.textContent = \"Contenidos\";\n  panel.appendChild(header);\n\n  chapters.forEach(function (chapter, idx) {\n    const isActive = activeIndex !== undefined && idx === activeIndex;\n    const hasSections = chapter.sections && chapter.sections.length > 0;\n\n    \/\/ Chapter row\n    const row = document.createElement(\"div\");\n    row.className = \"cn-chapter\";\n\n    const link = document.createElement(\"a\");\n    link.className = \"cn-chapter-link\" + (isActive ? \" cn-active\" : \"\");\n    link.href = chapter.url;\n    link.textContent = chapter.title;\n    row.appendChild(link);\n\n    if (hasSections) {\n      \/\/ Expand button\n      const btn = document.createElement(\"button\");\n      btn.className = \"cn-expand-btn\" + (isActive ? \" cn-open\" : \"\");\n      btn.setAttribute(\"aria-label\", isActive ? \"Hide sections\" : \"Show sections\");\n      btn.innerHTML = iconChevron();\n      row.appendChild(btn);\n\n      \/\/ Section list\n      const sectionList = document.createElement(\"div\");\n      sectionList.className = \"cn-section-list\" + (isActive ? \" cn-open\" : \"\");\n\n      chapter.sections.forEach(function (section) {\n        const sLink = document.createElement(\"a\");\n        sLink.className = \"cn-section-link\";\n        sLink.href = isActive\n          ? \"#\" + section.anchor\n          : chapter.url + \"#\" + section.anchor;\n        sLink.textContent = section.title;\n        sectionList.appendChild(sLink);\n      });\n\n      btn.addEventListener(\"click\", function () {\n        const isOpen = sectionList.classList.contains(\"cn-open\");\n\n        \/\/ Close all section lists and reset all expand buttons\n        panel.querySelectorAll(\".cn-section-list\").forEach(function (list) {\n          list.classList.remove(\"cn-open\");\n        });\n        panel.querySelectorAll(\".cn-expand-btn\").forEach(function (b) {\n          b.classList.remove(\"cn-open\");\n          b.setAttribute(\"aria-label\", \"Show sections\");\n        });\n\n        \/\/ If it wasn't open before, open it now (clicking an open chapter just closes it)\n        if (!isOpen) {\n          sectionList.classList.add(\"cn-open\");\n          btn.classList.add(\"cn-open\");\n          btn.setAttribute(\"aria-label\", \"Hide sections\");\n        }\n      });\n\n      panel.appendChild(row);\n      panel.appendChild(sectionList);\n    } else {\n      panel.appendChild(row);\n    }\n  });\n\n  toggle.addEventListener(\"click\", function (e) {\n    e.stopPropagation();\n    const open = panel.classList.toggle(\"cn-open\");\n    toggle.innerHTML = open ? iconClose() : iconMenu();\n    toggle.setAttribute(\"aria-label\", open ? \"Close navigation\" : \"Open navigation\");\n  });\n\n  document.addEventListener(\"click\", function (e) {\n    if (!panel.contains(e.target) && !toggle.contains(e.target)) {\n      panel.classList.remove(\"cn-open\");\n      toggle.innerHTML = iconMenu();\n      toggle.setAttribute(\"aria-label\", \"Open navigation\");\n    }\n  });\n\n  document.body.appendChild(toggle);\n  document.body.appendChild(panel);\n}\n\n  \n    initChapterNav();\n  <\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Miscel\u00e1nea de Ejercicios M1 Un emprendedor decidi\u00f3 subir el precio de su producto estrella por un porcentaje escogido. Pero entonces [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":315,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-914","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.bogotajvm.com.co\/en\/wp-json\/wp\/v2\/pages\/914","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bogotajvm.com.co\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.bogotajvm.com.co\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.bogotajvm.com.co\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bogotajvm.com.co\/en\/wp-json\/wp\/v2\/comments?post=914"}],"version-history":[{"count":19,"href":"https:\/\/www.bogotajvm.com.co\/en\/wp-json\/wp\/v2\/pages\/914\/revisions"}],"predecessor-version":[{"id":2093,"href":"https:\/\/www.bogotajvm.com.co\/en\/wp-json\/wp\/v2\/pages\/914\/revisions\/2093"}],"up":[{"embeddable":true,"href":"https:\/\/www.bogotajvm.com.co\/en\/wp-json\/wp\/v2\/pages\/315"}],"wp:attachment":[{"href":"https:\/\/www.bogotajvm.com.co\/en\/wp-json\/wp\/v2\/media?parent=914"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}