wevertor / AlgoritmosGen-ricos

Cheat sheet de algoritmos utilitários implementados de forma genérica e muito pertinentes

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

AlgoritmosGenericos

Caro(a) colega desenvolvedor(a) e/ou aluno(a) de Computação(ou de áreas afins), faça sua contribuição com seus algoritmos e padrões da forma mais genérica e útil possível. Toda linguagem de programação é bem-vinda.

Como Contribuir 👍

  • Mantenha o repositório bem organizado. Evite criar novos arquivos quando possível
  • Quando possível prefira editá-los, acrescentando suas funções, classes.

Por que eu devo contribuir?

  • Se ajude e ajude seus colegas programadores nessa árdua tarefa;
  • Colaborar positivamente em repositórios Git contribuem muito para a sua carreira acadêmica e mais ainda para a profissional, então não economize forks e pull requests na sua vida;
  • Colocar em prática as boas práticas de programação e adquirir novas técnicas, absorvendo conhecimento inclusive de gente mais experiente que você;
  • Por mais inovador ou por mais simplório que seja o seu código, isso não importa: o mérito é o mesmo, a sua contribuição tá valendo muito!;
  • Você vai otimizar o seu tempo, tendo um tipo de cheat sheet de diversos algoritmos, deixando mais fácil de achar, entender e reutilizar código opensource nos seus projetos, ao invés de uma extensa e chata pesquisa na internet;

Achou pouco? Pois saiba que o Hacktoberfest tá vindo aí! Vai me dizer que não quer ganhar a camisa desse ano?? Basta você contribuir em aguns repositórios. Já começa outubro com o pé direito (mesmo se você for canhoto)!

Não se convenceu ainda? Vou fazer um último apelo:

  • Você é uma pessoa legal, e vai ajudar outras pessoas legais a se tornarem pessoas mais legais ainda. Assim como você, lindo(a)!😘

Categorias

OBS: As categorias e exemplos aqui representados são meramente ilustrativos, não correspondendo necessariamente às categorias reais desse repositório. Cada categoria pode ser colocada em uma pasta distinta. O importante é ressaltar o bom senso dos contribuidores e uma razoável organização de código. Ex:

	- Matemática: Aritmética, Álgebra, Propriedades(ex: isprimo(),teto()), Constantes, etc;
	- Estruturas de Dados: criar/deletar, add/rem dados, algoritmos de ordenação;
	- Arquivos: Leitura e Escrita, contar palavras, etc;
	- Imagens e Vídeos: renderização, filtros, etc;
	- Strings: formatação (Ascii, unicode), tokens, parse, etc; 
	- etc...

Contribuidores

Deixa aqui uma assinatura sua para a gente lembrar que você fez parte disso. (Pode ser o nome/apelido + perfil do GitHub; ou se preferir, alguma rede social, canal do youtube ou twitch, sei lá... só não vale o tinder kk).

Exemplo1 (GitHub): :octocat: Super Xandão

Exemplo2 (Instagram): Ednaldo Pereira

Exemplo3 (URL): Eu sou timido😳

Exemplo4 (URL): :trollface:clica aqui!:trollface:

Zoeira à parte! Enfim, deixe a sua marca aqui!!! (E não esqueça de fazer aquele pull request maroto, ok?)

Licença

Por padrão, todos os códigos aqui reunidos estarão sob a licença GNU General Public License v3.0(GPL).

./gpl-v3-logo.svg

Mas se preferir, você pode especificar a licença que quiser (pode ser qualquer uma mesmo, desde que ela permita a sua reutilização para fins acadêmicos). Não coloque copyright (c) ou trademark (tm).

Sugestão: colocar a licença como um comentário no código fonte ou parte da documentação, seja anterior à todo o código, ou junto à assinatura/ ao escopo da função/classe/estrutura ou de qualquer tipo de algoritmo implementado por você.

Exemplo de referenciação da licença em um código em linguagem C:

	#include <stdlib.h>
	#include <stdio.h>
	#include <math.h>

	int main(){

	}

	/*
	* Rodrigo
	* licença Apache 2.0
	* 
	* Fatora um numero inteiro positivo
	* Args: numero inteiro positivo
	* Retorna a lista de fatores quando o num eh  
	*/
	int* fatoracao(int num){
		// Implementacao do Rodrigo aqui
	}


	// feito por Larissa. Sob licença MIT license.

	int isPrimo(int num)
	{
		/*Implementacao da Larissa*/
		// Comentários dela explicando a implementação
	}

	/*
	* Constantes matematicas feitas pelo Raimundo.
	* chame as constantes pelo metodo, exemplo: math.pi()
	*/
	typedef struct _CONST_MATH_ {
			double pi();
			double euler();
		} ConstMath;

	ConstMath math; 

Repare que no exemplo acima, Rodrigo, Larissa e Raimundo contribuiram no mesmo arquivo. Note também que Rodrigo implementou sob Apache 2.0, Larissa sob a licença do MIT, e Raimundo sob GLPv3.0, já que ele não especificou.

Problemas de versionamento??

  • Para evitar muitos versionamentos com diferentes implementações em diferentes branchs de diferentes repositórios gits que fujam ao alcance de todos - Confuso, não? Também achei!- ou seja, para evitar divergências e democratizar a informação aqui obtida, é altamente recomendável fazer os forks, e principalmente os merges (via pull requests) de forma centralizada, a partir de uma mesma fonte - um mesmo repositório.

Ressaltando a importância da organização e valorizando o bom senso dos contribuidores, sugiro que os forks, pull requests, known issues e outros sejam feitos nesse seguinte repositório: https://github.com/Jakiminski/AlgoritmosGen-ricos. Assim, todos teremos acesso facilitado aos algoritmos e mais facilmente difundido, seja pela comunidade acadêmica ou por outros devs.

About

Cheat sheet de algoritmos utilitários implementados de forma genérica e muito pertinentes

License:GNU General Public License v3.0


Languages

Language:Python 69.2%Language:C++ 30.8%