On a trouvé un océan liquide sous la glace de Mimas, une des lunes de Saturne, et il est envisagé d'y envoyer une sonde, peut-être pour percer la couche de glace et prélever des échantillons. Mulder est enthousiaste à cette idée et rêve que l'humanité prouve l'existence d'une vie extraterrestre, mais il craint que le choix du site d'amimassissage 😀 soit mal choisi par le gouvernement (intentionnellement, ou pas, peut-être pour cacher qu'ils savent déjà...).
Il décide donc de faire développer un bout de logiciel qui choisit le meilleur site pour les prélèvements, afin de comparer ces résultats avec les lieux choisis par les autorités compétentes. C'est vous qui êtes chargé.e de ce développement.
Les données d'entrée sont des cartes, données sous forme d'un tableau de nombres, indiquant l'épaisseur de la couche de glace supposée en chaque point de la carte.
Par exemple :
15 10 13 13 17 19 13 15 12 14
17 16 18 18 11 16 17 17 18 11
15 19 18 19 14 13 10 13 15 10
12 13 18 11 13 13 13 17 10 11
19 19 10 14 17 13 12 17 12 10
10 14 15 15 16 18 14 11 14 19
18 11 11 17 19 19 13 16 17 12
10 13 15 19 14 14 16 14 14 13
14 14 18 14 13 17 15 15 19 11
15 19 13 10 15 10 11 12 14 12
La profondeur locale est, pour un point donné sur la carte, la profondeur moyenne du point en question et des points voisins (chaque valeur qui n'est pas sur un bord a 8 voisins, la profondeur locale n'est pas définie sur les bords). La profondeur locale en un point est donc une moyenne de 9 valeurs de la matrice :
À partir de la carte précédente, on peut calculer la profondeur locale de tous les points (ici arrondie à un chiffre après la virgule), sauf aux bords :
? ? ? ? ? ? ? ? ? ?
? 15.7 16. 15.7 15.6 14.4 14.8 14.4 13.9 ?
? 16.2 16.7 15.6 14.2 13.3 14.3 14.4 13.6 ?
? 15.9 15.7 14.9 14.1 13.1 13.4 13.2 12.8 ?
? 14.4 14.3 14.3 14.4 14.3 14.2 13.3 13.4 ?
? 14.1 14. 14.9 16.4 15.7 14.8 14. 14.2 ?
? 13. 14.4 15.7 16.8 15.9 15. 14.3 14.4 ?
? 13.8 14.7 15.6 16.2 15.6 15.4 15.4 14.6 ?
? 14.6 15. 14.6 14. 13.9 13.8 14.4 13.8 ?
? ? ? ? ? ? ? ? ? ?
L'objectif est de trouver des lieux avec une profondeur locale minimale. Ici, la profondeur minimale est 12.8 :
La prise de décision consiste à indiquer à quel endroit creuser en donnant les coordonnées du lieu sur la carte (numéro de ligne et numéro de colonne).
La décision correcte pour l'exemple serait donc 3, 8
.
Il va falloir traiter des lots de cartes. L'URL d'entrée vous fournit une
série de 10 cartes, dont le contenu est donné par les champs carte01
,
carte02...
:
{
'carte01': [[15, 29, 27, 43, 12, 44, 48, 25, 44, 22],
[34, 24, 23, 39, 27, 40, 39, 12, 38, 12],
[26, 28, 10, 24, 44, 13, 29, 31, 34, 16],
[23, 14, 26, 24, 30, 14, 25, 17, 33, 31],
[26, 16, 45, 14, 24, 48, 18, 35, 45, 20],
[28, 42, 39, 27, 32, 48, 22, 16, 22, 37],
[25, 26, 46, 37, 17, 36, 44, 23, 41, 18],
[34, 18, 13, 18, 18, 30, 12, 12, 22, 49],
[21, 48, 19, 15, 48, 32, 17, 47, 22, 12],
[44, 24, 32, 44, 45, 35, 32, 46, 38, 13]],
'carte02': [[34, 31, 44, 27, 44, 33, 41, 48, 42, 28],
[31, 41, 13, 39, 17, 30, 39, 36, 22, 30],
[14, 23, 26, 23, 48, 41, 20, 23, 24, 38],
[31, 34, 35, 24, 37, 17, 35, 27, 22, 22],
[25, 42, 17, 28, 44, 23, 12, 47, 15, 36],
[22, 37, 49, 16, 38, 16, 24, 25, 43, 16],
[25, 16, 47, 17, 40, 33, 27, 25, 20, 16],
[26, 26, 46, 39, 40, 28, 23, 38, 23, 45],
[46, 15, 19, 18, 16, 22, 15, 20, 43, 37],
[36, 35, 17, 20, 15, 44, 47, 15, 14, 37]],
[...]
'signature': '<votre signature>',
'status': 'OK'
}
Il vous faudra répondre avec le contenu JSON :
{
'trou01': [3, 2],
'trou02': [3, 7],
[...]
'signature': '<votre signature>',
}
Attention toutefois, les cartes réelles sont un peu plus grandes.