- 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 Kotlin Compiler
Write, compile, run, and debug Kotlin code online in a full-featured browser IDE. Work with multiple files, save your workspace, and collaborate in real time.
🚀 71,457 Gesamt-Ausführungen (576 diesen Monat)
Übe Kotlin 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 Kotlin-Online-Executor
Der CodeUtility Kotlin Executor lässt dich Kotlin-Code direkt im Browser schreiben, kompilieren und ausführen - ganz ohne Installation, IDE oder SDK-Setup. Er nutzt echte Kotlin-Compiler in isolierten Sandbox-Umgebungen für eine sichere und authentische Ausführung.
Dieses Tool unterstützt mehrere Kotlin-Versionen - 1.6, 1.9 und 2.1 - damit du Syntax-Updates erkunden, Code-Kompatibilität testen und mit modernen Sprachfeatures wie Coroutines, Data Classes und Sealed Interfaces experimentieren kannst.
Ideal für Studierende, die Kotlin-Grundlagen lernen, Android-Entwickler, die mit Snippets experimentieren, oder Backend-Ingenieure, die Logik in einer JVM-Umgebung testen möchten, ohne den Browser zu verlassen.
Die Umgebung führt jedes Snippet in einer sicheren, containerisierten Laufzeit aus und sorgt so für konstante Performance und sichere Code-Ausführung.
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.
💡 Kotlin-Grundlagen-Leitfaden für Anfänger
1. Variablen und Konstanten deklarieren
Kotlin verwendet val für unveränderliche Variablen und var für veränderliche.
val name: String = "Alice"
var age: Int = 30
val pi = 3.14 // Typ wird abgeleitet
// Konstanten
const val MAX_USERS = 100
2. Bedingungen (if / when)
Verwende if-Ausdrücke oder when für mehrere Fälle.
val x = 2
if (x == 1) {
println("Eins")
} else if (x == 2) {
println("Zwei")
} else {
println("Sonstiges")
}
when (x) {
1 -> println("Eins")
2 -> println("Zwei")
else -> println("Sonstiges")
}
3. Schleifen
Verwende for, while und do-while für Iterationen.
for (i in 0..2) {
println(i)
}
var n = 3
while (n > 0) {
println(n)
n--
}
4. Arrays
Kotlin unterstützt Arrays über die Funktion arrayOf().
val numbers = arrayOf(10, 20, 30)
println(numbers[1])
5. Listenmanipulation
Verwende mutableListOf für dynamische Listen.
val nums = mutableListOf(1, 2, 3)
nums.add(4)
nums.removeAt(0)
for (n in nums) {
print("$n ")
}
6. Konsolen-Ein-/Ausgabe
Verwende readLine() für Eingaben und println() für Ausgaben.
print("Gib deinen Namen ein: ")
val name = readLine()
println("Hallo, $name")
7. Funktionen
Funktionen verwenden das Schlüsselwort fun mit optionalem Rückgabetyp.
fun add(a: Int, b: Int): Int {
return a + b
}
println(add(3, 4))
8. Maps
mutableMapOf speichert Schlüssel-Wert-Paare.
val ages = mutableMapOf("Alice" to 30)
println(ages["Alice"])
9. Ausnahmebehandlung
Verwende try, catch und finally, um Fehler zu behandeln.
try {
val result = 10 / 0
} catch (e: ArithmeticException) {
println("Fehler: ${e.message}")
}
10. Datei-Ein-/Ausgabe
Verwende File aus java.io für Dateioperationen.
import java.io.File
File("file.txt").writeText("Hallo Datei")
val text = File("file.txt").readText()
println(text)
11. String-Manipulation
Kotlin-Strings unterstützen viele Methoden sowie Interpolation.
val text = "Hallo Welt"
println(text.length)
println(text.substring(0, 5))
println(text.contains("Welt"))
12. Klassen & Objekte
Kotlin-Klassen sind prägnant und unterstützen Standardkonstruktoren.
class Person(val name: String) {
fun greet() = println("Hi, ich bin $name")
}
val p = Person("Alice")
p.greet()
13. Null-Sicherheit
Kotlin unterscheidet nullbare und nicht-nullbare Typen. Verwende ? und ?: für Sicherheit.
val name: String? = null
println(name?.length ?: 0)