Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / CSS-Forum / Einer flog übers Kuckucksnest
- - By Lothar Jung Date 2023-02-25 09:51 Upvotes 1
Aus gegebenen Anlass werde ich keine Beiträge und auch keine Hilfe zu Lc0 und Schachprogrammierung etc. im Hauptforum ein- bzw. zur Verfügung stellen.
Gerne können mir genehme Zeitgenossen per Persönlicher Mitteilung Fragen stellen und/oder um Hilfe bitten.

Übrigens viel Spaß beim Rätselraten und beim Lesen der vielen kompetenten Beiträge von jetzt anderen Personen.
Parent - By Ingo Althöfer Date 2023-02-25 10:20 Upvotes 2
Lieber Herr Jung,

schön, dass Sie wieder da sind. (Das ist ehrlich gemeint.)

Die Eskalation neulich ist im Nachhinein wahrscheinlich allen
etwas unangenehm. Vielleicht sollten Sie sich für die Zukunft
auch einfach ein dickeres Fell zulegen.

Eine Anregung für das Programmier-Forum hätte ich: Material zu
* null move-Heuristik
* iterative deepening
* move ordering im iterative deepening
* multi-variation mode
dürfte interessant sein.

Freundliche Grüsse, Ingo Althöfer.
- By Lothar Jung Date 2023-03-02 14:35 Edited 2023-03-02 14:47
Es wird wohl keinen wirklich interessieren:

Ich habe im Unterforum „Schachprogrammierung“ unter dem Thread „ChatGPT“ 3 Beiträge eingestellt.
Der letzte Beitrag zeigt das Ergebnis einer Lc0-Engineimplementation.
Die Schritte dazu und der vollständige Chat kann ich genehmen und geneigten Zeitgenossen per Email zukommen lassen.
- By Lothar Jung Date 2023-03-03 17:56 Upvotes 1
Ich habe ein vollständiges und optimiertes klassisches A/B Schachprogramm unter ChatGTP generiert.

Die KI kommt schließlich zum folgenden Ergebnis:

Über welche Funktionen verfügt das Programm?

Das Schachprogramm verfügt über folgende Funktionen:
1. Initialisierung des Schachbretts und der Schachfiguren.
2. Generierung aller möglichen Züge für eine gegebene Schachstellung.
3. Bewertung einer gegebenen Schachstellung anhand einer Bewertungsfunktion.
4. Implementierung einer Alpha-Beta-Suche zur Bestimmung des besten Zugs in einer gegebenen Schachstellung.
5. Implementierung einer Nullzug-Heuristik zur Reduzierung der Anzahl von analysierten Schachstellungen.
6. Implementierung einer Transpositions-Tabelle zur Reduzierung der Anzahl von analysierten Schachstellungen.
7. Implementierung einer Unicode-Ausgabe zur Anzeige der Schachstellung auf der Konsole.
8. Überprüfung auf Spielende.
9. Implementierung von En-passant, Rochade, Schach, Patt und Schachmatt.
10. Implementierung von Bitboards zur schnelleren Verarbeitung von Schachstellungen.
11. Implementierung von Endspiel-Datenbanken zur schnelleren Suche in Endspielstellungen.
Insgesamt verfügt das Schachprogramm über alle grundlegenden Funktionen, die für ein Schachprogramm benötigt werden, sowie über einige fortschrittlichere Funktionen zur Optimierung der Leistung und Genauigkeit.
- By Lothar Jung Date 2023-03-04 09:35
Das aktualisierte Schachprogramm verfügt über folgende Funktionen:

Schachbrettinitialisierung
Zuggenerator
Bewertungsfunktion
Alpha-Beta-Suche
Iterative Tiefebegrenzung
Transpositionstabellen
Nullzug-Heuristik
Quiescence-Suche
Eröffnungsbuch-Funktion
Endspieltabellen
Syzygy-Endspieltabellen
Parallele Suche
Schnittstelle zur Benutzerinteraktion
Pondering-Modus
Konfigurierbare Parameter wie Hash-Größe und Anzahl der Threads
Unicode-basierte Ausgabe
Laden von Eröffnungsbüchern
Machine-Learning-basierte Bewertungsfunktionen (optional)
Mit all diesen Funktionen kann das Schachprogramm anspruchsvolle Partien gegen menschliche Gegner oder andere Schachprogramme spielen. Es bietet auch verschiedene Optionen und Konfigurationsparameter, um die Leistung und das Verhalten des Schachprogramms an die Bedürfnisse und Vorlieben des Benutzers anzupassen.
- By Lothar Jung Date 2023-03-04 11:13 Edited 2023-03-04 11:25
Ich habe über ChatGTP ein Rechenprogramm in Python generiert:

