Zweryfikowane z kategorii matematyka przez Google Gemini

Reszta to kwestia czasu.

(draft)

1. Obliczanie liczby protonów, elektronów neutronów oraz masy atomowej.

Kod (wygenerowany przez Gemini):

#include <iostream>
#include <vector>
#include <string>
#include <cmath>
#include <numeric>

using namespace std;

// --- ELEMENTARNE FUNKCJE LOGICZNE ---

// "Wybór odpowiedniej liczby" z bloku (Suma cyfr)
// Przekształca kod wizualny (np. "2222") na wartość obliczeniową (8)
int getBlockValue(string block) {
    int sum = 0;
    for (char c : block) {
        if (isdigit(c)) {
            sum += (c - '0');
        }
    }
    return sum;
}

// Sprawdzanie czy liczba jest pierwsza
bool isPrime(int n) {
    if (n <= 1) return false;
    for (int i = 2; i <= sqrt(n); i++) {
        if (n % i == 0) return false;
    }
    return true;
}

// --- STRUKTURA DANYCH PIERWIASTKA ---

struct ElementData {
    int angle;                      // Numer porządkowy (Z)
    vector<vector<string>> table;   // Tabela 2D bloków
    int table_sum_provided;         // Dostarczona suma kontrolna
    bool is_sum_prime;

    // Protony i Elektrony = Wartość bezwzględna numeru angle
    int getProtons() const { return abs(angle); }
    int getElectrons() const { return abs(angle); }

    // Obliczanie Neutronów (N)
    // Według algorytmu, jądro (neutrony) jest zakodowane w pierwszych 3 rzędach tabeli
    int getNeutrons() const {
        int n_sum = 0;
        // Sumujemy wartości (sumy cyfr) bloków z rzędów 0, 1 i 2
        for (int i = 0; i < 3 && i < table.size(); ++i) {
            for (const string& block : table[i]) {
                n_sum += getBlockValue(block);
            }
        }
        return n_sum;
    }

    // Weryfikacja spójności danych: czy suma cyfr wszystkich bloków = table_sum
    bool verifyTableSum() const {
        int total = 0;
        for (const auto& row : table) {
            for (const string& block : row) {
                total += getBlockValue(block);
            }
        }
        return total == table_sum_provided;
    }
};

// --- FUNKCJA RAPORTUJĄCA ---

void generateElementReport(const ElementData& e) {
    cout << ">>> RAPORT DLA PIERWIASTKA (Angle: " << e.angle << ") <<<" << endl;
    cout << "Liczba Protonów (P):  " << e.getProtons() << endl;
    cout << "Liczba Elektronów (E): " << e.getElectrons() << endl;
    cout << "Liczba Neutronów (N):  " << e.getNeutrons() << " [Wyliczone z bloków jądrowych]" << endl;
    cout << "Suma Kontrolna:        " << (e.verifyTableSum() ? "ZGODNA" : "BŁĄD")
         << " (" << e.table_sum_provided << ")" << endl;
    cout << "Suma jest Pierwsza:    " << (isPrime(e.table_sum_provided) ? "TAK" : "NIE") << endl;
    cout << "-----------------------------------------------" << endl << endl;
}

int main() {
    // PRZYKŁAD 1: Dane z Angle -200 (Pierwszy rekord z data.txt)
    ElementData eNeg200;
    eNeg200.angle = -200;
    eNeg200.table_sum_provided = 59;
    eNeg200.table = {
        {"3", "22", "2", "0"},       // Rząd 0 (Jądro)
        {"333", "3", "333", "33"},   // Rząd 1 (Jądro)
        {"0", "3", "33", "3"},       // Rząd 2 (Jądro)
        {"2", "0", "0", "0"},       // Rząd 3 (Warstwa e-)
        {"1", "33", "0", "0"},       // Rząd 4 (Warstwa e-)
        {"2", "0", "0", "0"}        // Rząd 5 (Warstwa e-)
    };

    // PRZYKŁAD 2: Dane z Angle 10 (Neon)
    ElementData eNeon;
    eNeon.angle = 10;
    eNeon.table_sum_provided = 29;
    eNeon.table = {
        {"1", "7"},
        {"333", "2222"},
        {"0", "1"},
        {"1", "0"},
        {"1", "0"},
        {"1", "0"}
    };

    generateElementReport(eNeg200);
    generateElementReport(eNeon);

    return 0;
}

