_Créditos das imagens: ChatGPT_
# LeetCode (17) :: Comparando Implementações do Desafio "Letter Combinations of a Phone Number" em Harbour e TOTVS TLPP
O desafio [**"Letter Combinations of a Phone Number"**](https://leetcode.com/problems/letter-combinations-of-a-phone-number/description/) (Combinações de Letras de um Número de Telefone) é um problema clássico de programação que envolve a geração de todas as combinações possíveis de letras que um número de telefone pode representar, com base no mapeamento tradicional dos teclados de telefone. Abaixo, comparamos duas implementações desse desafio: uma em **Harbour** e outra em **TOTVS TLPP** (TOTVS Language Plus Plus).
## O Desafio
Dada uma string contendo dígitos de 2 a 9, retorne todas as combinações possíveis de letras que esses dígitos podem representar. O mapeamento dos dígitos para as letras é o mesmo dos teclados de telefone tradicionais:
- 2: "abc"
- 3: "def"
- 4: "ghi"
- 5: "jkl"
- 6: "mno"
- 7: "pqrs"
- 8: "tuv"
- 9: "wxyz"
**Exemplo:**
- Entrada: `"23"`
- Saída: `["ad","ae","af","bd","be","bf","cd","ce","cf"]`
## Implementações
### Harbour
Harbour é uma linguagem de programação moderna e multiplataforma, compatível com Clipper e xBase. Abaixo estão os links para as implementações em Harbour:
1. **Implementação 1**: [letter.combinations.of.a.phone.number.17.1.prg](https://github.com/naldodj/naldodj-xbase-leetcode-solutions/blob/main/src/hb/017/letter.combinations.of.a.phone.number.17.1.prg)
2. **Implementação 2**: [letter.combinations.of.a.phone.number.17.2.prg](https://github.com/naldodj/naldodj-xbase-leetcode-solutions/blob/main/src/hb/017/letter.combinations.of.a.phone.number.17.2.prg)
#### Características das Implementações em Harbour (1):
- **Abordagem Iterativa**: Ambas as implementações utilizam uma abordagem iterativa para gerar as combinações.
- **Uso de Arrays**: As combinações são armazenadas em arrays, e novos elementos são adicionados dinamicamente.
- **Uso de Hash**: As combinações entre os digitos são armazenadas em um Hash.
- **Simplicidade**: O código é direto e fácil de entender, seguindo a sintaxe clássica do Harbour.
#### Características das Implementações em Harbour (2):
- **Abordagem Recursiva**: Utiliza a Recursão para gerar as combinações.
- **Uso de Arrays**: As combinações são armazenadas em arrays, e novos elementos são adicionados dinamicamente.
- **Uso de Hash**: As combinações entre os digitos são armazenadas em um Hash.
- **Simplicidade**: O código é direto e fácil de entender, seguindo a sintaxe clássica do Harbour.
- **Uso de for each**: O Harbour tem suporte para for each e Neste exemplo demonstramos seu uso.
---
### TOTVS TLPP
TOTVS TLPP (TOTVS Language Plus Plus) é uma linguagem de programação utilizada no desenvolvimento de sistemas empresariais, especialmente no ecossistema TOTVS. Abaixo estão os links para as implementações em TLPP:
1. **Implementação 1**: [letter.combinations.of.a.phone.number.17.1.tlpp](https://github.com/naldodj/naldodj-xbase-leetcode-solutions/blob/main/src/tlpp/017/letter.combinations.of.a.phone.number.17.1.tlpp)
2. **Implementação 2**: [letter.combinations.of.a.phone.number.17.2.tlpp](https://github.com/naldodj/naldodj-xbase-leetcode-solutions/blob/main/src/tlpp/017/letter.combinations.of.a.phone.number.17.2.tlpp)
#### Características das Implementações em TLPP(1):
- **Abordagem Iterativa**: Ambas as implementações utilizam uma abordagem iterativa para gerar as combinações.
- **Uso de Arrays**: As combinações são armazenadas em arrays, e novos elementos são adicionados dinamicamente.
- **Uso de JSON**: As combinações entre os digitos são armazenadas em um JSONObject.
- **Simplicidade**: O código é direto e fácil de entender, seguindo a sintaxe clássica do Harbour.
#### Características das Implementações em TLPP (2):
- **Abordagem Recursiva**: Utiliza a Recursão para gerar as combinações.
- **Uso de Arrays**: As combinações são armazenadas em arrays, e novos elementos são adicionados dinamicamente.
- **Uso de JSON**: As combinações entre os digitos são armazenadas em um JSONObject.
- **Simplicidade**: O código é direto e fácil de entender, seguindo a sintaxe clássica do Harbour.
---
## Diferenças Principais
1. **Abordagem**:
- **Harbour**: Utilização de Hash e For Each.
- **TLPP**: Utilização de JSONObject
2. **Sintaxe**:
- **Harbour**: Segue a sintaxe clássica do Harbour, com estruturas de controle familiares para programadores xBase e com novos recursos (Exemplo: Hash e For Each).
- **TLPP**: Utiliza a sintaxe do TLPP, que é semelhante, mas com particularidades do ambiente TOTVS.
3. **Eficiência**:
- Ambas as implementações são eficientes para entradas pequenas.
4. **Legibilidade**:
- O código em Harbour tende a ser mais legível para quem está familiarizado com linguagens xBase, enquanto o TLPP pode exigir um pouco mais de familiaridade com o ambiente TOTVS.
---
## Conclusão
Ambas as implementações resolvem o problema de forma eficaz, mas a escolha entre Harbour e TLPP pode depender do ambiente de desenvolvimento e da familiaridade do programador com cada linguagem.
Para explorar os códigos completos, confira os links abaixo:
- **Harbour**:
- [Implementação 1](https://github.com/naldodj/naldodj-xbase-leetcode-solutions/blob/main/src/hb/017/letter.combinations.of.a.phone.number.17.1.prg)
- [Implementação 2](https://github.com/naldodj/naldodj-xbase-leetcode-solutions/blob/main/src/hb/017/letter.combinations.of.a.phone.number.17.2.prg)
- **TLPP**:
- [Implementação 1](https://github.com/naldodj/naldodj-xbase-leetcode-solutions/blob/main/src/tlpp/017/letter.combinations.of.a.phone.number.17.1.tlpp)
- [Implementação 2](https://github.com/naldodj/naldodj-xbase-leetcode-solutions/blob/main/src/tlpp/017/letter.combinations.of.a.phone.number.17.2.tlpp)
---
## Hashtags:
#Harbour, #TLPP, #LeetCode, #Programação, #DesafiosDeProgramação, #CombinaçõesDeLetras, #xBase, #TOTVS, #Algoritmos, #DesenvolvimentoDeSoftware
Comentários
Postar um comentário