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....

[BlackTDN] :: Identificando as marcações ímpares na tabela SP8

1) A consulta das marcações impares;
2) A "deleção lógica" dos registros impares;

Segue:

1) Para consultar as marcações impares:

------------------------------------------------------------------------------------------------
SELECT SP8.P8_FILIAL
      ,SP8.P8_MAT
      ,SP8.P8_PAPONTA
      ,SP8.P8_ORDEM
  FROM SP8010 SP8
WHERE SP8.D_E_L_E_T_=' '
GROUP BY SP8.P8_FILIAL
        ,SP8.P8_MAT
        ,SP8.P8_PAPONTA
        ,SP8.P8_ORDEM
HAVING ((COUNT(*)%2)=1)
ORDER BY 1,2,3,4
------------------------------------------------------------------------------------------------
2) Para a "Deleção Lógica" das marcações impares:

UPDATE SP8_U
    SET SP8_U.D_E_L_E_T_='*'
FROM
  SP8010 SP8_U
  INNER JOIN
  (
      SELECT SP8.P8_FILIAL
            ,SP8.P8_MAT
            ,SP8.P8_PAPONTA
            ,SP8.P8_ORDEM
      FROM SP8010 SP8
    WHERE SP8.D_E_L_E_T_=' '
    GROUP BY SP8.P8_FILIAL
            ,SP8.P8_MAT
            ,SP8.P8_PAPONTA
            ,SP8.P8_ORDEM
    HAVING ((COUNT(*)%2)=1)
   ) SP8_R
   ON  SP8_U.P8_FILIAL=SP8_R.P8_FILIAL
  AND SP8_U.P8_MAT=SP8_R.P8_MAT
  AND SP8_U.P8_PAPONTA=SP8_R.P8_PAPONTA
  AND SP8_U.P8_ORDEM=SP8_R.P8_ORDEM
WHERE SP8_U.D_E_L_E_T_=' ' 

OU
------------------------------------------------------------------------------------------------
MERGE INTO
  SP8010 SP8_U
USING
  (
      SELECT SP8.P8_FILIAL
            ,SP8.P8_MAT
            ,SP8.P8_PAPONTA
            ,SP8.P8_ORDEM
      FROM SP8010 SP8
    WHERE SP8.D_E_L_E_T_=' '
    GROUP BY SP8.P8_FILIAL
            ,SP8.P8_MAT
            ,SP8.P8_PAPONTA
            ,SP8.P8_ORDEM
    HAVING ((COUNT(*)%2)=1)
  ) SP8_R
ON  SP8_U.P8_FILIAL=SP8_R.P8_FILIAL
AND SP8_U.P8_MAT=SP8_R.P8_MAT
AND SP8_U.P8_PAPONTA=SP8_R.P8_PAPONTA
AND SP8_U.P8_ORDEM=SP8_R.P8_ORDEM
WHEN MATCHED THEN
  UPDATE SET
    SP8_U.D_E_L_E_T_='*';

------------------------------------------------------------------------------------------------
Obs.:

1) Antes de efetuar qualquer operação que modifique os dados diretamente no SGBD efetue uma cópia da tabela;

2) Nem sempre os registros devem ser deletados. A melhor opção é identificar os funcionários com marcações impares e incluir a marcação faltante.

Comentários

Postagens mais visitadas