- 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
A* ist der klassische Wegfindungsalgorithmus in Spielen und Robotik. Er untersucht Zellen in der Reihenfolge von f = g + h, wobei g die bisher bezahlten Kosten sind und h eine heuristische Schätzung der noch verbleibenden Kosten.
Das Gitter enthält Kosten für jede Zelle: Das Betreten einer Zelle kostet ihren Wert, und 0 ist eine Wand, die nicht betreten werden kann. Du startest auf start (dessen Kosten werden nicht bezahlt) und darfst dich nach oben, unten, links oder rechts bewegen.
Verwende A* mit der Manhattan-Distanz |row - goal_row| + |col - goal_col| als Heuristik. Jede offene Zelle kostet mindestens 1, also überschätzt diese Heuristik nie und A* liefert eine optimale Antwort.
Implementiere a_star_cost(grid, start, goal).
Eingabe
grid: Eine Matrix der Zellkosten (0 = Wand).
start, goal: Positionen als [row, col].
Ausgabe
Gib die minimalen Gesamtkosten bis goal zurück, oder -1, wenn das Ziel nicht erreichbar ist (auch wenn start oder goal eine Wand ist).
Einschränkungen
1 ≤ Zeilen, Spalten ≤ 100
0 ≤ jede Kosten ≤ 9
Beispiele
Beispiel 1
Eingabe:
grid = [
[1, 1, 1],
[1, 0, 1],
[1, 1, 1]
]
start = [0, 0]
goal = [2, 2]
Erwartete Ausgabe:
4
Erläuterung
Die Mitte ist eine Wand. Zweimal nach rechts und zweimal nach unten (oder erst nach unten, dann nach rechts) betritt 4 Zellen mit Kosten 1, insgesamt 4.
Beispiel 2
Eingabe:
grid = [
[1, 9, 1],
[1, 9, 1],
[1, 1, 1]
]
start = [0, 0]
goal = [0, 2]
Erwartete Ausgabe:
6
Erläuterung
Die 9 direkt zu überqueren kostet 9 + 1 = 10. Nach unten, entlang der untersten Zeile und wieder nach oben betritt sechs Zellen mit Kosten 1, insgesamt 6.
Referenzen
-
Beispiel 1 Nicht ausgeführtEingabe:
grid = [ [1, 1, 1], [1, 0, 1], [1, 1, 1] ] start = [0, 0] goal = [2, 2]Erwartete Ausgabe:4Deine Ausgabe -
Beispiel 2 Nicht ausgeführtEingabe:
grid = [ [1, 9, 1], [1, 9, 1], [1, 1, 1] ] start = [0, 0] goal = [0, 2]Erwartete Ausgabe:6Deine 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.
Run Swift Online
Write, run, and debug Swift code online using a command-line Swift environment. Manage multiple files, save your workspace, and share code without installing Xcode.
🚀 19,043 Gesamt-Ausführungen (611 diesen Monat)
Übe Swift 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 Swift Online-Executor
Der CodeUtility Swift Executor ermöglicht es dir, Swift-Code direkt im Browser zu schreiben und auszuführen - ganz ohne Xcode, SDK oder macOS-Setup. Er verwendet echte Swift-Compiler in isolierten Sandboxes, um präzises, natives Swift-Verhalten zu liefern.
Dieses Tool unterstützt mehrere Swift-Versionen - 5.7, 5.9 und die neueste Version - und gibt dir die Flexibilität, neue Sprachfeatures zu erkunden und die Kompatibilität mit älteren Swift-Codebasen zu wahren.
Ideal für Entwickler, die Swift-Syntax lernen, Algorithmen testen oder mit Code für iOS, macOS und serverseitiges Swift experimentieren - ohne lokale Tools oder Simulatoren installieren zu müssen.
Jedes Snippet läuft sicher in einer containerisierten Swift-Umgebung und sorgt für echtes Compiler-Feedback und eine sichere Codeausfü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.
💡 Swift-Grundlagen für Einsteiger
1. Variablen und Konstanten deklarieren
Verwende var für Variablen und let für Konstanten in Swift.
var age = 30
let pi = 3.14159
var name = "Alice"
let isActive = true
// Konstanten können nicht neu zugewiesen werden
// pi = 3.14 // ❌ Fehler
2. Bedingungen (if / switch)
Verwende if, else if, else für Logik und switch für mehrere Zweige.
let number = 2
if number == 1 {
print("Eins")
} else if number == 2 {
print("Zwei")
} else {
print("Sonstiges")
}
switch number {
case 1:
print("Eins")
case 2:
print("Zwei")
default:
print("Sonstiges")
}
3. Schleifen
Swift unterstützt for-in-, while- und repeat-while-Schleifen.
for i in 0..<3 {
print(i)
}
var n = 3
while n > 0 {
print(n)
n -= 1
}
4. Arrays
Arrays speichern geordnete Sammlungen von Werten.
var numbers = [10, 20, 30]
print(numbers[1])
5. Array-Manipulation
Verwende Array-Methoden wie append und removeLast.
var nums = [1, 2, 3]
nums.append(4)
nums.removeLast()
for n in nums {
print(n)
}
6. Konsolen-Ein-/Ausgabe
Verwende print() für Ausgaben. Eingaben erfordern zusätzliche Arbeit in Swift Playgrounds oder Xcode.
let name = "Alice"
print("Hallo, \(name)")
7. Funktionen
Definiere wiederverwendbare Funktionen mit Parametern und Rückgabewerten.
func add(a: Int, b: Int) -> Int {
return a + b
}
print(add(a: 3, b: 4))
8. Dictionaries
Dictionaries speichern Schlüssel-Wert-Paare.
var ages = ["Alice": 30]
print(ages["Alice"] ?? 0)
9. Fehlerbehandlung
Swift verwendet do-catch für die Fehlerbehandlung.
enum MyError: Error {
case runtimeError(String)
}
do {
throw MyError.runtimeError("Etwas ist schiefgelaufen")
} catch let error {
print(error)
}
10. Datei-Ein-/Ausgabe
Swift verwendet FileManager oder String-Methoden für Datei-Ein-/Ausgabe.
let text = "Hallo Datei"
try text.write(toFile: "file.txt", atomically: true, encoding: .utf8)
let content = try String(contentsOfFile: "file.txt")
print(content)
11. String-Manipulation
Verwende Methoden wie count, contains, uppercased() usw.
let text = "Hallo Welt"
print(text.count)
print(text.contains("Welt"))
print(text.uppercased())
12. Klassen & Objekte
Swift unterstützt OOP mithilfe von class und init.
class Person {
var name: String
init(name: String) {
self.name = name
}
func greet() {
print("Hi, ich bin \(name)")
}
}
let p = Person(name: "Alice")
p.greet()
13. Optionals
Swift verwendet ? und !, um optionale Werte zu handhaben.
var name: String? = "Alice"
print(name ?? "Unbekannt")
if let unwrappedName = name {
print(unwrappedName)
}