Ceci est trop long pour un commentaire. Je posterai ma solution plus tard si vous ne pouvez pas la résoudre mais voici comment je l'ai fait (en moins de 15 lignes de code): J'ai d'abord créé un second tableau (un peu plus gros [n + 2] [ n + 2]) et a fait n/2 passe:
0 0 0 0 0 0 0 0
0 0 1 0 0 0 1 0
0 1 0 1 1 1 0 0
0 1 0 1 2 2 1 0
0 0 1 2 2 2 1 0
0 0 0 1 2 2 1 0
0 1 1 1 1 1 1 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 1 0 0 0 1 0
0 1 0 1 1 1 0 0
0 1 0 1 2 2 1 0
0 0 1 2 3 2 1 0
0 0 0 1 2 2 1 0
0 1 1 1 1 1 1 0
0 0 0 0 0 0 0 0
Lorsqu'un non nul x signifie « Je suis au centre d'une taille x de losange » (j'exprime la taille en relation avec la longueur des diagonales [qui sont toutes deux égales dans votre cas] du losange). Vous pouvez trouver si vous avez le centre d'un losange de taille (k + 1) en vérifiant si {haut, droite, bas, gauche} sont tous les centres de losange de taille k. L'avantage de créer d'abord un tableau plus grand est qu'il simplifie vraiment votre logique mais je pourrais le faire en place, avec une logique plus alambiquée, en modifiant le tableau original ou en utilisant un second tableau de la même taille que le entrée (encore une fois, il est plus facile de mettre simplement une "clôture" sûre de zéros autour de votre entrée). Si vous n'entourez pas votre tableau avec une clôture, vous avez beaucoup de vérifications if/else supplémentaires: ce serait sujette aux erreurs, conduirait à un code plus grand et conduirait à un code plus laid.
Nous avons probablement des tonnes d'idée, mais ce n'est pas notre devoir à faire. Qu'avez-vous accompli? –
Par définition, un losange doit avoir quatre côtés de la même longueur, mais n'a pas nécessairement des angles intérieurs de 90 degrés. Avez-vous besoin de trouver le plus grand losange de toute sorte, ou seulement le plus grand carré de 45 degrés? (Je suppose que vous vouliez dire 45 degrés en raison de votre résultat d'échantillon, un carré tourné de 90 degrés est identique à l'original.) – Pops
@Lord Torgamus: c'est évidemment, de la représentation utilisée pour représenter le "tableau 2D", le 45 -degrees pivoté carré ... (je veux dire, sinon bonne chance résoudre ce problème en raison de problèmes de dessin au trait/intersection/précision;) – SyntaxT3rr0r