J'ai une matrice de nombres 6x6 et j'écris un code prologue qui me donne les nombres dans une certaine ligne, colonne ou carré. Par exemple:Générer un carré à partir de la matrice dans Prolog
0n 1n 2n 3n 4n 5n
0n [[1,2,3,4,5,6]
1n [2,3,4,5,6,1]
2n [3,4,5,6,1,2]
3n [4,5,6,1,2,3]
4n [5,6,1,2,3,4]
5n [6,1,2,3,4,5]]
J'ai déjà du code pour les lignes et les colonnes, ce qui est quelque chose comme:
row(1,[A|_],A).
row(Y,[_|B],X) :-
Y-1 is Y1,
row(Y1,B,X).
Mais maintenant, je suis coincé sur la façon de générer un carré 3x3. Je veux travailler avec des coordonnées, donc le premier argument devrait être quelque chose comme (1,3) et il donnera le carré de la ligne 1n et la colonne 3n, puis la matrice comme deuxième et les nombres dans le carré comme troisième argument. Est-ce que quelqu'un a des conseils? Je pensais que je pourrais devoir travailler avec un motif de queue de tête à nouveau; obtenir les trois premiers chiffres de la ligne/colonne donnée, puis faire cela trois fois, mais je ne sais pas comment ou si cela est possible et efficace.
Tous les commentaires sont grandement appréciés!
Pas besoin de travailler avec ce motif dans le premier cas non plus. Prolog a un prédicat 'nth1/3'. –