- Ausführende
-
Lernen
Python lernen Ausführbare Beispiele, NumPy, pandas und mehr KI lernenNeuronale Netze, ML und LLMs von Grund auf C/C++ lernen Zeiger, Speicher, STL und modernes C++ C# lernenC#-Grundlagen, OOP, LINQ, Async und .NET-Übungen Matplotlib lernenLinien-, Balken-, Streu- und Kreisdiagramme mit interaktiven Visualisierungen Python-Algorithmen Suche, Sortierung, Rekursion und Visualisierungen O(n) C/C++-Algorithmen Implementierungen in C und C++ vergleichen Programmieren für Kinder Spielend programmieren lernen!
- AufgabenNeu
- Für LehrkräfteNeu
- Aktualisierungen
- Spendier mir einen Kaffee
Alpha-Beta-Pruning liefert dasselbe Ergebnis wie Minimax, überspringt aber Zweige, die das Ergebnis nicht ändern können. Es verfolgt zwei Schranken: alpha, die beste Bewertung, die MAX bereits sicher hat, und beta, die beste Bewertung, die MIN bereits sicher hat.
Der Spielbaum ist vollständig: Jeder innere Knoten hat branching Kinder, und alle Blätter liegen auf derselben Tiefe. leaves listet die Blattbewertungen von links nach rechts. Die Wurzel ist ein MAX-Knoten und die Ebenen wechseln sich ab: MAX, MIN, MAX, …
Durchsuche die Kinder von links nach rechts, beginnend mit alpha = -∞ und beta = +∞:
- 'An einem MAX-Knoten nach jedem Kind: best = max(best, value), dann alpha = max(alpha, best).'
- 'An einem MIN-Knoten nach jedem Kind: best = min(best, value), dann beta = min(beta, best).'
- Sobald alpha ≥ beta gilt, überspringe die restlichen Kinder des Knotens.
Implementiere alpha_beta(leaves, branching).
Eingabe
leaves: Die Blattbewertungen von links nach rechts; die Länge ist eine Potenz von branching.
branching: Kinder pro innerem Knoten.
Ausgabe
Gib [value, evaluated] zurück: den Minimax-Wert der Wurzel und die Anzahl der ausgewerteten Blätter.
Einschränkungen
2 ≤ branching ≤ 5, Länge von leaves = branching^depth mit 1 ≤ depth ≤ 8, höchstens 10.000 Blätter
-1.000 ≤ jedes Blatt ≤ 1.000
Beispiele
Beispiel 1
Eingabe:
leaves = [3, 12, 8, 2, 4, 6, 14, 5, 2]
branching = 3
Erwartete Ausgabe:
[3, 7]
Erläuterung
Der erste MIN-Knoten sieht 3, 12, 8 und gibt 3 zurück, also alpha = 3. Der zweite MIN-Knoten sieht 2, beta = 2 ≤ alpha, also werden 4 und 6 übersprungen. Der dritte sieht 14, 5, 2 und gibt 2 zurück. Der Wurzelwert ist max(3, 2, 2) = 3 nach 7 von 9 Blättern.
Beispiel 2
Eingabe:
leaves = [5, 6, 7, 4]
branching = 2
Erwartete Ausgabe:
[5, 4]
Erläuterung
Der linke MIN-Knoten wertet 5 und 6 aus und gibt 5 zurück, also alpha = 5. Der rechte MIN-Knoten wertet 7 aus (beta = 7), dann 4 (beta = 4 ≤ 5). Alle 4 Blätter werden ausgewertet und der Wert ist 5.
Referenzen
-
Beispiel 1 Nicht ausgeführtEingabe:
leaves = [3, 12, 8, 2, 4, 6, 14, 5, 2] branching = 3Erwartete Ausgabe:[3, 7]Deine Ausgabe -
Beispiel 2 Nicht ausgeführtEingabe:
leaves = [5, 6, 7, 4] branching = 2Erwartete Ausgabe:[5, 4]Deine Ausgabe
4 versteckte Tests werden beim Einreichen ebenfalls ausgeführt. Scheitert dein Code an einem, siehst du diesen Test. Löse die Aufgabe, um alle zu sehen.
Online JavaScript Runner
Write, run, and debug JavaScript or Node.js online in a full-featured browser IDE. Work with multiple files and packages, save your workspace, and collaborate in real time.
🚀 339,661 Gesamt-Ausführungen (665 diesen Monat)
Übe JavaScript mit Coding Challenges
Löse praktische Aufgaben direkt im Editor: Führe die Beispieltests aus, reiche ein und erhalte ein KI-Code-Review.
⚡ Über diesen JavaScript-(Node.js)-Online-Executor
Der CodeUtility JavaScript Executor ermöglicht es dir, modernen JavaScript-Code direkt im Browser zu schreiben und auszuführen - sofort und ohne Einrichtung. Er verwendet echte Node.js-Umgebungen, um deinen Code sicher in einem abgesicherten (Sandbox-)Container auszuführen, und unterstützt die Versionen 16, 18 und 20.
Dieses Tool ist ideal, um Node.js-Snippets zu testen, ES6+-Syntax zu erkunden oder grundlegende JavaScript-Konzepte wie Schleifen, Funktionen, Arrays, Promises und das Verhalten von async/await zu lernen.
Du kannst es auch verwenden, um Algorithmen zu überprüfen, kleine Skripte zu debuggen oder mit Laufzeitlogik zu experimentieren, ohne Node lokal zu installieren. Es ist ideal für Lernende, Backend-Entwicklerinnen und -Entwickler oder alle, die eine schnelle, browserbasierte Möglichkeit benötigen, JavaScript-Code auszuführen.
Mehr als nur ein Code-Runner
Nutzen Sie im selben Executor einen Editor für mehrere Dateien, ein isoliertes Ausführungsterminal, laufzeitspezifische Bibliotheken, persistente Arbeitsbereiche, Freigaben und Zusammenarbeit in Echtzeit.
Wie verwende ich diesen Executor?
Wählen Sie eine Laufzeit aus, öffnen oder erstellen Sie eine Datei, schreiben Sie Ihren Code und wählen Sie Ausführen. Die Ausgabe erscheint im Terminal. Angemeldete Benutzer können Dateien in einem Arbeitsbereich speichern, Bibliotheken installieren und über Freigaben zusammenarbeiten.
- Wählen Sie eine Version aus und bearbeiten Sie die aktuelle Datei oder öffnen Sie eine andere Datei aus dem Arbeitsbereich.
- Führen Sie den Code aus, geben Sie bei Aufforderung Daten im Terminal ein und prüfen Sie den gespeicherten Ausführungsverlauf.
- Nutzen Sie Bibliotheken, Arbeitsbereichswerkzeuge, Freigaben und den Chat, wenn Ihre Aufgabe mehr als ein einzelnes Codefragment erfordert.
💡 Node.js-Grundlagen-Leitfaden für Einsteigerinnen und Einsteiger
1. Variablen und Konstanten deklarieren
Verwende let oder const für Variablen mit Block-Scope. const wird für Konstanten verwendet.
let x = 10;
const PI = 3.14;
let name = "Alice";
let isActive = true;
2. Verzweigungen (if / switch)
Verwende if, else if, else oder switch für den Kontrollfluss.
let x = 2;
if (x === 1) {
console.log("Eins");
} else if (x === 2) {
console.log("Zwei");
} else {
console.log("Sonstiges");
}
switch (x) {
case 1:
console.log("Eins");
break;
case 2:
console.log("Zwei");
break;
default:
console.log("Sonstiges");
}
3. Schleifen
Verwende for, while und forEach, um über Daten zu iterieren.
for (let i = 0; i < 3; i++) {
console.log(i);
}
let n = 3;
while (n > 0) {
console.log(n);
n--;
}
4. Arrays
Verwende Arrays, um geordnete Wertelisten zu speichern. Greife über Indizes darauf zu.
let fruits = ["apfel", "banane", "kirsche"];
console.log(fruits[0]);
console.log(fruits.length);
5. Array-Manipulation
Verwende Methoden wie push, pop, slice und reverse.
fruits.push("kiwi");
fruits.pop();
console.log(fruits.slice(0, 2));
console.log(fruits.reverse());
let squares = [1, 2, 3, 4, 5].map(x => x * x);
console.log(squares);
6. Konsolen-Ein-/Ausgabe
Verwende console.log für Ausgaben und das readline-Modul für Eingaben.
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question("Wie heißt du? ", name => {
console.log(`Hallo, ${name}`);
rl.close();
});
7. Funktionen
Funktionen können deklariert oder als Ausdruck definiert werden. Pfeilfunktionen werden in modernem JavaScript häufig verwendet.
function greet(name) {
return `Hallo, ${name}`;
}
const add = (a, b) => a + b;
console.log(greet("Alice"));
console.log(add(2, 3));
8. Objekte (Maps)
Objekte speichern Schlüssel-Wert-Paare. Sie ähneln Dictionaries bzw. Maps.
let person = { name: "Bob", age: 25 };
console.log(person.name);
console.log(person["age"]);
// ES6-Map
const map = new Map();
map.set("a", 1);
console.log(map.get("a"));
9. Fehlerbehandlung
Verwende try, catch und finally, um Fehler sicher zu behandeln.
try {
throw new Error("Etwas ist schiefgelaufen");
} catch (e) {
console.log(e.message);
} finally {
console.log("Aufräumen, falls nötig");
}
10. Datei-I/O
Verwende das fs-Modul von Node.js, um Dateien zu lesen und zu schreiben.
const fs = require("fs");
fs.writeFileSync("test.txt", "Hallo Datei");
const data = fs.readFileSync("test.txt", "utf8");
console.log(data);
11. String-Manipulation
Verwende Methoden wie trim(), toUpperCase(), replace() und split().
let text = " Hallo Welt ";
console.log(text.trim());
console.log(text.toUpperCase());
console.log(text.replace("Hallo", "Hi"));
console.log(text.split(" "));
12. Klassen & Objekte
ES6+ unterstützt OOP mit class-Syntax.
class Person {
constructor(name) {
this.name = name;
}
greet() {
return `Hi, ich bin ${this.name}`;
}
}
const p = new Person("Alice");
console.log(p.greet());
13. Referenzen
Objekte und Arrays in JavaScript werden per Referenz übergeben.
function update(arr) {
arr.push("geändert");
}
let data = ["ursprünglich"];
update(data);
console.log(data); // ["ursprünglich", "geändert"]