Off Topic - Consulta lenguaje codigo

 
Vista:
sin imagen de perfil

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro Andrade

Consulta lenguaje codigo

Publicado por Alejandro Andrade (50 intervenciones) el 29/03/2023 01:02:03
El código parece estar escrito en JavaScript. Para traducirlo a Java, primero deberá entender lo que hace el código y luego reescribirlo en Java.

En resumen, este código implementa un algoritmo de "mochila" para encontrar la combinación óptima de objetos con un peso y valor específicos que se ajusten a una mochila con un peso máximo dado. La función 'mochila' es la función principal que llama a otras funciones como 'crear', 'esSolucion', 'guardar', 'acotar', 'probar' y 'deshacer'. La función 'llenarMochila' es una función de depuración que registra los nodos recorridos durante el algoritmo.

Para traducir este código a Java, deberá comprender la lógica del algoritmo y las funciones utilizadas, y luego implementarlo en Java utilizando la sintaxis y estructuras de datos adecuadas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar