Postagem em destaque

BlackTDN :: LeetCode (17) :: Comparando Implementações do Desafio "Letter Combinations of a Phone Number" em Harbour e TOTVS TLPP

_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

Postagens mais visitadas