- Executores
-
Aprender
Aprender Python Exemplos executáveis, NumPy, pandas e mais Aprender IARedes neurais, ML e LLMs do zero Aprender C e C++ Ponteiros, memória, STL e C++ moderno Aprender C#Fundamentos, POO, LINQ, async e exercícios .NET Aprender MatplotlibGráficos de linha, barras, dispersão e pizza com visualizadores Algoritmos em Python Busca, ordenação, recursão e visualizações O(n) Algoritmos em C e C++ Compare implementações em C e C++ Programação para crianças Aprenda a programar brincando!
- DesafiosNovo
- Para professoresNovo
- Atualizações
- Me pague um café
O Naive Bayes supõe que as variáveis são independentes dada a classe e escolhe a classe com a maior pontuação:
score(c) = P(c) × P(x₁ | c) × P(x₂ | c) × … × P(xₙ | c)
As variáveis são categorias codificadas como inteiros. Estime as probabilidades a partir dos dados de treinamento:
- P(c) = (número de exemplos da classe c) / (número de exemplos)
- P(xⱼ = v | c) = (número de exemplos da classe c cuja variável j é v + 1) / (número de exemplos da classe c + Kⱼ)
onde Kⱼ é o número de valores distintos da variável j entre os exemplos de treinamento e a consulta. O +1 (suavização de Laplace) impede que um valor nunca visto zere uma pontuação.
Retorne a classe com a maior pontuação; em caso de empate, a menor classe. Multiplicar muitas probabilidades pequenas pode causar underflow, então some logaritmos.
Implemente naive_bayes_predict(features, labels, query).
Entrada
features: Uma linha de n variáveis categóricas por exemplo de treinamento.
labels: A classe de cada exemplo de treinamento.
query: As n variáveis do exemplo a classificar.
Saída
Retorne a classe prevista.
Restrições
1 ≤ exemplos ≤ 1.000, 1 ≤ n ≤ 20
0 ≤ cada valor de variável e rótulo ≤ 100
Exemplos
Exemplo 1
Entrada:
features = [
[0, 1],
[0, 0],
[1, 1],
[1, 0],
[0, 1]
]
labels = [1, 1, 0, 0, 1]
query = [0, 1]
Saída esperada:
1
Explicação
A classe 1 tem 3 exemplos e a classe 0 tem 2. A variável 1 tem valores {0, 1} (K = 2) e a variável 2 tem {0, 1} (K = 2). score(1) = 3/5 × (3+1)/(3+2) × (2+1)/(3+2) = 0.6 × 0.8 × 0.6 = 0.288. score(0) = 2/5 × (0+1)/(2+2) × (1+1)/(2+2) = 0.4 × 0.25 × 0.5 = 0.05. A classe 1 vence.
Exemplo 2
Entrada:
features = [
[0],
[0],
[1]
]
labels = [0, 0, 1]
query = [2]
Saída esperada:
0
Explicação
O valor 2 nunca aparece, então K = 3 (valores 0, 1 e 2). score(0) = 2/3 × (0+1)/(2+3) ≈ 0.133 e score(1) = 1/3 × (0+1)/(1+3) ≈ 0.083. Graças à suavização nenhuma é 0, e a classe 0, mais comum, vence.
Referências
-
Exemplo 1 Não executadoEntrada:
features = [ [0, 1], [0, 0], [1, 1], [1, 0], [0, 1] ] labels = [1, 1, 0, 0, 1] query = [0, 1]Saída esperada:1Sua saída -
Exemplo 2 Não executadoEntrada:
features = [ [0], [0], [1] ] labels = [0, 0, 1] query = [2]Saída esperada:0Sua saída
4 testes ocultos também serão executados ao enviar. Se seu código falhar em um, você verá esse teste. Resolva o desafio para ver todos.
Online JavaScript Runner
Write, run, and debug JavaScript or Node.js online in a full-featured browser IDE. Work with multiple files and packages, save your workspace, and collaborate in real time.
🚀 339,661 execuções totais (665 este mês)
Pratique JavaScript com desafios de código
Resolva problemas práticos direto neste editor: rode os testes de exemplo, envie sua solução e receba uma revisão de código por IA.
⚡ Sobre este Executor Online de JavaScript (Node.js)
O CodeUtility JavaScript Executor permite escrever e executar código JavaScript moderno diretamente no seu navegador - instantaneamente e sem qualquer configuração. Ele usa ambientes reais do Node.js para executar seu código com segurança em um contêiner isolado (sandbox), com suporte às versões 16, 18 e 20.
Esta ferramenta é perfeita para testar snippets de Node.js, explorar a sintaxe ES6+ ou aprender conceitos fundamentais de programação em JavaScript, como loops, funções, arrays, promises e o comportamento de async/await.
Você também pode usá-la para validar algoritmos, depurar pequenos scripts ou experimentar lógica em tempo de execução sem instalar o Node localmente. É ideal para estudantes, desenvolvedores backend ou qualquer pessoa que precise de uma forma rápida, baseada no navegador, de executar código JavaScript.
Mais do que um executor de código
Use no mesmo executor um editor de vários arquivos, um terminal de execução isolado, bibliotecas específicas do ambiente, espaços de trabalho persistentes, compartilhamento e colaboração em tempo real.
Como usar este executor?
Escolha um ambiente de execução, abra ou crie um arquivo, escreva o código e selecione Executar. A saída aparece no terminal; usuários conectados podem manter arquivos em um espaço de trabalho, instalar bibliotecas e colaborar por meio de compartilhamentos.
- Selecione uma versão e edite o arquivo atual ou abra outro arquivo do espaço de trabalho.
- Execute o código, forneça dados no terminal quando solicitado e consulte o histórico de execuções salvo.
- Use bibliotecas, ferramentas do espaço de trabalho, compartilhamento e chat quando a tarefa exigir mais de um trecho de código.
💡 Guia básico de Node.js para iniciantes
1. Declarando variáveis e constantes
Use let ou const para variáveis com escopo de bloco. const é usado para constantes.
let x = 10;
const PI = 3.14;
let name = "Alice";
let isActive = true;
2. Condicionais (if / switch)
Use if, else if, else ou switch para o fluxo de controle.
let x = 2;
if (x === 1) {
console.log("Um");
} else if (x === 2) {
console.log("Dois");
} else {
console.log("Outro");
}
switch (x) {
case 1:
console.log("Um");
break;
case 2:
console.log("Dois");
break;
default:
console.log("Outro");
}
3. Loops
Use for, while e forEach para iterar sobre dados.
for (let i = 0; i < 3; i++) {
console.log(i);
}
let n = 3;
while (n > 0) {
console.log(n);
n--;
}
4. Arrays
Use arrays para armazenar listas ordenadas de valores. Acesse com índices.
let fruits = ["apple", "banana", "cherry"];
console.log(fruits[0]);
console.log(fruits.length);
5. Manipulação de arrays
Use métodos como push, pop, slice e reverse.
fruits.push("kiwi");
fruits.pop();
console.log(fruits.slice(0, 2));
console.log(fruits.reverse());
let squares = [1, 2, 3, 4, 5].map(x => x * x);
console.log(squares);
6. Entrada/Saída no console
Use console.log para saída e o módulo readline para entrada.
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question("Qual é o seu nome? ", name => {
console.log(`Olá, ${name}`);
rl.close();
});
7. Funções
Funções podem ser declaradas ou expressas. Arrow functions são comuns no JavaScript moderno.
function greet(name) {
return `Olá, ${name}`;
}
const add = (a, b) => a + b;
console.log(greet("Alice"));
console.log(add(2, 3));
8. Objetos (Map)
Objetos armazenam pares chave-valor. São semelhantes a dicionários ou mapas.
let person = { name: "Bob", age: 25 };
console.log(person.name);
console.log(person["age"]);
// Map do ES6
const map = new Map();
map.set("a", 1);
console.log(map.get("a"));
9. Tratamento de exceções
Use try, catch e finally para lidar com erros com segurança.
try {
throw new Error("Algo deu errado");
} catch (e) {
console.log(e.message);
} finally {
console.log("Limpeza, se necessário");
}
10. Entrada/Saída de arquivos
Use o módulo fs do Node.js para ler e escrever arquivos.
const fs = require("fs");
fs.writeFileSync("test.txt", "Olá, Arquivo");
const data = fs.readFileSync("test.txt", "utf8");
console.log(data);
11. Manipulação de strings
Use métodos como trim(), toUpperCase(), replace() e split().
let text = " Olá Mundo ";
console.log(text.trim());
console.log(text.toUpperCase());
console.log(text.replace("Olá", "Oi"));
console.log(text.split(" "));
12. Classes e objetos
ES6+ suporta POO com a sintaxe class.
class Person {
constructor(name) {
this.name = name;
}
greet() {
return `Oi, eu sou ${this.name}`;
}
}
const p = new Person("Alice");
console.log(p.greet());
13. Referências
Objetos e arrays em JavaScript são passados por referência.
function update(arr) {
arr.push("changed");
}
let data = ["original"];
update(data);
console.log(data); // ["original", "changed"]