Novo desafio: Bash String Library (bstrlib.sh) #22

Open
opened 2022-05-28 14:02:35 +00:00 by blau_araujo · 13 comments

Salve, pessoal!

Estamos publicando um novo desafio: a criação de 12 funções para manipulação de strings e vetores.

Dessa vez, o desafio vale prêmios e vocês devem publicar os links das suas soluções aqui nesta issue.

Bons estudos! :-)

Salve, pessoal! Estamos publicando um [novo desafio](https://codeberg.org/blau_araujo/tecnicas-do-shell/src/branch/main/desafios/bstrlib): a criação de 12 funções para manipulação de strings e vetores. Dessa vez, o desafio vale prêmios e vocês devem publicar os links das suas soluções aqui nesta issue. Bons estudos! :-)

Dúvida sobre o requerimento da função implode:

# Uso      : implode 'STRING' 'VAR' ['SEPARADOR|CLASSE']
# Descrição: Une os elementos de um vetor em uma string
#            intercalados por um separador e atribui
#            a uma variável.
#            O separador padrão é a vírgula.

Vou listar aqui o meu entendimento com o intuito de confirmar se entendi corretamente:

  • Os elementos serão fornecidos em STRING, e estarão separados por espaços (essa é minha principal dúvida).
  • Devemos unir estes elementos separando-os com SEPARADOR.
  • A string resultante deverá ser salva em VAR

Entendi corretamente?

Dúvida sobre o requerimento da [função implode](https://codeberg.org/blau_araujo/tecnicas-do-shell/src/branch/main/desafios/bstrlib/bstrlib.sh#L100): ```bash # Uso : implode 'STRING' 'VAR' ['SEPARADOR|CLASSE'] # Descrição: Une os elementos de um vetor em uma string # intercalados por um separador e atribui # a uma variável. # O separador padrão é a vírgula. ``` Vou listar aqui o meu entendimento com o intuito de confirmar se entendi corretamente: - Os elementos serão fornecidos em `STRING`, e estarão **separados por espaços** (essa é minha principal dúvida). - Devemos unir estes elementos separando-os com `SEPARADOR`. - A string resultante deverá ser salva em `VAR` Entendi corretamente?

@meleu

O implode é para pegar os elementos de uma array e uni-los com um separador. Esse uso está errado, vou corrigir.

@meleu O `implode` é para pegar os elementos de uma array e uni-los com um separador. Esse uso está errado, vou corrigir.

Mais um probleminha de copy'n'paste aqui (o nome da função deveria ser count).

Mais um probleminha de copy'n'paste [aqui](https://codeberg.org/blau_araujo/tecnicas-do-shell/src/commit/c2019347d8940601c1d6c4eed5bbfddcaf7cdd60/desafios/bstrlib/bstrlib.sh#L166) (o nome da função deveria ser count).

Corrigido, @meleu ! :-)

Corrigido, @meleu ! :-)

Eu todo serelepe pimpão me preparando pra enviar minhas soluções quando vi nas Condições no README que uma função não pode depender das outras. 🤦‍♂️
(mas é claro que fiz meu trim executando ltrim e depois rtrim! 😇)

Sugestão: colocar estas "Condições" e "Critérios de avaliação" no cabeçalho do script.

Amanhã tento ajeitar meu código, enriquecer os comentários e submeter minhas soluções!

Curti bastante os desafios! Dá-lhe declare -n! 🤓

Eu todo serelepe pimpão me preparando pra enviar minhas soluções quando vi [nas Condições no README](https://codeberg.org/blau_araujo/tecnicas-do-shell/src/branch/main/desafios/bstrlib#condi%C3%A7%C3%B5es) que uma função não pode depender das outras. 🤦‍♂️ (mas é claro que fiz meu `trim` executando `ltrim` e depois `rtrim`! 😇) **Sugestão**: colocar estas "Condições" e "Critérios de avaliação" no cabeçalho do script. Amanhã tento ajeitar meu código, enriquecer os comentários e submeter minhas soluções! Curti bastante os desafios! Dá-lhe `declare -n`! 🤓

@blau_araujo fiquei com uma dúvida na descrição do count():

# Uso      : count 'VETOR'
# Descrição: Define o vetor global ARRAY_COUNT com a
#            quantidade de elementos de um vetor.

A minha dúvida é: se ARRAY_COUNT terá apenas um único valor, por que essa necessidade dele ser um vetor?

@blau_araujo fiquei com uma dúvida na descrição do count(): ``` # Uso : count 'VETOR' # Descrição: Define o vetor global ARRAY_COUNT com a # quantidade de elementos de um vetor. ``` A minha dúvida é: se `ARRAY_COUNT` terá apenas um único valor, por que essa necessidade dele ser um vetor?

@blau_araujo fiquei com uma dúvida na descrição do count():

# Uso      : count 'VETOR'
# Descrição: Define o vetor global ARRAY_COUNT com a
#            quantidade de elementos de um vetor.

A minha dúvida é: se ARRAY_COUNT terá apenas um único valor, por que essa necessidade dele ser um vetor?

@meleu Nenhuma, é outro erro de CTR+C CTRL+V...

> @blau_araujo fiquei com uma dúvida na descrição do count(): > ``` > # Uso : count 'VETOR' > # Descrição: Define o vetor global ARRAY_COUNT com a > # quantidade de elementos de um vetor. > ``` > > A minha dúvida é: se `ARRAY_COUNT` terá apenas um único valor, por que essa necessidade dele ser um vetor? > @meleu Nenhuma, é outro erro de CTR+C CTRL+V...

Me enrolei pra submeter minhas soluções pq nos últimos dias da semana passada o bixo pegou no meu trampo.

Hoje reservei um tempinho pra enriquecer os comentários com algumas explicações breves.

Sei que estou fora do prazo, mas está aqui o meu código: https://codeberg.org/meleu/tecnicas-do-shell/src/branch/main/desafios/bstrlib/bstrlib.sh

Foi um desafio bastante divertido (exceto a parte de uma função não poder chamar outra 😤).

Aproveitei para começar minhas aventuras com o BATS. Escrevi alguns testes bem básicos para estas funções e fui codando/refatorando usando estes testes para me dar segurança. Estão publicados aqui: https://codeberg.org/meleu/tecnicas-do-shell/src/branch/main/desafios/bstrlib/tests

Me enrolei pra submeter minhas soluções pq nos últimos dias da semana passada o bixo pegou no meu trampo. Hoje reservei um tempinho pra enriquecer os comentários com algumas explicações breves. Sei que estou fora do prazo, mas está aqui o meu código: https://codeberg.org/meleu/tecnicas-do-shell/src/branch/main/desafios/bstrlib/bstrlib.sh Foi um desafio bastante divertido (exceto a parte de uma função não poder chamar outra 😤). Aproveitei para começar minhas aventuras com o BATS. Escrevi alguns testes bem básicos para estas funções e fui codando/refatorando usando estes testes para me dar segurança. Estão publicados aqui: https://codeberg.org/meleu/tecnicas-do-shell/src/branch/main/desafios/bstrlib/tests

Sei que o prazo terminou na sexta, mas na correria do dia a dia fui fazendo aos poucos minha solução e só consegui terminar e testá-la esse final de semana.
Parece que não mas deu bastante trabalho concluir todas as funções.
Parecem soluções triviais, mas os requisitos pegam de jeito.

Minha solução bstrlib.sh

Sei que o prazo terminou na sexta, mas na correria do dia a dia fui fazendo aos poucos minha solução e só consegui terminar e testá-la esse final de semana. Parece que não mas deu bastante trabalho concluir todas as funções. Parecem soluções triviais, mas os requisitos pegam de jeito. Minha solução [bstrlib.sh](https://codeberg.org/NRZCode/tecnicas-do-shell/src/branch/main/desafios/bstrlib/bstrlib.sh)

Aproveitei para começar minhas aventuras com o BATS. Escrevi alguns testes bem básicos para estas funções e fui codando/refatorando usando estes testes para me dar segurança. Estão publicados aqui: https://codeberg.org/meleu/tecnicas-do-shell/src/branch/main/desafios/bstrlib/tests

@meleu Bem interessante esses testes com BATS...

> Aproveitei para começar minhas aventuras com o BATS. Escrevi alguns testes bem básicos para estas funções e fui codando/refatorando usando estes testes para me dar segurança. Estão publicados aqui: https://codeberg.org/meleu/tecnicas-do-shell/src/branch/main/desafios/bstrlib/tests @meleu Bem interessante esses testes com BATS...

@meleu e @NRZCode

Nenhum dos dois perdeu o prazo e ambos deram um show! Ainda não testei porque estou derrubado de gripe desde quinta, mas já podemos marcar a apresentação dos scripts para a noite de 16/6?

Sobre a premiação, os dois podem me passar o endereço de entrega.

Aos demais, submissões encerradas, mas fiquem à vontade para estudar e comentar os códigos dos colegas.

@meleu e @NRZCode Nenhum dos dois perdeu o prazo e ambos deram um show! Ainda não testei porque estou derrubado de gripe desde quinta, mas já podemos marcar a apresentação dos scripts para a noite de 16/6? Sobre a premiação, os dois podem me passar o endereço de entrega. Aos demais, submissões encerradas, mas fiquem à vontade para estudar e comentar os códigos dos colegas.

podemos marcar a apresentação dos scripts para a noite de 16/6?

Na noite de 16/06 estou disponível a partir de 19:30, se for depois disso tudo OK pra mim!


@NRZCode bem maneira sua solução para o squeeze() 👍, evita termos que iterar cada caractere da string em um loop.

> podemos marcar a apresentação dos scripts para a noite de 16/6? Na noite de 16/06 estou disponível a partir de 19:30, se for depois disso tudo OK pra mim! --- @NRZCode bem maneira sua solução para o `squeeze()` 👍, evita termos que iterar cada caractere da string em um loop.

Na noite de 16/06 estou disponível a partir de 19:30, se for depois disso tudo OK pra mim!

@meleu Maravilha! A transmissão começa às 20h.

> Na noite de 16/06 estou disponível a partir de 19:30, se for depois disso tudo OK pra mim! @meleu Maravilha! A transmissão começa às 20h.
Sign in to join this conversation.
No Label
No Milestone
No project
No Assignees
3 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blau_araujo/tecnicas-do-shell#22
There is no content yet.