- Executors
-
Learn
Learn Python Runnable examples, NumPy, pandas, and more Learn AINeural networks, ML and LLMs from scratch Learn C & C++ Pointers, memory, STL, and modern C++ Learn C#C# basics, OOP, LINQ, async, and .NET exercises Learn MatplotlibLine, bar, scatter and pie charts with live visualizers Python Algorithms Search, sorting, recursion, and visualizers O(n) C & C++ Algorithms Compare algorithms implemented in C and C++ Coding for Kids Learn to code by playing!
- ChallengesNew
- For TeachersNew
- Updates
- Buy me a coffee
Mini-batch gradient descent is how almost every neural network is trained: split the data into small batches and update the weights after each one.
Train y = w × x + b on the mean squared error, starting from w = 0 and b = 0. In each epoch, split the samples in order into batches of batch_size (the last batch may be smaller). For each batch of size n:
- errorᵢ = w × xᵢ + b - yᵢ for each sample in the batch
- dw = (2 / n) × Σ errorᵢ × xᵢ and db = (2 / n) × Σ errorᵢ
- w ← w - learning_rate × dw and b ← b - learning_rate × db
Implement train_mini_batch(xs, ys, batch_size, learning_rate, epochs).
Input
xs, ys: The data points (same length).
batch_size: Samples per batch.
learning_rate, epochs: The step size and the number of passes over the data.
Output
Return [w, b] after training.
Constraints
1 ≤ number of points ≤ 1,000, 1 ≤ batch_size ≤ number of points, 0 ≤ epochs ≤ 1,000
0 < learning_rate ≤ 1
-100 ≤ each value ≤ 100
Examples
Example 1
Input:
xs = [1.0, 2.0, 3.0]
ys = [2.0, 4.0, 6.0]
batch_size = 2
learning_rate = 0.1
epochs = 1
Expected output:
[2.44, 1.08]
Explanation
Batch 1 is x = [1, 2]: errors -2 and -4, dw = -10, db = -6, so w = 1 and b = 0.6. Batch 2 is x = [3] alone: error 1×3 + 0.6 - 6 = -2.4, dw = 2 × (-2.4) × 3 = -14.4 and db = -4.8, so w = 2.44 and b = 1.08. Result: [2.44, 1.08].
Example 2
Input:
xs = [1.0, 2.0, 3.0, 4.0]
ys = [3.0, 5.0, 7.0, 9.0]
batch_size = 4
learning_rate = 0.05
epochs = 1
Expected output:
[1.75, 0.6]
Explanation
A batch as big as the dataset is ordinary batch gradient descent: one update per epoch. Result: [1.75, 0.6].
References
-
Example 1 Not runInput:
xs = [1.0, 2.0, 3.0] ys = [2.0, 4.0, 6.0] batch_size = 2 learning_rate = 0.1 epochs = 1Expected output:[2.44, 1.08]Your output -
Example 2 Not runInput:
xs = [1.0, 2.0, 3.0, 4.0] ys = [3.0, 5.0, 7.0, 9.0] batch_size = 4 learning_rate = 0.05 epochs = 1Expected output:[1.75, 0.6]Your output
4 hidden tests also run when you submit. If your code fails one, you'll see that test. Solve the challenge to see them all.
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 total executions (135 this month)
Practice Rust with coding challenges
Solve hands-on problems right in this editor: run the sample tests, submit, and get an AI code review.
🦀 About This Rust Online Executor
The CodeUtility Rust Executor lets you write and run Rust code directly in your browser - no installation, toolchain setup, or local environment required. It’s powered by a secure sandbox that supports real Rust compiler versions 1.70, 1.72, 1.73, and 1.74.
This tool compiles and executes your Rust programs in the cloud using a genuine rustc compiler,
ensuring accurate and consistent results. You can experiment with variables, ownership, borrowing,
pattern matching, traits, generics, and other modern Rust features with ease.
It’s ideal for learning Rust’s core concepts - especially memory safety, error handling, and concurrency - without needing to install Cargo or any local setup. Everything runs directly in your browser within seconds.
More than a code runner
Use a multi-file editor, an isolated execution terminal, runtime-specific libraries, persistent workspaces, sharing, and real-time collaboration from the same executor.
How to use this executor?
Choose a runtime, open or create a file, write your code, and select Run. Output appears in the terminal, while signed-in users can keep files in a workspace, install libraries, and collaborate through shares.
- Select a version and edit the current file or open another workspace file.
- Run the code, provide input in the terminal when requested, and review saved run history.
- Use libraries, workspace tools, sharing, and chat when your task needs more than one snippet.
💡 Rust Basics & Examples You Can Try Above
1. Declaring Variables and Constants
Use let to declare variables. Use const for constants and mut for mutable variables.
let x = 10;
let pi: f64 = 3.14;
let name = "Alice";
let is_active = true;
const MAX_USERS: u32 = 100;
2. Conditionals (if / match)
Rust uses if for conditions and match for pattern matching.
let x = 2;
if x == 1 {
println!("One");
} else if x == 2 {
println!("Two");
} else {
println!("Other");
}
match x {
1 => println!("One"),
2 => println!("Two"),
_ => println!("Other"),
}
3. Loops
Rust supports for, while, and infinite loop.
for i in 0..3 {
println!("{}", i);
}
let mut n = 3;
while n > 0 {
println!("{}", n);
n -= 1;
}
4. Arrays
Fixed-size arrays in Rust use square brackets. Use slices for views.
let nums = [10, 20, 30];
println!("{}", nums[1]);
5. Vectors (Dynamic Arrays)
Vec is used for dynamic arrays.
let mut fruits = vec!["apple", "banana"];
fruits.push("cherry");
fruits.pop();
for fruit in &fruits {
println!("{}", fruit);
}
6. Console Input/Output
Use println! for output and std::io for input.
use std::io;
let mut name = String::new();
println!("Enter your name:");
io::stdin().read_line(&mut name).unwrap();
println!("Hello, {}", name.trim());
7. Functions
Functions use fn and can return values using ->.
fn greet(name: &str) -> String {
format!("Hello, {}", name)
}
println!("{}", greet("Alice"));
8. HashMaps
Use std::collections::HashMap for key-value data.
use std::collections::HashMap;
let mut person = HashMap::new();
person.insert("name", "Bob");
println!("{}", person["name"])
9. Error Handling
Rust handles errors using Result and match or unwrap().
fn fail() -> Result<(), String> {
Err("Something went wrong".to_string())
}
match fail() {
Ok(_) => println!("Success"),
Err(e) => println!("{}", e),
}
10. File I/O
Use std::fs to read and write files.
use std::fs;
fs::write("file.txt", "Hello File").unwrap();
let content = fs::read_to_string("file.txt").unwrap();
println!("{}", content);
11. String Manipulation
Strings in Rust are heap-allocated and support many methods.
let mut text = String::from(" Hello Rust ");
println!("{}", text.trim());
println!("{}", text.to_uppercase());
text = text.replace("Hello", "Hi");
println!("{}", text);
12. Structs & Methods
Rust uses struct for data types and impl for methods.
struct Person {
name: String,
}
impl Person {
fn greet(&self) -> String {
format!("Hi, I'm {}", self.name)
}
}
let p = Person { name: "Alice".to_string() };
println!("{}", p.greet());
13. References & Borrowing
Rust uses & to borrow values and &mut for mutable references.
fn update(x: &mut i32) {
*x += 1;
}
let mut value = 10;
update(&mut value);
println!("{}", value);