Guía de resolución (educativa)

Añade una guía paso a paso para resolver problemas matemáticos (no da respuestas). Útil para estudiar y aprender procedimientos.

作者
Julian Herrera Triana
日安装量
0
总安装量
1
评分
0 0 0
版本
1.0
创建于
2025-11-06
更新于
2025-11-06
大小
6.5 KB
许可证
暂无
适用于
所有网站

// ==UserScript==
// @name Guía de resolución (educativa)
// @namespace http://tampermonkey.net/
// @version 1.0
// @description Añade una guía paso a paso para resolver problemas matemáticos (no da respuestas). Útil para estudiar y aprender procedimientos.
// @author ChatGPT
// @match *://*/*
// @grant none
// ==/UserScript==

(function() {
'use strict';

/* --- UI: botón flotante --- */
const btn = document.createElement('button');
btn.textContent = 'Guía de resolución';
Object.assign(btn.style, {
position: 'fixed', right: '10px', bottom: '10px', zIndex: 999999,
padding: '8px 12px', borderRadius: '8px', border: 'none', cursor: 'pointer',
background: '#2b79d6', color: 'white', boxShadow: '0 2px 6px rgba(0,0,0,0.2)'
});
document.body.appendChild(btn);

/* --- Modal --- */
function createModal() {
const modal = document.createElement('div');
Object.assign(modal.style, {
position: 'fixed', left: 0, top: 0, width: '100%', height: '100%', zIndex: 1000000,
background: 'rgba(0,0,0,0.4)', display: 'flex', alignItems: 'center', justifyContent: 'center'
});
const card = document.createElement('div');
Object.assign(card.style, {
width: 'min(900px, 96%)', maxHeight: '90%', overflowY: 'auto', background: 'white', padding: '18px',
borderRadius: '10px', boxShadow: '0 8px 30px rgba(0,0,0,0.2)'
});
modal.appendChild(card);

const close = document.createElement('button');
close.textContent = 'Cerrar';
Object.assign(close.style, {float: 'right', marginBottom: '10px'});
close.onclick = () => modal.remove();
card.appendChild(close);

const title = document.createElement('h2');
title.textContent = 'Guía de resolución — pasos y recordatorios';
card.appendChild(title);

const inputLabel = document.createElement('p');
inputLabel.textContent = 'Selecciona el enunciado en la página y luego pulsa "Analizar", o pega el enunciado abajo:';
card.appendChild(inputLabel);

const textarea = document.createElement('textarea');
Object.assign(textarea.style, {width: '100%', height: '80px', marginBottom: '10px'});
card.appendChild(textarea);

const analyzeBtn = document.createElement('button');
analyzeBtn.textContent = 'Analizar';
Object.assign(analyzeBtn.style, {marginRight: '8px'});
card.appendChild(analyzeBtn);

const autoHint = document.createElement('div');
autoHint.style.marginTop = '12px';
card.appendChild(autoHint);

analyzeBtn.onclick = () => {
const text = (window.getSelection().toString().trim()) || textarea.value.trim();
if (!text) {
autoHint.innerHTML = 'Primero selecciona o pega el enunciado del problema.';
return;
}
const type = detectType(text);
autoHint.innerHTML = renderGuide(type, text);
};

return modal;
}

btn.onclick = () => {
const modal = createModal();
document.body.appendChild(modal);
};

/* --- Detección simple del tipo de problema --- */
function detectType(s) {
const t = s.toLowerCase();
if (/[0-9]\s*x\^?2|x\^2|quadratic|square|cuadr/i.test(t) || /x\s*\^?\s*2/.test(t)) return 'cuadratica';
if (/[0-9]\s*x|solve for x|ecuación|=/.test(t) && !/x\^2/.test(t)) return 'lineal';
if (/\barea\b|perimeter|área|perímetro|cm|m2|m²/.test(t)) return 'area';
if (/%|por ciento|percent|percentage/.test(t)) return 'porcentaje';
return 'general';
}

/* --- Render de pasos (NO CALCULA) --- */
function renderGuide(type, text) {
let html = `Enunciado detectado:

${escapeHtml(text)}

`;
html += '

Pasos recomendados

    ';
    if (type === 'cuadratica') {
    html += '
  1. Identifica la forma: ax² + bx + c = 0.
  2. ';
    html += '
  3. Si es posible, divide entre el coeficiente principal a para simplificar.
  4. ';
    html += '
  5. Intenta factorizar: busca dos números que multiplicados den a·c y sumados den b.
  6. ';
    html += '
  7. Si no factoriza, usa la fórmula cuadrática (solo escribe la fórmula y aplica con cuidado): x = (-b ± √(b² - 4ac)) / (2a).
  8. ';
    html += '
  9. Comprueba las raíces sustituyéndolas en la ecuación original.
  10. ';
    } else if (type === 'lineal') {
    html += '
  11. Expande y simplifica ambos lados si hay paréntesis.
  12. ';
    html += '
  13. Agrupa términos con la variable a un lado y constantes al otro.
  14. ';
    html += '
  15. Divide por el coeficiente de la variable para aislarla.
  16. ';
    html += '
  17. Verifica substituyendo la solución en la ecuación original.
  18. ';
    } else if (type === 'area') {
    html += '
  19. Identifica la figura (rectángulo, triángulo, círculo, trapecio, etc.).
  20. ';
    html += '
  21. Escribe la fórmula correspondiente (ej.: rectángulo A = base·altura, triángulo A = (base·altura)/2, círculo A = πr²).
  22. ';
    html += '
  23. Asegúrate de que las unidades sean consistentes y convierte si es necesario.
  24. ';
    html += '
  25. Aplica la fórmula paso a paso y escribe la respuesta con unidades.
  26. ';
    } else if (type === 'porcentaje') {
    html += '
  27. Identifica si el problema pide: porcentaje de un número, porcentaje de aumento/disminución, o qué porcentaje representa una parte del todo.
  28. ';
    html += '
  29. Convierte el porcentaje a decimal (p. ej. 25% → 0.25) y aplica multiplicación o regla de tres según corresponda.
  30. ';
    html += '
  31. Interpreta el resultado y verifica con estimaciones rápidas.
  32. ';
    } else {
    html += '
  33. Lee con atención: subraya datos importantes (números, unidades, lo que piden).
  34. ';
    html += '
  35. Relaciónalo con fórmulas conocidas o convierte a ecuaciones.
  36. ';
    html += '
  37. Resuelve paso a paso y verifica tu respuesta.
  38. ';
    }
    html += '

';
html += '

Recordatorios

    ';
    html += '
  • Revisa la aritmética y las unidades.
  • ';
    html += '
  • Si algo no cuadra, rehace los pasos lentamente y comprueba sustituciones.
  • ';
    html += '
  • Explica cada paso en voz alta o escríbelo —ayuda a entender mejor.
  • ';
    html += '

';
html += '

Este asistente no muestra respuestas finales. Está diseñado para ayudarte a aprender el procedimiento y practicar soluciones propias.

';
return html;
}

function escapeHtml(str) {
return str.replace(/[&<>"']/g, function(m){ return ({'&':'&','<':'<','>':'>','"':'"',"'":'''}[m]); });
}

})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址