Mathspace Auto-Answer and Auto-Next

Automatically answers Mathspace questions correctly and presses Next.

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 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);
})();