- 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 Python Algorithms Search, sorting, recursion, and visualizers O(n) C & C++ Algorithms Compare algorithms implemented in C and C++
- ChallengesNew
Momentum makes gradient descent behave like a ball rolling downhill: each step keeps part of the previous one.
Start with a velocity of 0 for every weight. For each step t, with gradient vector g (one value per weight):
- v ← beta × v + g
- w ← w - learning_rate × v
Implement momentum_steps(gradients, weights, learning_rate, beta), applying one update per row of gradients, in order.
Input
gradients: One row per step; each row has one gradient per weight.
weights: The starting weights.
learning_rate: The step size.
beta: The momentum coefficient (0 means plain gradient descent).
Output
Return the weights after all steps.
Constraints
0 ≤ steps ≤ 1,000, 1 ≤ weights ≤ 100
0 < learning_rate ≤ 1, 0 ≤ beta < 1
-100 ≤ each value ≤ 100
Examples
Example 1
Input:
beta = 0.9
weights = [0.0]
gradients = [
[1.0],
[1.0],
[1.0]
]
learning_rate = 0.1
Expected output:
[-0.561]
Explanation
The velocity grows 1 → 1.9 → 2.71 because the gradient keeps pointing the same way, so the steps are 0.1, 0.19 and 0.271: w = -0.561.
Example 2
Input:
beta = 0.0
weights = [1.0, 1.0]
gradients = [
[2.0, -4.0]
]
learning_rate = 0.5
Expected output:
[0.0, 3.0]
Explanation
With beta = 0 this is plain gradient descent: w = [1 - 0.5 × 2, 1 - 0.5 × (-4)] = [0, 3].
References
-
Example 1 Not runInput:
beta = 0.9 weights = [0.0] gradients = [ [1.0], [1.0], [1.0] ] learning_rate = 0.1Expected output:[-0.561]Your output -
Example 2 Not runInput:
beta = 0.0 weights = [1.0, 1.0] gradients = [ [2.0, -4.0] ] learning_rate = 0.5Expected output:[0.0, 3.0]Your output
4 hidden tests also run when you submit.
Online C++ Compiler & Debugger
Write, compile, run, and debug C++ online. Set breakpoints, inspect variables, and step through code with GDB in Server mode - no setup required.
🚀 2,393,935 total executions (1,561 this month)
Practice C++ with coding challenges
Solve hands-on problems right in this editor: run the sample tests, submit, and get an AI code review.
Learn and practise C/C++
Follow a learning path with runnable lessons, then test yourself with coding challenges.
💻 About This C++ Online Executor
The CodeUtility C++ Executor lets you write and run C++ code directly in your browser - no installation or compiler setup needed. It’s powered by a secure sandbox that supports real C++ standards from C++11, C++14, C++17, up to the latest version.
This tool uses a real C++ compiler running in the cloud to compile and execute your code, ensuring accurate and consistent behavior across versions. You can freely experiment with core C++ concepts like variables, functions, loops, conditionals, and object-oriented programming.
Whether you’re preparing for interviews, learning modern C++ features, or verifying algorithm logic, the CodeUtility C++ Executor provides a simple yet powerful environment to run code instantly from any device.
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.
💡 C++ Basics & Examples You Can Try Above
1. Declaring Variables and Constants
C++ requires you to declare the type of each variable. Use const to define read-only values that cannot be changed after initialization.
int age = 30;
double pi = 3.14159;
char grade = 'A';
std::string name = "Alice";
bool isActive = true;
// Constants
const int MAX_USERS = 100;
const std::string COMPANY = "CodeUtility";
// Attempting to modify a const will cause a compile-time error
// MAX_USERS = 200; // ❌ error
2. Conditionals (if / switch)
Use if, else if, else for branching. Use switch for multiple values.
int x = 2;
if (x == 1) {
std::cout << "One\n";
} else if (x == 2) {
std::cout << "Two\n";
} else {
std::cout << "Other\n";
}
// Switch-case
switch (x) {
case 1:
std::cout << "One\n";
break;
case 2:
std::cout << "Two\n";
break;
default:
std::cout << "Other\n";
}
3. Loops
Use for, while, and do-while to repeat code blocks.
for (int i = 0; i < 3; i++) {
std::cout << i << "\n";
}
int n = 3;
while (n > 0) {
std::cout << n << "\n";
n--;
}
4. Arrays
Arrays store multiple elements of the same type.
int numbers[3] = {10, 20, 30};
std::cout << numbers[1] << "\n";
5. Array/Vector Manipulation
Use std::vector for dynamic arrays.
#include <vector>
std::vector nums = {1, 2, 3};
nums.push_back(4);
nums.pop_back();
for (int n : nums) {
std::cout << n << " ";
}
6. Console Input/Output
Use std::cin for input and std::cout for output.
std::string name;
std::cout << "Enter your name: ";
std::cin >> name;
std::cout << "Hello, " << name << "\n";
7. Functions
Functions group reusable logic. Use parameters and return types.
int add(int a, int b) {
return a + b;
}
std::cout << add(3, 4);
8. Maps
std::map stores key-value pairs like dictionaries.
#include <map>
std::map ages;
ages["Alice"] = 30;
std::cout << ages["Alice"];
9. Exception Handling
Use try and catch to handle runtime errors.
try {
throw std::runtime_error("Error occurred");
} catch (const std::exception& e) {
std::cout << e.what();
}
10. File I/O
Use fstream to read from and write to files.
#include <fstream>
std::ofstream out("file.txt");
out << "Hello File";
out.close();
std::ifstream in("file.txt");
std::string line;
getline(in, line);
std::cout << line;
in.close();
11. String Manipulation
C++ strings support methods like length(), substr(), and find().
std::string text = "Hello World";
std::cout << text.length();
std::cout << text.substr(0, 5);
std::cout << text.find("World");
12. Classes & Objects
C++ supports object-oriented programming using classes.
class Person {
public:
std::string name;
Person(std::string n) : name(n) {}
void greet() { std::cout << "Hi, I'm " << name; }
};
Person p("Alice");
p.greet();
13. Pointers
A pointer stores the memory address of another variable. Use & to get an address,
and * to dereference (access the value at the address).
int x = 10;
int* ptr = &x;
std::cout << "Value of x: " << x << "\n";
std::cout << "Address of x: " << ptr << "\n";
std::cout << "Value from pointer: " << *ptr << "\n";
// Modify x through pointer
*ptr = 20;
std::cout << "Updated x: " << x << "\n";
🐞 How to Debug %{language} Code Online
Use the online %{language} debugger to find runtime and logic errors without installing a compiler or desktop IDE. Server mode compiles with debug symbols and runs the program under GDB.
- Set one or more breakpoints beside the line numbers.
- Select Debug to compile and pause at the first matching breakpoint.
- Inspect the current line, call stack, and variables.
- Use Continue, Step Over, Step Into, or Step Out to control execution.
- Select Stop to end the debugging session.
Start with a small reproducible example and place a breakpoint just before the value or control flow becomes unexpected.