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:
Niech ktoś powyższe wyjaśni

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