
Consulta lenguaje codigo
Publicado por Johan (1 intervención) el 27/11/2021 04:31:14
Hola, mi consulta es para saber si de casualidad alguien sabe en que lenguaje está este código y como podría pasarlo a java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
function mochila(maxPeso, pesos, valores){
let objetos = [[]];
let nodoVacio = crear(maxPeso, pesos, valores);
(function llenarMochila(nodo){
if (esSolucion(nodo, objetos)){
guardar(nodo, objetos);
}
for (let i=nodo.n; i<nodo.pesos.length; i++){
let pesoLibre = acotar(nodo, i);
if (pesoLibre>=0){
probar(nodo, i);
llenarMochila(nodo);
deshacer(nodo, i);
}
}
})(nodoVacio);
return objetos;
}
function crear(maxPeso, pesos, valores){
return {
n: 0,
bak: 0,
objetos: [],
pesoLibre: maxPeso,
maxPeso,
pesos,
valores
}
}
function esSolucion(nodo, objetos){
let valorMochila = objetos[0].reduce((p,v) => p+nodo.valores[v], 0);
let valor = nodo.objetos.reduce((p,v) => p+nodo.valores[v], 0);
return valor > valorMochila;
}
function guardar(nodo, objetos) {
objetos[0] = [...nodo.objetos];
}
function acotar(nodo, i){
return nodo.pesoLibre - nodo.pesos[i];
}
function probar(nodo, i){
nodo.pesoLibre -= nodo.pesos[i];
nodo.bak = nodo.n;
nodo.n = i;
nodo.objetos.push(i);
}
function deshacer(nodo, i){
nodo.pesoLibre += nodo.pesos[i];
nodo.n = nodo.bak;
nodo.objetos.pop();
}
function llenarMochila(nodo, nivel=-1){
nivel = trazar(nodo, nivel);
llenarMochila(nodo, nivel);
}
function trazar(nodo, nivel){
nivel++;
numNodos++;
let peso = nodo.objetos.reduce((p,v) => p+nodo.pesos[v], 0);
let valor = nodo.objetos.reduce((p,v) => p+nodo.valores[v], 0);
traza.push("nivel:" + nivel + " nodo:[" +
[...nodo.objetos] + "] peso:" + peso + " valor:" + valor);
return nivel;
}
Valora esta pregunta


0