Défi
Étant donné une grille comme celle-ci,
1 2 3 4 5 6 7 8
1 . . . . . . . .
2 . # . . . # . .
3 . . . . . . . .
4 . . . . . . . .
5 . . . . . . . .
6 . . # . . . . .
7 . . . . . . . .
8 . . . . . . . .
écrire un morceau de code qui peut déterminer la taille du plus grand carré qui n'inclut pas de «#». (La réponse à cette entrée est 5x5 car la grille en bas à droite 5x5 est le plus grand carré possible).
Le carré doit avoir des côtés parallèles aux axes x et y.
Comme quelques petits détails: la grille d'origine est toujours un carré et sa longueur latérale vous est donnée. Les coordonnées des symboles «#» vous sont également données.
Détails d'entrée
Première ligne: N (1 <= N <= 1000), la longueur du côté de la grille carrée, et T (1 <= T <= 10 000) le nombre de signes «#».
Lignes T suivantes: les coordonnées de chacun des T #
Cas de test
Entrée # 1:
8 3
2 2
2 6
6 3
Résultat # 1: 5
================
Entrée # 2:
8 4
1 1
1 8
8 1
8 8
Résultat # 2: 6
================
Entrée # 3:
5 1
3 3
Résultat # 3: 2
C'est un problème de code le plus rapide, donc le code le plus rapide testé sur le compilateur de rextester gagne.
S'amuser!
fastest-code
1000x1000, c'est trop petit, cependantRéponses:
Node.js
Prend l'entrée comme (w, l) , où w est la largeur et l est un tableau de coordonnées [x, y] . (Cela peut être modifié si le format d'entrée est vraiment aussi strict que décrit.) Fonctionne en O (w²) .
Essayez-le en ligne!
la source
console.log(f( 1000, [...Array(10000)].map(_=>[Math.random()*1000+1|0,Math.random()*1000+1|0]) ));
coûte 114 ms, bien que ce soit la faible efficacité de la langueC (gcc)
Pas d'algorithme sophistiqué ici, juste presque de la force brute ... mais bon, C est rapide.
Entrée: prend l'entrée de stdin .
Sortie: écrit la sortie sur stdout .
Essayez-le en ligne!
la source