Wielocyfrowy blok pochodzi z pliku: https://github.com/HudHatman/primary_numbers/blob/master/primary_symmetry/data/5_data.txt

A pierwszy tego rodzaju został stworzony w roku 2019: https://github.com/HudHatman/primary_numbers/blob/737e3b91e845249edfd47cb43d5fa701d6f3e36e/primary_1/cmake-build-debug/symmetry.txt#L4

Dodając do tego metodę liczenia masy atomowej:

double getAtomicMass() const {
    double protonMass = 1.007276;
    double neutronMass = 1.008665;
    double electronMass = 0.000548;

    int P = getProtons();
    int N = getNeutrons();
    int E = getElectrons();

    // Suma mas składników (bez uwzględnienia deficytu masy / energii wiązania)
    return (P * protonMass) + (N * neutronMass) + (E * electronMass);
}

Dla pierwiastka Neon wychodzi wynik: 36.3035.

Gemini mówi:

Wynik z Twojego kodu: Dla eNeon (Angle 10), Twój algorytm sumuje neutrony z pierwszych trzech rzędów:

  • Rząd 0: $1+7 = 8$
  • Rząd 1: $3+3+3 + 2+2+2+2 = 17$
  • Rząd 2: $0+1 = 1$
  • Suma Neutronów ($N$) = 26
  • Protony ($P$) = 10
  • Liczba masowa ($A$) = 36

Rzeczywistość: Neon-20 ma 10 neutronów. Masa $20.180$ to średnia ważona izotopów występujących w przyrodzie (głównie $^{20}Ne$ oraz $^{22}Ne$).

Wniosek: Twój model danych dla eNeon opisuje bardzo ciężki, hipotetyczny izotop Neonu ($^{36}Ne$). Aby otrzymać masę bliską $20.180$, suma cyfr w pierwszych trzech rzędach tabeli dla Neonu powinna wynosić około 10.

Oczywiście Neon posiada rzekomo 10 neutronów więc tabela dotyczy (dla Neonu) jego hipotetycznego izotopu, który posiada 26 neutronów, a 36Neon posiada 26 neutronów – mówi Google.

Masa Neonu wg Google będąca średnią wszystkich występujących na Ziemii: 20.1797

Dla:

eNeon.table = {
        {"1", "5"},
        {"1", "2"},
        {"0", "1"},
        {"1", "0"},
        {"1", "0"},
        {"1", "0"}
    };

Masa obliczana wynosi: 20.1649

Tak więc skoro podają ogólny wynik średniej ważonej: 20.1797 blok liczb określałby ten izotop najczęściej występujący.

Zostały skreślone wszystkie powtarzające się liczby oraz największa (7) pomniejszona o dwa rzędy ciągu liczb pierwszych. Po tym zabiegu liczba neutronów wynosi 10 czyli zgodnie z tym co pisze Google, masa wtedy wynosi 20.1649 co w związku z użyciem średniej ważonej – jest to jedna z najbardziej prawdopodobnych mas najczęściej występującego izotopu na Ziemii.

Skreślono: 3 dwójki, 2 trójki, odjęto jeden rząd w szeregu liczb pierwszych (przesunięcie wstecz)

To dlatego: 3^2 + 2^3 = 17 a to jest liczbą pierwszą.

Dodając sumę wszystkich liczb, a to 13 czyli liczba pierwsza:

17+13 = 30, a dodając jedno przesunięcie na rzędzie liczb pierwszych w lewo (minus)

30 + (-1) = 29: liczba pierwsza.

To może nie być reguła. Zatem stworzymy nowy algorytm, który zgodnie z tym przykładem zadziała na innym przykładzie.

2. W jaki sposób powstało:

Mając na uwadze kod źródłowy napisany w języku C++ oraz w skryptowym języku Python:

https://www.dropbox.com/scl/fo/gai6jp23njfrkt5d8dzea/AGskVjboWlu_ZtCTbIuh0OU?rlkey=0qc7vp8y8flcgs4m35tc9mx9a&st=em0aga2e&dl=0

Niech ktoś powyższe wyjaśni

Że to co powstało przypadkiem nie będzie…

(todo)

Dodaj komentarz