clone moodle
This commit is contained in:
commit
071d4d2bd9
25 changed files with 461 additions and 0 deletions
8
TP1/C-Cpp/Screens-1/screen-0.txt
Normal file
8
TP1/C-Cpp/Screens-1/screen-0.txt
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
########
|
||||||
|
# 1 #
|
||||||
|
# #
|
||||||
|
#$$$$$$#
|
||||||
|
#......#
|
||||||
|
# #
|
||||||
|
########
|
||||||
|
|
12
TP1/C-Cpp/Screens-1/screen-1.txt
Normal file
12
TP1/C-Cpp/Screens-1/screen-1.txt
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
#####
|
||||||
|
# #
|
||||||
|
#$ #
|
||||||
|
### $##
|
||||||
|
# $ $ #
|
||||||
|
### # ## # ######
|
||||||
|
# # ## ##### ..#
|
||||||
|
# $ $ 1..#
|
||||||
|
##### ### # ## ..#
|
||||||
|
# #########
|
||||||
|
#######
|
||||||
|
|
12
TP1/C-Cpp/Screens-1/screen-2.txt
Normal file
12
TP1/C-Cpp/Screens-1/screen-2.txt
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
############
|
||||||
|
#.. # ###
|
||||||
|
#.. # $ $ #
|
||||||
|
#..1 #$#### #
|
||||||
|
#.. ## #
|
||||||
|
#.. # # $ ##
|
||||||
|
###### ##$ $ #
|
||||||
|
# $ $ $ $ #
|
||||||
|
# # #
|
||||||
|
############
|
||||||
|
|
||||||
|
|
12
TP1/C-Cpp/Screens-1/screen-3.txt
Normal file
12
TP1/C-Cpp/Screens-1/screen-3.txt
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
########
|
||||||
|
# 1 #
|
||||||
|
# $#$ ##
|
||||||
|
# $ $#
|
||||||
|
##$ $ #
|
||||||
|
######### $ # ###
|
||||||
|
#.... ## $ $ #
|
||||||
|
##... $ $ #
|
||||||
|
#.... ##########
|
||||||
|
########
|
||||||
|
|
||||||
|
|
16
TP1/C-Cpp/Screens-1/screen-4.txt
Normal file
16
TP1/C-Cpp/Screens-1/screen-4.txt
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
########
|
||||||
|
# ....#
|
||||||
|
############ ....#
|
||||||
|
# # $ $ ....#
|
||||||
|
# $$$#$ $ # ....#
|
||||||
|
# $ $ # ....#
|
||||||
|
# $$ #$ $ $########
|
||||||
|
# $ # #
|
||||||
|
## #########
|
||||||
|
# # #
|
||||||
|
# $ 1#
|
||||||
|
# $$#$$ #
|
||||||
|
# # #
|
||||||
|
###########
|
||||||
|
|
||||||
|
|
15
TP1/C-Cpp/Screens-1/screen-5.txt
Normal file
15
TP1/C-Cpp/Screens-1/screen-5.txt
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
#####
|
||||||
|
# #####
|
||||||
|
# #$## #
|
||||||
|
# $ #
|
||||||
|
######### ### #
|
||||||
|
#.... ## $ $###
|
||||||
|
#.... $ $$ ##
|
||||||
|
#.... ##$ $ 1#
|
||||||
|
######### $ #
|
||||||
|
# $ $ #
|
||||||
|
### ## #
|
||||||
|
# #
|
||||||
|
######
|
||||||
|
|
||||||
|
|
13
TP1/C-Cpp/Screens-1/screen-6.txt
Normal file
13
TP1/C-Cpp/Screens-1/screen-6.txt
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
###### #####
|
||||||
|
#.. # #1 #
|
||||||
|
#.. ### #
|
||||||
|
#.. $$ #
|
||||||
|
#.. # # $ #
|
||||||
|
#..### # $ #
|
||||||
|
#### $ #$ #
|
||||||
|
# $# $ #
|
||||||
|
# $ $ #
|
||||||
|
# ## #
|
||||||
|
#########
|
||||||
|
|
||||||
|
|
14
TP1/C-Cpp/Screens-1/screen-7.txt
Normal file
14
TP1/C-Cpp/Screens-1/screen-7.txt
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
#####
|
||||||
|
####### ##
|
||||||
|
## 1 ## $$ #
|
||||||
|
# $ #
|
||||||
|
# $ ### #
|
||||||
|
### #####$###
|
||||||
|
# $ ### ..#
|
||||||
|
# $ $ $ ...#
|
||||||
|
# ###...#
|
||||||
|
# $$ # #...#
|
||||||
|
# ### #####
|
||||||
|
####
|
||||||
|
|
||||||
|
|
18
TP1/C-Cpp/Screens-1/screen-8.txt
Normal file
18
TP1/C-Cpp/Screens-1/screen-8.txt
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
####
|
||||||
|
# ###########
|
||||||
|
# $ $ $ #
|
||||||
|
# $# $ # $ #
|
||||||
|
# $ $ # #
|
||||||
|
### $# # #### #
|
||||||
|
#1#$ $ $ ## #
|
||||||
|
# $ #$# # #
|
||||||
|
# $ $ $ $ #
|
||||||
|
##### #########
|
||||||
|
# #
|
||||||
|
# #
|
||||||
|
#......#
|
||||||
|
#......#
|
||||||
|
#......#
|
||||||
|
########
|
||||||
|
|
||||||
|
|
16
TP1/C-Cpp/Screens-1/screen-9.txt
Normal file
16
TP1/C-Cpp/Screens-1/screen-9.txt
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
#######
|
||||||
|
# ...#
|
||||||
|
##### ...#
|
||||||
|
# . .#
|
||||||
|
# ## ...#
|
||||||
|
## ## ...#
|
||||||
|
### ########
|
||||||
|
# $$$ ##
|
||||||
|
###### $ $ #####
|
||||||
|
#1 #$ $ # #
|
||||||
|
# $ $ $ $ #
|
||||||
|
###### $$ $ #####
|
||||||
|
# #
|
||||||
|
########
|
||||||
|
|
||||||
|
|
8
TP1/C-Cpp/Screens-2/screen-0.txt
Normal file
8
TP1/C-Cpp/Screens-2/screen-0.txt
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
########
|
||||||
|
# 12 #
|
||||||
|
# #
|
||||||
|
#$$$$$$#
|
||||||
|
#......#
|
||||||
|
# #
|
||||||
|
########
|
||||||
|
|
12
TP1/C-Cpp/Screens-2/screen-1.txt
Normal file
12
TP1/C-Cpp/Screens-2/screen-1.txt
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
#####
|
||||||
|
# #
|
||||||
|
#$ #
|
||||||
|
### $##
|
||||||
|
# $ $ #
|
||||||
|
### # ## # ######
|
||||||
|
# # ## ##### ..#
|
||||||
|
# $ $ 1..#
|
||||||
|
##### ### # ## 2..#
|
||||||
|
# #########
|
||||||
|
#######
|
||||||
|
|
12
TP1/C-Cpp/Screens-2/screen-2.txt
Normal file
12
TP1/C-Cpp/Screens-2/screen-2.txt
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
############
|
||||||
|
#.. # ###
|
||||||
|
#.. # $ $ #
|
||||||
|
#..1 #$#### #
|
||||||
|
#..2 ## #
|
||||||
|
#.. # # $ ##
|
||||||
|
###### ##$ $ #
|
||||||
|
# $ $ $ $ #
|
||||||
|
# # #
|
||||||
|
############
|
||||||
|
|
||||||
|
|
12
TP1/C-Cpp/Screens-2/screen-3.txt
Normal file
12
TP1/C-Cpp/Screens-2/screen-3.txt
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
########
|
||||||
|
# 12 #
|
||||||
|
# $#$ ##
|
||||||
|
# $ $#
|
||||||
|
##$ $ #
|
||||||
|
######### $ # ###
|
||||||
|
#.... ## $ $ #
|
||||||
|
##... $ $ #
|
||||||
|
#.... ##########
|
||||||
|
########
|
||||||
|
|
||||||
|
|
16
TP1/C-Cpp/Screens-2/screen-4.txt
Normal file
16
TP1/C-Cpp/Screens-2/screen-4.txt
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
########
|
||||||
|
# ....#
|
||||||
|
############ ....#
|
||||||
|
# # $ $ ....#
|
||||||
|
# $$$#$ $ # ....#
|
||||||
|
# $ $ # ....#
|
||||||
|
# $$ #$ $ $########
|
||||||
|
# $ # #
|
||||||
|
## #########
|
||||||
|
# # #
|
||||||
|
# $ 1#
|
||||||
|
# $$#$$ 2#
|
||||||
|
# # #
|
||||||
|
###########
|
||||||
|
|
||||||
|
|
15
TP1/C-Cpp/Screens-2/screen-5.txt
Normal file
15
TP1/C-Cpp/Screens-2/screen-5.txt
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
#####
|
||||||
|
# #####
|
||||||
|
# #$## #
|
||||||
|
# $ #
|
||||||
|
######### ### #
|
||||||
|
#.... ## $ $###
|
||||||
|
#.... $ $$ ##
|
||||||
|
#.... ##$ $ 1#
|
||||||
|
######### $ 2#
|
||||||
|
# $ $ #
|
||||||
|
### ## #
|
||||||
|
# #
|
||||||
|
######
|
||||||
|
|
||||||
|
|
13
TP1/C-Cpp/Screens-2/screen-6.txt
Normal file
13
TP1/C-Cpp/Screens-2/screen-6.txt
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
###### #####
|
||||||
|
#.. # #12 #
|
||||||
|
#.. ### #
|
||||||
|
#.. $$ #
|
||||||
|
#.. # # $ #
|
||||||
|
#..### # $ #
|
||||||
|
#### $ #$ #
|
||||||
|
# $# $ #
|
||||||
|
# $ $ #
|
||||||
|
# ## #
|
||||||
|
#########
|
||||||
|
|
||||||
|
|
14
TP1/C-Cpp/Screens-2/screen-7.txt
Normal file
14
TP1/C-Cpp/Screens-2/screen-7.txt
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
#####
|
||||||
|
####### ##
|
||||||
|
## 12 ## $$ #
|
||||||
|
# $ #
|
||||||
|
# $ ### #
|
||||||
|
### #####$###
|
||||||
|
# $ ### ..#
|
||||||
|
# $ $ $ ...#
|
||||||
|
# ###...#
|
||||||
|
# $$ # #...#
|
||||||
|
# ### #####
|
||||||
|
####
|
||||||
|
|
||||||
|
|
18
TP1/C-Cpp/Screens-2/screen-8.txt
Normal file
18
TP1/C-Cpp/Screens-2/screen-8.txt
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
####
|
||||||
|
# ###########
|
||||||
|
# $ $ $ #
|
||||||
|
# $# $ # $ #
|
||||||
|
# $ $ # #
|
||||||
|
### $# # #### #
|
||||||
|
#1#$ $ $ ## #
|
||||||
|
#2 $ #$# # #
|
||||||
|
# $ $ $ $ #
|
||||||
|
##### #########
|
||||||
|
# #
|
||||||
|
# #
|
||||||
|
#......#
|
||||||
|
#......#
|
||||||
|
#......#
|
||||||
|
########
|
||||||
|
|
||||||
|
|
16
TP1/C-Cpp/Screens-2/screen-9.txt
Normal file
16
TP1/C-Cpp/Screens-2/screen-9.txt
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
#######
|
||||||
|
# ...#
|
||||||
|
##### ...#
|
||||||
|
# . .#
|
||||||
|
# ## ...#
|
||||||
|
## ## ...#
|
||||||
|
### ########
|
||||||
|
# $$$ ##
|
||||||
|
###### $ $ #####
|
||||||
|
#12 #$ $ # #
|
||||||
|
# $ $ $ $ #
|
||||||
|
###### $$ $ #####
|
||||||
|
# #
|
||||||
|
########
|
||||||
|
|
||||||
|
|
7
TP1/C-Cpp/src/Makefile
Normal file
7
TP1/C-Cpp/src/Makefile
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
CC=g++
|
||||||
|
CFLAGS=-std=c++11 -Wall -O2
|
||||||
|
|
||||||
|
##### SOKOBAN
|
||||||
|
r0: mysok.h r0.cpp
|
||||||
|
$(CC) $(CFLAGS) r0.cpp -o $@
|
||||||
|
|
112
TP1/C-Cpp/src/mysok.h
Normal file
112
TP1/C-Cpp/src/mysok.h
Normal file
|
@ -0,0 +1,112 @@
|
||||||
|
#ifndef MYSOK_H
|
||||||
|
#define MYSOK_H
|
||||||
|
#include <cstdio>
|
||||||
|
#include <cstdlib>
|
||||||
|
#include <string.h>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#define NBL 20
|
||||||
|
#define NBC 20
|
||||||
|
#define MAX_CRATES 20
|
||||||
|
|
||||||
|
#define MOVE_U 0
|
||||||
|
#define MOVE_D 1
|
||||||
|
#define MOVE_L 2
|
||||||
|
#define MOVE_R 3
|
||||||
|
#define MOVE_W 4
|
||||||
|
|
||||||
|
#define OUT 0
|
||||||
|
#define FREE 1
|
||||||
|
#define TARGET 2
|
||||||
|
#define WALL 3
|
||||||
|
#define CRATE_ON_FREE 4
|
||||||
|
#define CRATE_ON_TARGET 5
|
||||||
|
#define MAN1_ON_FREE 6
|
||||||
|
#define MAN1_ON_TARGET 7
|
||||||
|
#define MAN2_ON_FREE 8
|
||||||
|
#define MAN2_ON_TARGET 9
|
||||||
|
#define END_OF_LINE 10
|
||||||
|
|
||||||
|
char board_str[] = {' ','_','.','#','$','*','1','u','2','d','a'};
|
||||||
|
std::string move_str[] = {"Up", "Down", "Left", "Right", "Wait"};
|
||||||
|
|
||||||
|
struct sok_board_t {
|
||||||
|
int board[NBL][NBC];
|
||||||
|
int board_nbl;
|
||||||
|
int man1_x;
|
||||||
|
int man1_y;
|
||||||
|
int man2_x;
|
||||||
|
int man2_y;
|
||||||
|
|
||||||
|
sok_board_t();
|
||||||
|
void print_board();
|
||||||
|
void load(char* _file);
|
||||||
|
};
|
||||||
|
|
||||||
|
sok_board_t::sok_board_t() {
|
||||||
|
for(int i = 0; i < NBL; i++)
|
||||||
|
for(int j = 0; j < NBC; j++)
|
||||||
|
board[i][j] = FREE;
|
||||||
|
}
|
||||||
|
void sok_board_t::print_board() {
|
||||||
|
for(int i = 0; i < board_nbl; i++) {
|
||||||
|
for(int j = 0; j < NBC; j++) {
|
||||||
|
if(board[i][j]==END_OF_LINE) break;
|
||||||
|
printf("%c", board_str[board[i][j]]);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void sok_board_t::load(char* _file) {
|
||||||
|
FILE *fp = fopen(_file, "r");
|
||||||
|
char *line = NULL;
|
||||||
|
size_t len = 0;
|
||||||
|
ssize_t nread;
|
||||||
|
if (fp == NULL) {
|
||||||
|
perror("fopen"); exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
board_nbl = 0;
|
||||||
|
while ((nread = getline(&line, &len, fp)) != -1) {
|
||||||
|
if(((int)nread) > 0) {
|
||||||
|
bool read_ok = false;
|
||||||
|
for(int i = 0; i < nread; i++) {
|
||||||
|
if(line[i] == board_str[FREE]) {
|
||||||
|
board[board_nbl][i] = FREE;
|
||||||
|
} else if(line[i] == board_str[TARGET]) {
|
||||||
|
board[board_nbl][i] = TARGET;
|
||||||
|
} else if(line[i] == board_str[WALL]) {
|
||||||
|
read_ok = true;
|
||||||
|
board[board_nbl][i] = WALL;
|
||||||
|
} else if(line[i] == board_str[CRATE_ON_FREE]) {
|
||||||
|
board[board_nbl][i] = CRATE_ON_FREE;
|
||||||
|
} else if(line[i] == board_str[CRATE_ON_TARGET]) {
|
||||||
|
board[board_nbl][i] = CRATE_ON_TARGET;
|
||||||
|
} else if(line[i] == board_str[MAN1_ON_FREE]) {
|
||||||
|
man1_x = board_nbl;
|
||||||
|
man1_y = i;
|
||||||
|
board[board_nbl][i] = MAN1_ON_FREE;
|
||||||
|
} else if(line[i] == board_str[MAN1_ON_TARGET]) {
|
||||||
|
man1_x = board_nbl;
|
||||||
|
man1_y = i;
|
||||||
|
board[board_nbl][i] = MAN1_ON_TARGET;
|
||||||
|
} else if(line[i] == board_str[MAN2_ON_FREE]) {
|
||||||
|
man2_x = board_nbl;
|
||||||
|
man2_y = i;
|
||||||
|
board[board_nbl][i] = MAN2_ON_FREE;
|
||||||
|
} else if(line[i] == board_str[MAN2_ON_TARGET]) {
|
||||||
|
man2_x = board_nbl;
|
||||||
|
man2_y = i;
|
||||||
|
board[board_nbl][i] = MAN2_ON_TARGET;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(read_ok) {
|
||||||
|
board[board_nbl][nread-1]=END_OF_LINE;
|
||||||
|
board_nbl++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
free(line);
|
||||||
|
fclose(fp);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
13
TP1/C-Cpp/src/r0.cpp
Normal file
13
TP1/C-Cpp/src/r0.cpp
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
#include <cstdio>
|
||||||
|
#include <cstdlib>
|
||||||
|
#include <string.h>
|
||||||
|
#include <string>
|
||||||
|
#include "mysok.h"
|
||||||
|
|
||||||
|
int main(int _ac, char** _av) {
|
||||||
|
if(_ac != 2) { printf("usage: %s SOK_FILE\n", _av[0]); return 0; }
|
||||||
|
sok_board_t S;
|
||||||
|
S.load(_av[1]);
|
||||||
|
S.print_board();
|
||||||
|
return 0;
|
||||||
|
}
|
1
TP1/Prolog/main.pl
Normal file
1
TP1/Prolog/main.pl
Normal file
|
@ -0,0 +1 @@
|
||||||
|
% :)
|
56
TP1/README.txt
Normal file
56
TP1/README.txt
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
Sokoban
|
||||||
|
|
||||||
|
Ce TP étant long, il est possible de le rendre en groupe de 2 à 4.
|
||||||
|
|
||||||
|
L'objectif de ce TP est de présenter les résultats obtenus sur des problèmes de sokoban (https://en.wikipedia.org/wiki/Sokoban).
|
||||||
|
Il s'agit d'étudier des variantes de Sokoban et de résoudre chaque problème le plus rapidement possible, tous les précalculs possibles et réalisables étant autorisés.
|
||||||
|
Si des précalculs sont utilisés, il est attendu de les réaliser par application de procédures et sans intervention humaine (similaire à une génération procédurale).
|
||||||
|
Comme dans le cas de génération procédurale, il s'agit d'appliquer une procédure par exemple pour définir les positions bloquantes (i.e. interdites) ou les positions les plus interessantes. Les procédures utilisées peuvent ne pas être déterminites (i.e. ne pas garantir d'obtenir le même résultat à chaque exécution).
|
||||||
|
Deux variantes de Sokoban sont à étudier dans ce TP. Pour chaque variante, un ensemble de 10 problèmes est à résoudre (screen-0.txt à screen-1.txt).
|
||||||
|
|
||||||
|
Quand on demande la résolution d'un problème, on le fait par la ligne de commande: ./a.out 1 Screens-1/screen-1.txt
|
||||||
|
|
||||||
|
Le répertoire Screens-1 contient 10 problèmes à 1 joueur
|
||||||
|
Le répertoire Screens-2 contient 10 problèmes à 2 joueurs
|
||||||
|
|
||||||
|
Dans tous les problèmes :
|
||||||
|
Les caisses sont des "$"
|
||||||
|
Les cases objectifs sont des "."
|
||||||
|
Les murs sont des "#"
|
||||||
|
|
||||||
|
Les mouvements possibles sont udlrw pour chaque joueur, u pour up, d pour down, l pour left, r pour right, w pour wait.
|
||||||
|
|
||||||
|
Avec 1 joueur, on déplace 1 joueur (noté 1) à chaque instant.
|
||||||
|
Avec 2 joueur, on déplace 2 joueurs (notés 1 et 2) à chaque instant. uw fait monter le 1 et ne fait rien sur le 2. wu fait rien sur le 1 et monte le 2.
|
||||||
|
|
||||||
|
Pour chaque problème de Screens-1, on recherche les solutions permettant de déplacer 1, 2, 3, ... caisses sur les cases objectifs.
|
||||||
|
Pour chaque problème de Screens-2, ayant 2 joueurs, on recherche les solutions pour 2, 3, ... caisses vers 2,3, ... cases objetcifs.
|
||||||
|
Ces problèmes étant difficiles, il est fort probable que nous ne réussissiez pas à déplacer toutes les caisses vers toutes les cases objectifs.
|
||||||
|
(même si une solution existe pour chaque problème)
|
||||||
|
On notera que Screens-1/screen-0.txt et Screens-2/screen-0.txt ne sont pas les mêmes problèmes et que leur solution diffère.
|
||||||
|
|
||||||
|
Extraire sokoban-2023.tgz
|
||||||
|
Aller dans le répertoire sokoban-2023
|
||||||
|
Le répertoire src contient le début du TP
|
||||||
|
Le répertoire Screens-1 (respect. 2) contient les problèmes à 1 joueur (respect. 2 joueurs)
|
||||||
|
Dans src :
|
||||||
|
La commande "make" crée l'executable r0
|
||||||
|
Lancer "./r0 ../Screens-1/screen-0.txt" permet de lire et afficher le problème considéré
|
||||||
|
|
||||||
|
#####################################################################
|
||||||
|
|
||||||
|
Ecrire un programme C/C++ résolvant ces problèmes.
|
||||||
|
Ecrire un programme Prolog résolvant ces problèmes (qui sera probablement plus lent que le programme C/C++ mais peut être plus simple).
|
||||||
|
|
||||||
|
Dans un rapport pdf en une ou deux pages :
|
||||||
|
Présenter l'algorithme correspondant aux calculs déployés.
|
||||||
|
Si des précalculs sont utilisés, présenter les algorithmes correspondants.
|
||||||
|
Pour chaque problème, présenter dans une table de résultats :
|
||||||
|
* le nombre max de caisses déplacées sur les cases objectifs
|
||||||
|
* la solution correspondante
|
||||||
|
* le temps de calcul utilisé (en cas de résolution non déterministe, donner le meilleur temps, le temps moyen et le nombre d'essais pour obtenir ces résultats)
|
||||||
|
* le temps de précalcul (si précalcul vous avez utilisé)
|
||||||
|
|
||||||
|
Pour l'ensemble des calculs, préciser cpu et ram de l'ordinateur utilisé.
|
||||||
|
|
||||||
|
#####################################################################
|
Reference in a new issue