- 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
K-nächste Nachbarn (KNN) klassifiziert einen neuen Punkt, indem es die k Trainingspunkte betrachtet, die ihm am nächsten liegen, und das häufigste Label nimmt.
- Berechne den euklidischen Abstand von
queryzu jedem Punkt. - Sortiere die Punkte nach Abstand; bei gleichen Abständen kommt der Punkt mit dem kleineren Index zuerst.
- Nimm die ersten k Punkte und zähle ihre Labels.
- Gib das Label mit den meisten Stimmen zurück. Bei Gleichstand gib das Label zurück, dessen nächster Punkt in der sortierten Reihenfolge zuerst kommt.
Implementiere knn_predict(points, labels, query, k).
Eingabe
points: Die Trainingspunkte, jeweils eine Liste von Koordinaten.
labels: Das Label jedes Punkts.
query: Der zu klassifizierende Punkt.
k: Wie viele Nachbarn abstimmen.
Ausgabe
Gib das vorhergesagte Label zurück.
Einschränkungen
1 ≤ k ≤ Anzahl der Punkte ≤ 1.000
1 ≤ Dimensionen ≤ 20
-1.000 ≤ jede Koordinate ≤ 1.000
Beispiele
Beispiel 1
Eingabe:
points = [
[1.0, 1.0],
[2.0, 2.0],
[8.0, 8.0],
[9.0, 9.0]
]
labels = ["A", "A", "B", "B"]
query = [3.0, 3.0]
k = 3
Erwartete Ausgabe:
"A"
Erläuterung
Abstände von (3, 3): (2, 2) ≈ 1.41, (1, 1) ≈ 2.83, (8, 8) ≈ 7.07. Die 3 nächsten Labels sind A, A und B, also ist die Antwort A.
Beispiel 2
Eingabe:
points = [
[0.0, 0.0],
[4.0, 0.0],
[0.0, 4.0],
[4.0, 4.0]
]
labels = ["red", "blue", "blue", "red"]
query = [1.0, 1.0]
k = 2
Erwartete Ausgabe:
"red"
Erläuterung
Der nächste Punkt ist (0, 0) (red); die nächsten beiden, (4, 0) und (0, 4), haben denselben Abstand, also gewinnt der kleinere Index (4, 0) (blue). Red und blue haben je eine Stimme, und der Punkt von red kam zuerst, also ist die Antwort red.
Referenzen
-
Beispiel 1 Nicht ausgeführtEingabe:
points = [ [1.0, 1.0], [2.0, 2.0], [8.0, 8.0], [9.0, 9.0] ] labels = ["A", "A", "B", "B"] query = [3.0, 3.0] k = 3Erwartete Ausgabe:"A"Deine Ausgabe -
Beispiel 2 Nicht ausgeführtEingabe:
points = [ [0.0, 0.0], [4.0, 0.0], [0.0, 4.0], [4.0, 4.0] ] labels = ["red", "blue", "blue", "red"] query = [1.0, 1.0] k = 2Erwartete Ausgabe:"red"Deine Ausgabe
5 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 Rust Compiler
Write, compile, run, and debug Rust code online in a full-featured browser IDE. Work with multiple files, save your workspace, and share or collaborate in real time.
🚀 252,702 Gesamt-Ausführungen (135 diesen Monat)
Übe Rust 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 Rust-Online-Executor
Der CodeUtility Rust Executor ermöglicht es dir, Rust-Code direkt in deinem Browser zu schreiben und auszuführen - keine Installation, kein Toolchain-Setup und keine lokale Umgebung nötig. Er wird von einer sicheren Sandbox betrieben, die echte Rust-Compiler-Versionen 1.70, 1.72, 1.73 und 1.74 unterstützt.
Dieses Tool kompiliert und führt deine Rust-Programme in der Cloud mit einem echten rustc-Compiler aus,
was genaue und konsistente Ergebnisse sicherstellt. Du kannst ganz einfach mit Variablen, Ownership, Borrowing,
Pattern Matching, Traits, Generics und anderen modernen Rust-Features experimentieren.
Es eignet sich ideal, um die Kernkonzepte von Rust zu lernen - insbesondere Speichersicherheit, Fehlerbehandlung und Nebenläufigkeit - ganz ohne Cargo-Installation oder lokale Einrichtung. Alles läuft in Sekunden direkt in deinem Browser.
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.
💡 Rust-Grundlagen & Beispiele, die du oben ausprobieren kannst
1. Variablen und Konstanten deklarieren
Verwende let, um Variablen zu deklarieren. Verwende const für Konstanten und mut für veränderliche Variablen.
let x = 10;
let pi: f64 = 3.14;
let name = "Alice";
let is_active = true;
const MAX_USERS: u32 = 100;
2. Bedingungen (if / match)
Rust verwendet if für Bedingungen und match für Pattern Matching.
let x = 2;
if x == 1 {
println!("Eins");
} else if x == 2 {
println!("Zwei");
} else {
println!("Sonstiges");
}
match x {
1 => println!("Eins"),
2 => println!("Zwei"),
_ => println!("Sonstiges"),
}
3. Schleifen
Rust unterstützt for, while und die unendliche Schleife loop.
for i in 0..3 {
println!("{}", i);
}
let mut n = 3;
while n > 0 {
println!("{}", n);
n -= 1;
}
4. Arrays
Arrays fester Größe in Rust verwenden eckige Klammern. Verwende Slices für Ansichten.
let nums = [10, 20, 30];
println!("{}", nums[1]);
5. Vektoren (dynamische Arrays)
Vec wird für dynamische Arrays verwendet.
let mut fruits = vec!["apple", "banana"];
fruits.push("cherry");
fruits.pop();
for fruit in &fruits {
println!("{}", fruit);
}
6. Konsolen-Ein-/Ausgabe
Verwende println! für Ausgaben und std::io für Eingaben.
use std::io;
let mut name = String::new();
println!("Gib deinen Namen ein:");
io::stdin().read_line(&mut name).unwrap();
println!("Hallo, {}", name.trim());
7. Funktionen
Funktionen verwenden fn und können mit -> Werte zurückgeben.
fn greet(name: &str) -> String {
format!("Hallo, {}", name)
}
println!("{}", greet("Alice"));
8. HashMaps
Verwende std::collections::HashMap für Schlüssel-Wert-Daten.
use std::collections::HashMap;
let mut person = HashMap::new();
person.insert("name", "Bob");
println!("{}", person["name"])
9. Fehlerbehandlung
Rust behandelt Fehler mit Result und match oder unwrap().
fn fail() -> Result<(), String> {
Err("Etwas ist schiefgelaufen".to_string())
}
match fail() {
Ok(_) => println!("Erfolg"),
Err(e) => println!("{}", e),
}
10. Datei-Ein-/Ausgabe
Verwende std::fs zum Lesen und Schreiben von Dateien.
use std::fs;
fs::write("file.txt", "Hello File").unwrap();
let content = fs::read_to_string("file.txt").unwrap();
println!("{}", content);
11. String-Verarbeitung
Strings in Rust liegen auf dem Heap und unterstützen viele Methoden.
let mut text = String::from(" Hello Rust ");
println!("{}", text.trim());
println!("{}", text.to_uppercase());
text = text.replace("Hello", "Hi");
println!("{}", text);
12. Structs & Methoden
Rust verwendet struct für Datentypen und impl für Methoden.
struct Person {
name: String,
}
impl Person {
fn greet(&self) -> String {
format!("Hi, ich bin {}", self.name)
}
}
let p = Person { name: "Alice".to_string() };
println!("{}", p.greet());
13. Referenzen & Borrowing
Rust verwendet & zum Borrowing von Werten und &mut für veränderliche Referenzen.
fn update(x: &mut i32) {
*x += 1;
}
let mut value = 10;
update(&mut value);
println!("{}", value);