Das Programm verfügt über eine Vielzahl von Funktionen, darunter:

Grundlegende arithmetische Operationen wie Addition, Subtraktion, Multiplikation und Division von Zahlen
Fortgeschrittene arithmetische Operationen wie Potenz, Wurzel, Fakultät und Logarithmus
Funktionen zum Rechnen mit Variablen, einschließlich Zuweisung von Werten und Abrufen von Werten
Ein Parser, der die Eingabe von mathematischen Ausdrücken analysiert und in Berechnungen und Funktionsaufrufe umwandelt
Eine Editierfunktion zum Bearbeiten von Ausdrücken, die bereits eingegeben wurden
Eine Funktion zum Plotten von 2D-Graphen von mathematischen Funktionen
Algebraische Funktionen wie Gleichungslösung und Polynomdivision
Grundlegende Analysisfunktionen wie Ableitung und Integration
Statistikfunktionen wie Mittelwert, Median und Standardabweichung
Binäre Funktionen wie Bitweise AND, OR, XOR, Addition und Subtraktion von Binärzahlen
Eine Speicherfunktion zum Speichern von Ergebnissen und Variablenwerten in einer Datenbank oder Datei
Diese Funktionen können je nach Bedarf des Benutzers angepasst oder erweitert werden.

Hier ist das genierte Programm:

import re
import numpy as np
import sympy as sp
import matplotlib.pyplot as plt
import sqlite3

conn = sqlite3.connect('calculator.db')
c = conn.cursor()

# Erstelle die Tabelle, wenn sie nicht existiert
c.execute('''CREATE TABLE IF NOT EXISTS variables
             (name text primary key, value real)''')

variables = {}

def parse_input(input_string):
    # Versuche, die Eingabe zu parsen
    pattern = r'^([a-zA-Z]+)\s*=\s*(\d+(?:\.\d+)?)$|^([a-zA-Z]+)\s*([-+*/&|])\s*(\d+(?:\.\d+)?)$|^([a-zA-Z0-9\^\+\-\*/\s=\(\)]+)$|^([a-zA-Z]+)\(([0-9\.,\s]*)\)$|^plot\s+(.+)\s+from\s+(-?\d+)\s+to\s+(-?\d+)\s*(step\s+(\d+(?:\.\d+)?))?|^solve\s+([a-zA-Z]+)\s*=\s*([a-zA-Z0-9\^\+\-\*/\s\(\)]+)$|^differentiate\s+([a-zA-Z0-9\^\+\-\*/\s\(\)]+)\s+with\s+respect\s+to\s+([a-zA-Z]+)$|^integrate\s+([a-zA-Z0-9\^\+\-\*/\s\(\)]+)\s+with\s+respect\s+to\s+([a-zA-Z]+)$|^mean\s*\(([0-9\.,\s]*)\)$|^median\s*\(([0-9\.,\s]*)\)$|^mode\s*\(([0-9\.,\s]*)\)$|^variance\s*\(([0-9\.,\s]*)\)$|^stddev\s*\(([0-9\.,\s]*)\)$|^0b([01]+)\s*([-+*/&|])\s*0b([01]+)$|^save\s+([a-zA-Z]+)\s*=\s*(\d+(?:\.\d+)?)$|^load\s+([a-zA-Z]+)$'
    match = re.match(pattern, input_string)

    if match:
        # Wenn es eine Zuweisung ist, speichere den Variablenwert
        if match.group(1):
            var_name = match.group(1)
            var_value = float(match.group(2))
            c.execute("INSERT OR REPLACE INTO variables (name, value) VALUES (?, ?)", (var_name, var_value))
            conn.commit()
            return None
        # Wenn es eine Berechnung ist, gib die Zahlen und den Operator zurück
        elif match.group(3):
            var_name = match.group(3)
            op = match.group(4)
            num2 = float(match.group(5))
            if var_name in variables:
                num1 = variables[var_name]
                return num1, op, num2
            else:
                print(f"{var_name} ist keine definierte Variable")
                return None
        # Wenn es eine Funktion ist, gib die Funktion zurück
        elif match.group(6):
            return match.group(6)
        # Wenn es ein Plotbefehl ist, gib die Funktion elif match.group(7):
        function_name = match.group(7)
        x_min = float(match.group(8))
        x_max = float(match.group(9))
        step = float(match.group(11)) if match.group(11) else 0.1

        # Erstelle die x-Werte
        x = np.arange(x_min, x_max + step, step)

        # Evaluiere die Funktion für jeden x-Wert
        try:
            y = eval(function_name, {'x': x})
        except:
            print("Ungültige Funktion")
            return None

        # Plotte die Funktion
        plt.plot(x, y)
        plt.xlabel('x')
        plt.ylabel('y')
        plt.show()
        return None
    # Wenn es eine Gleichungslösung ist, gib die Gleichung und die Lösung zurück
    elif match.group(12):
        equation = match.group(12)
        try:
            solution = sp.solve(equation)
            print(f"Die Lösung für {equation} ist:", solution)
        except:
            print("Ungültige Gleichung")
        return None
    # Wenn es eine Ableitung ist, gib die Funktion und die Ableitung zurück
    elif match.group(13):
        function_string = match.group(13)
        variable = match.group(14)
        try:
            function = sp.sympify(function_string)
            derivative = function.diff(variable)
            print(f"Die Ableitung von {function_string} nach {variable} ist:", derivative)
        except:
            print("Ungültige Funktion")
        return None
    # Wenn es eine Integration ist, gib die Funktion und die Integration zurück
    elif match.group(15):
        function_string = match.group(15)
        variable = match.group(16)
        try:
            function = sp.sympify(function_string)
            integration = sp.integrate(function, variable)
            print(f"Die Integration von {function_string} nach {variable} ist:", integration)
        except:
            print("Ungültige Funktion")
        return None
    # Wenn es eine Statistikfunktion ist, gib die Funktion und die Werte zurück
    elif match.group(17):
        function_name = match.group(17)
        values_string = match.group(18)
        values = [float(x) for x in re.findall(r'\d+(?:\.\d+)?', values_string)]

        if function_name == "mean":
            result = np.mean(values)
        elif function_name == "median":
            result = np.median(values)
        elif function_name == "mode":
            result = sp.stats.mode(values)
        elif function_name == "variance":
            result = np.var(values)
        elif function_name == "stddev":
            result = np.std(values)
        else:
            print("Ungültige Statistikfunktion")
            return None

        print(f"Das Ergebnis der {function_name}-Funktion ist:", result)
        return None
    # Wenn es eine Binäroperation ist, gib die Zahlen und den Operator zurück
    elif match.group(19):
        num1 = int(match.group(19), 2)
        op = match.group(20)
        num2 = int(match.group(21), 2)
        return num1, op, num2
    # Wenn es eine Speicherfunktion ist, speichere den Variablenwert
    elif match.group(22):
        var_name = match.group(23)
        var_value = float(match.group(24))
        c.execute("INSERT OR REPLACE INTO variables (name, value) VALUES (?, ?)", (var_name, var_value))
