Mathspace Auto-Answer and Auto-Next

Automatically answers Mathspace questions correctly and presses Next.

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Mathspace Auto-Answer and Auto-Next
// @namespace    mathspace.taozhiyu.gitee.io
// @version      1.0.0
// @description  Automatically answers Mathspace questions correctly and presses Next.
// @author       YourName
// @match        https://app.mathspace.co/*
// @icon         https://app.mathspace.co/favicon.ico
// @require      https://code.jquery.com/jquery-3.6.0.min.js
// @run-at       document-end
// @grant        none
// ==/UserScript==
/* global jQuery, $ */

(function() {
    'use strict';

    console.log('Mathspace Auto-Answer and Auto-Next initializing...');

    // Function to solve Mathspace questions (simplified logic)
    function solveMathspaceQuestion() {
        try {
            // Find the current question element (adjust selector based on Mathspace's structure)
            const questionElement = $('.question-container, #current-question, .mathspace-question'); // Example selectors—update with real ones
            if (!questionElement.length) {
                console.log('No question element found.');
                return;
            }

            // Extract question text or ID to determine the correct answer (simplified logic)
            const questionText = questionElement.text().trim() || questionElement.attr('id');
            console.log('Detected question:', questionText);

            // Simulate correct answer (replace with actual Mathspace answer logic)
            let correctAnswer = generateCorrectAnswer(questionText); // Hypothetical function
            if (!correctAnswer) {
                console.log('Couldn’t generate correct answer.');
                return;
            }

            // Find and select the correct answer input or button (e.g., radio button, text input)
            const answerInputs = $('input[type="radio"], input[type="text"], .answer-option'); // Example selectors—update with real ones
            if (answerInputs.length) {
                answerInputs.each(function() {
                    const $input = $(this);
                    const answerValue = $input.val() || $input.text() || $input.attr('value');
                    if (answerValue && answerValue.toLowerCase().includes(correctAnswer.toLowerCase())) {
                        $input.prop('checked', true).click(); // Check radio button or click option
                        console.log('Selected correct answer:', correctAnswer);
                    }
                });
            } else {
                console.log('No answer inputs found.');
                return;
            }

            // Wait briefly, then click "Next" (adjust selector based on Mathspace's structure)
            setTimeout(() => {
                const nextButton = $('.next-button, #next-question, button:contains("Next")'); // Example selectors—update with real ones
                if (nextButton.length) {
                    nextButton.click();
                    console.log('Pressed Next button.');
                } else {
                    console.log('No Next button found.');
                }
            }, 500); // Delay to ensure answer is registered (adjust as needed)

        } catch (error) {
            console.error('Error solving question:', error);
        }
    }

    // Hypothetical function to generate correct answer (replace with real logic)
    function generateCorrectAnswer(questionText) {
        // This is a placeholder—replace with actual Mathspace question-solving logic
        // For example, parse questionText for numbers, operations, or patterns, and return the correct answer
        if (questionText.includes('2 + 3')) return '5';
        if (questionText.includes('5 - 2')) return '3';
        if (questionText.includes('square root of 16')) return '4';
        console.log('No matching pattern for correct answer.');
        return null;
    }

    // Run the solver when a question is loaded or page changes
    $(document).ready(function() {
        solveMathspaceQuestion();

        // Use MutationObserver to detect new questions or page changes
        const observer = new MutationObserver((mutations) => {
            mutations.forEach(mutation => {
                if (mutation.addedNodes.length || mutation.type === 'attributes') {
                    solveMathspaceQuestion();
                }
            });
        });
        observer.observe(document.body, { childList: true, subtree: true, attributes: true });
    });

    // Poll for changes every 2 seconds as a fallback
    setInterval(solveMathspaceQuestion, 2000);
})();