_Créditos das imagens: ChatGPT_
# BlackTDN :: LeetCode :: Reverse Integer: Implementando Soluções em xBase (Harbour) e TL++
## Introdução
Este artigo explora e compara diferentes abordagens para resolver o desafio de [inverter um número inteiro de 32 bits](https://leetcode.com/problems/reverse-integer/description/), garantindo que o resultado permaneça dentro dos limites definidos. O desafio foi implementado nas linguagens Harbour e TL++ (Totvs Language Plus Plus), apresentando três variações em cada uma.
---
## Soluções em Harbour
### Solução 1: Conversão para String e Inversão
**Descrição:** Nesta abordagem, o número é convertido para uma string, seus caracteres são invertidos, e a string resultante é reconvertida para número.
**Passos:**
1. Conversão do valor absoluto para uma string.
2. Inversão dos caracteres da string.
3. Reconversão para número, aplicando o sinal original.
4. Validação para garantir que o número resultante está dentro dos limites de 32 bits.
[Ver código](https://github.com/naldodj/naldodj-xbase-leetcode-solutions/blob/main/src/hb/007/reverse_integer.7.1.prg)
---
### Solução 2: Extração e Construção de Dígitos
**Descrição:** Os dígitos do número são extraídos um a um e acumulados para formar o número invertido.
**Passos:**
1. Extração do último dígito usando operações de módulo e divisão.
2. Construção incremental do número invertido.
3. Validação contínua para evitar estouro dos limites de 32 bits.
[Ver código](https://github.com/naldodj/naldodj-xbase-leetcode-solutions/blob/main/src/hb/007/reverse_integer.7.2.prg)
---
### Solução 3: Uso de Notação Hexadecimal
**Descrição:** Utiliza notação hexadecimal para definir limites, combinando clareza e eficiência.
**Passos:**
1. Definição de limites em notação hexadecimal.
2. Processo idêntico ao da Solução 2 para extração e reconstrução do número.
[Ver código](https://github.com/naldodj/naldodj-xbase-leetcode-solutions/blob/main/src/hb/007/reverse_integer.7.3.prg)
---
## Soluções em TL++ (Totvs Language Plus Plus)
### Solução 1: Conversão para String e Inversão
**Descrição:** Similar à solução em Harbour, converte o número em string, inverte os caracteres e valida o resultado.
[Ver código](https://github.com/naldodj/naldodj-xbase-leetcode-solutions/blob/main/src/tlpp/007/reverse_integer.7.1.tlpp)
---
### Solução 2: Extração e Construção de Dígitos
**Descrição:** Replica o método de extração e reconstrução incremental, garantindo validações contínuas.
[Ver código](https://github.com/naldodj/naldodj-xbase-leetcode-solutions/blob/main/src/tlpp/007/reverse_integer.7.2.tlpp)
---
### Solução 3: Simulação de Notação Hexadecimal
**Descrição:** Diferente do Harbour, TL++ não possui suporte nativo para notação hexadecimal. Essa limitação é superada utilizando a diretiva `#xtranslate` para simular a conversão de valores hexadecimais para decimais por meio da função `__HexToDec`.
**Exemplo:**
```tlpp
// TL++ não tem suporte, ainda, para notação hexadecimal de forma nativa
#xtranslate 0x0 => __HexToDec("0x0")
#xtranslate 0xA => __HexToDec("0xA")
#xtranslate 0x80000000 => __HexToDec("0x80000000")
#xtranslate -0x80000000 => __HexToDec("-0x80000000")
#xtranslate 0x7FFFFFFF => __HexToDec("0x7FFFFFFF")
```
[Ver código](https://github.com/naldodj/naldodj-xbase-leetcode-solutions/blob/main/src/tlpp/007/reverse_integer.7.3.tlpp)
---
## Considerações Finais
As soluções apresentadas destacam as forças e limitações de Harbour e TL++. Enquanto o Harbour se beneficia de um suporte mais completo à notação hexadecimal, TL++ demonstra flexibilidade ao oferecer alternativas como o uso de `#xtranslate`. Ambas as linguagens oferecem abordagens robustas para resolver o problema, destacando a criatividade e o pragmatismo do desenvolvedor.
---
## Hashtags
#Harbour #TLPP #TOTVS #LeetCode #Programação #Inteiros32Bits #LógicaDeProgramação #DesenvolvimentoDeSoluções #Xbase #DesafiosDeCódigo
Comentários
Postar um comentário