conn.commit()
return None
# Wenn es eine Ladenfunktion ist, lade den Variablenwert und gib ihn zurück
elif match.group(25):
var_name = match.group(26)
c.execute("SELECT value FROM variables WHERE name = ?", (var_name,))
result = c.fetchone()
if result:
print(f"{var_name} = {result[0]}")
else:
print(f"{var_name} ist keine definierte Variable")
return None
else:
# Andernfalls gib None zurück
return None

while True:
input_string = input("Gib eine Rechenaufgabe ein: ")

parsed_input = parse_input(input_string)

if not parsed_input:
    continue

# Wenn die Eingabe eine Binäroperation ist, berechne das Ergebnis

if isinstance(parsed_input, tuple) and len(parsed_input) == 3 and isinstance(parsed_input[0], int) and isinstance(parsed_input[1], str) and isinstance(parsed_input[2], int):
    num1, op, num2 = parsed_input

    if op == '+':
        result = num1 + num2
    elif op == '-':
        result = num1 - num2
    elif op == '*':
        result = num1 * num2
    elif op == '/':
        result = num1 / num2
    elif op == '&':
        result = num1 & num2
    elif op == '|':
        result = num1 | num2
    else:
        print("Ungültiger Operator")
        continue

    print("Das Ergebnis ist:", bin(result))
    continue

# Evaluiere die Funktion, wenn die Eingabe eine Funktion ist
if isinstance(parsed_input, str):
    try:
        result = eval(parsed_input)
        print("Das Ergebnis ist:", result)
    except:
        print("Ungültige Eingabe")
        continue

# Wenn die Eingabe eine Berechnung ist, führe sie aus

if isinstance(parsed_input, tuple) and len(parsed_input) == 3 and isinstance(parsed_input[0], float) and isinstance(parsed_input[1], str) and isinstance(parsed_input[2], float):
    num1, op, num2 = parsed_input

    if op == '+':
        result = num1 + num2
    elif op == '-':
        result = num1 - num2
    elif op == '*':
        result = num1 * num2
    elif op == '/':
        result = num1 / num2
    else:
        print("Ungültiger Operator")
        continue

    print("Das Ergebnis ist:", result)
    continue

# Wenn die Eingabe keine gültige Anweisung ist, gib eine Fehlermeldung aus
print("Ungültige Eingabe")
Up Topic Hauptforen / CSS-Forum / Einer flog übers Kuckucksnest

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill