Cómo acceder a una matriz bidimensional en el prólogo y cómo enlazar cada elemento en ella Por ejemplo, si tengo una matriz Pregunta 1, ¿cómo creo una lista bidimensional como esta en el prólogo?
1 2 3
4 5 6
7 8 9
Pregunta 2: ¿Cómo hago un bucle con cada elemento y hago que cada elemento +1 se convierta en
2 3 4
5 6 7
8 9 10
Pregunta 3
public Cell(int row, int col, int cost, int units) {
this.cost = cost;
this.units = units;
this.row = row;
this.col = col;
}
En la matriz, todo es un objeto como la celda Mi tarea es transferir el código java al código Prolog
Entonces, ¿cómo puedo hacer que este objeto sea un prólogo?
Basado en la forma en que está haciendo sus preguntas, es decir transfer java code into Prolog
, parece que piensa en código procedimental u orientado a objetos y quiere usar el conocimiento como palanca al aprender Prolog. Mi consejo es que no utilice su conocimiento de código procedimental u orientado a objetos como palanca o un respaldo para ayudarlo a aprender Prolog porque dificultará su aprendizaje y efectividad con Prolog. En su lugar, intente adoptar Prolog aprendiendo a usarlo como estaba previsto.
Además, cuando haga una pregunta en Stackoverflow, debe incluir el código de lo que ha probado.
¿Cómo acceder a una matriz bidimensional en Prolog?
Por lo tanto, desea crear una estructura de datos en Prolog que pueda funcionar con datos como una matriz bidimensional. Sin conocer más detalles, debería funcionar una lista de listas, por ejemplo
[[[1],[2],[3]],[[4],[5],[6]],[[7],[8],[9]]]
Hay otras posibilidades, pero no hay suficientes detalles en la pregunta para sugerir algo más específico para un problema específico.
¿Cómo hago un bucle en cada elemento y hago que cada elemento sea +1?
Primero se hace usando la recursividad para que pueda ver lo que está sucediendo en detalle
increment(Array,New_array) :-
increment_rows(Array,New_array).
increment_rows([Row|Rows],[New_row|New_rows]) :-
increment_row(Row,New_row),
increment_rows(Rows,New_rows).
increment_rows([],[]).
increment_row([Cell|Columns],[New_cell|New_columns]) :-
increment_cell(Cell,New_cell),
increment_row(Columns,New_columns).
increment_row([],[]).
increment_cell(Cell,New_cell) :-
New_cell is Cell + 1.
?- increment([[[1],[2],[3]], [[4],[5],[6]], [[7],[8],[9]]], New_array).
New_array = [[2, 3, 4], [5, 6, 7], [8, 9, 10]].
ahora usando el predicado incorporado maplist / 3
increment_item(Item,New_item) :-
New_item is Item + 1.
increment_list(List,New_list) :-
maplist(increment_item,List,New_list).
increment_array(Array,New_array) :-
maplist(increment_list,Array,New_array).
?- increment_array([[[1],[2],[3]], [[4],[5],[6]], [[7],[8],[9]]], New_array).
New_array = [[2, 3, 4], [5, 6, 7], [8, 9, 10]].
¿Cómo puedo convertir este objeto en Prolog?
Como el Prolog estándar no es Java y no tiene objetos (aunque algunas variaciones sí), descartaré la palabra objeto y en su lugar responder
¿Cómo puedo hacer esto en Prolog?
Esta es una de las partes de Prolog que puede parecer muy difícil de comprender a primera vista. En Prolog, no declaras que las variables tengan tipos y no creas métodos constructores para crear objetos. En Prolog los datos se representan como términos y hay variables que se identifican comenzando con una letra mayúscula. Así que si quieres algo en Prolog que puede contener valores para row
, column
, cost
y units
sólo tiene que utilizar variables, por ejemplo Row
, Column
, Cost
y Units
, y el grupo pueden juntos en un término compuesto, por ejemplo (Row,Column,Cost,Units)
, y si se desea se puede también calificar la estructura con una nombre cell(Row,Column,Cost,Units)
.
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras