Desafio
Dada uma grade como esta,
1 2 3 4 5 6 7 8
1 . . . . . . . .
2 . # . . . # . .
3 . . . . . . . .
4 . . . . . . . .
5 . . . . . . . .
6 . . # . . . . .
7 . . . . . . . .
8 . . . . . . . .
escreva um pedaço de código que possa determinar o tamanho do quadrado maior que não inclua um '#'. (A resposta para esta entrada é 5x5, pois a grade 5x5 inferior direita é o maior quadrado possível).
O quadrado deve ter lados paralelos aos eixos x e y.
Como alguns pequenos detalhes: a grade original é sempre um quadrado e seu comprimento lateral é fornecido a você. As coordenadas dos símbolos '#' também são fornecidas a você.
Detalhes da entrada
Primeira linha: N (1 <= N <= 1000), o comprimento lateral da grade quadrada e T (1 <= T <= 10.000) o número de sinais '#'.
Próximas linhas T: as coordenadas de cada um dos T #
Casos de teste
Entrada nº 1:
8 3
2 2
2 6
6 3
Resultado # 1: 5
================
Entrada nº 2:
8 4
1 1
1 8
8 1
8 8
Resultado 2: 6
================
Entrada nº 3:
5 1
3 3
Resultado # 3: 2
Esse é um problema de código mais rápido ; portanto, o código mais rápido testado no compilador do rextester vence.
Diverta-se!
fonte
fastest-code
1000x1000, porém, é muito pequenoRespostas:
Node.js
Aceita entrada como (w, l) , onde w é a largura e l é uma matriz de coordenadas [x, y] . (Isso pode ser alterado se o formato de entrada realmente for tão rigoroso quanto descrito.) Funciona em O (w²) .
Experimente online!
fonte
console.log(f( 1000, [...Array(10000)].map(_=>[Math.random()*1000+1|0,Math.random()*1000+1|0]) ));
114ms de custos, embora possa ser baixa eficiência da linguagemC (gcc)
Nenhum algoritmo sofisticado aqui, apenas força bruta ... mas, ei, C é rápido.
Entrada: recebe a entrada de stdin .
Saída: Grava a saída em stdout .
Experimente online!
fonte