Pular para o conteúdo principal

Postagem em destaque

BlackTDN :: LeetCode :: Comparando Implementações Harbour e TLPP para o Desafio Longest Palindromic Substring

_Créditos das imagens: ChatGPT_ ### LeetCode :: Comparando Implementações Harbour e TLPP para o Desafio Longest Palindromic Substring Resolver o problema do [Longest Palindromic Substring](https://leetcode.com/problems/longest-palindromic-substring/description/) é um exercício clássico de programação, que desafia desenvolvedores a encontrar a maior substring palindrômica dentro de uma string. Recentemente, exploramos soluções tanto em Harbour quanto em TLPP (Total Language Protheus Programming). Neste artigo, comparamos as implementações nessas duas linguagens, destacando suas semelhanças, diferenças e funcionalidades específicas. #### Implementações em Harbour ##### Versão 5.1 Essa solução utiliza a técnica de expansão a partir do centro do palíndromo. Cada caractere ou par de caracteres consecutivos é considerado um possível "centro". O algoritmo expande em ambas as direções enquanto os caracteres forem iguais, retornando o maior palíndromo encontrado. ##### Versão 5....

Protheus :: Advpl :: Dicas do Robson :: Usando UniqueKey() para filtrar registros

Função: UniqueKey( <uFields> , <cAlias>, <lResetKeys>, <nMaxRec> )

Objetivo: Verificar se a chave passada é única de acordo com o campo ou campos passados nos parâmetros. Esta função ajuda a apresentar um único registro quando houver vários semelhantes, por exemplo: Fazer consulta SXB na tabela SC7, porém apresentando um registro por pedido de compra independente de quantos itens existam.

Parâmetros:

uFields – String contendo o campo ou Array  unidimensional com as strings dos campos que que serão considerados para pesquisa da chave única.

cAlias – Alias do arquivo para pesquisa.

lResetKeys – Reinicializa as chaves.

nMaxRec – Número máximo de elementos.

Essa mesma dica poderá, por extensão, servir ao fitro do MPSDU/APSDU como abaixo:

!Deleted().and.C7_EMISSAO>=FirstDate(Date()).and.C7_EMISSAO<=LastDate(Date()).and. UniqueKey({"C7_FILIAL","C7_NUM"})

Irá retornar todos os primeiros n registros da tabela SC7, não deletados, com a data de emissão dentro do mês corrente.

Dada a característica da Função UniqueKey() o intervalo de dados não poderá ser muito grande por dois motivos

  • Performance;
  • Tamanho máximo da “Pilha” de armazenamento;

Logo, para tabela com muitos registros, uma condição complementar deverá ser utilizada como filtro “primário” e excludente.

Exemplo:

image

Filtrando com:

!Deleted().and.C7_EMISSAO>=FirstDate(Date()).and.C7_EMISSAO<=LastDate(Date()).and. UniqueKey({"C7_FILIAL","C7_NUM"})

teremos:

image

image 

Uma outra dica, para melhorar a performance do filtro usando UniqueKey() é selecionar uma Chave de índice que corresponda ao filtro desejado. No nosso caso C7_FILIAL+C7_NUM…

E, como bem dito pelo Robson, além de podermos utilizar UniqueKey() para Filtrar informações via MPSDU/APSDU podemos utilizá-la para filtrar uma Consulta Padrão.
 
Observe:
 
Sem o Filtro
 
image
 
image
 
 
Aplicando o Filtro:
 
C7_EMISSAO>=FirstYDate(Date()).and.C7_EMISSAO<=LastYDate(Date()).and. UniqueKey({"C7_FILIAL","C7_NUM"})
 
 
image
 
image
 
Obteremos apenas os n Primeiros registros que atendam a condição.
 
p/ Robson Luiz (feat иαldσ dj)
 
[]s

Comentários

Postar um comentário

Postagens mais visitadas