Este repositório contém soluções C++ e Python para Cracking the Coding Interview 6th Edition de Gayle Laakmann McDowell. É certo que existem outros repositórios GitHub com soluções para este livro. Mas como você sabe que o código deles está realmente correto? Se não foi testado, então você não faz isso!
Neste projeto, toda solução C++ possui testes de unidade usando a estrutura C++ Catch, e toda solução Python possui testes de unidade usando a estrutura Python unittest. Aplicamos a correção dos testes automaticamente usando servidores de integração contínua, garantindo que as soluções sejam feitas de código vivo que é executado e testado em cada commit. Pelo que sei, este é o único repositório de soluções da Internet com este nível de rigor de testes: >90% de cobertura de testes automatizados significa que você pode referenciar e contribuir com soluções com confiança.
9 / 9
completo.8 / 8
completo.4 / 6
concluído.11 / 12
concluído.7 / 8
concluído.0 / 10
concluído.0 / 12
concluído.8 / 14
concluído.0 / 8
concluído.10 / 11
concluído.0 / 6
concluído.10 / 11
0 / 7
concluído.0 / 4
concluído.11 / 26
concluído.1 / 26
concluído.2
completos. C++ Total: 81
soluções completas.
9 / 9
completo.8 / 8
completo.6 / 6
concluído.11 / 12
concluído.7 / 8
concluído.0 / 10
concluído.0 / 12
concluído.11 / 14
concluído.0 / 8
concluído.1 / 11
concluído.0 / 6
concluído.0 / 7
concluído.2 / 26
concluído.3 / 26
completo. Python Total: 58
soluções completas.
139
soluções exclusivas completas.O uso do Mac requer a instalação dos gerenciadores de pacotes Homebrew e Pip, o que é feito para você no Makefile:
git clone https://github.com/alexhagiopol/cracking-the-coding-interview.git ctci
cd ctci
make configure-mac
git clone https://github.com/alexhagiopol/cracking-the-coding-interview.git
cd ctci
make configure-ubuntu
Para usuários do Windows, recomendo desenvolver este projeto usando o recurso Windows Subsystem for Linux (WSL) do Windows 10 e, em seguida, seguir as instruções de construção e teste do Ubuntu dentro do WSL. Esta recomendação se deve ao uso de sistemas de construção e execução baseados em Ubuntu, CMake e makefile nos servidores que testam automaticamente alterações no código. Para obter mais informações sobre o desenvolvimento do Windows, consulte a seção Appendix
no final desta página.
O teste é a parte mais importante deste projeto: apenas os testes unitários definem o problema a ser resolvido. No diretório raiz, execute o seguinte para executar todos os testes em Python e C++:
make test
make test
é o comando que mais uso ao desenvolver este projeto. Meu fluxo de trabalho segue:
make test
para ver onde o projeto falha em satisfazer os testes de unidade.make test
seja bem-sucedido.Isso mostrará exatamente quais linhas não são cobertas pelos testes em cada arquivo fonte do Python:
pip install coverage
make test_coverage
O objetivo deste projeto é escrever uma solução testada em Python e C++ para cada problema da 6ª edição do livro. Definitivamente preciso de ajuda, então PRs são bem-vindos. Há muito a fazer porque cada solução precisa de seu próprio pequeno conjunto de dados e infraestrutura para ser testada. Aqui estão algumas maneiras pelas quais você pode ajudar:
Se você tiver alguma contribuição, faça um PR para o branch master
. Sinta-se à vontade para me enviar uma mensagem para esclarecimentos sobre qualquer um dos itens acima.
Em minha própria máquina Windows, desenvolvo usando CLion rodando nativamente no Windows e testo o código usando make test
em uma janela de terminal WSL. Para usuários que não desejam utilizar WSL, desenvolvi a metodologia de construção e teste abaixo:
O projeto pode ser desenvolvido exclusivamente em Windows sem WSL usando Visual Studio 2017. Primeiro clone o código:
git clone https://github.com/alexhagiopol/cracking-the-coding-interview.git
cd ctci
git submodule update --init
Em seguida, instale Python3 e numpy usando o método de sua escolha. Prefiro instalar Python3 e pip3 do site oficial do que instalar numpy via pip:
pip install numpy
Em seguida, abra o projeto no Visual Studio 2017 que possui suporte para CMake. Descobri que o melhor fluxo de trabalho é usar o Visual Studio para editar o código e usar a funcionalidade de depuração. Antes de compilar o código, você deve seguir estas instruções para instruir o Visual Studio a baixar os PDBs necessários. Além disso, este artigo descreve o suporte do Visual Studio CMake com mais detalhes, se você estiver interessado. Um arquivo CMakeSettings.json no diretório raiz do projeto define o local da pasta de build do Visual Studio como dentro da pasta raiz do projeto.
A melhor maneira de executar os testes e ver sua saída é em uma janela do PowerShell, pois o VisualStudio no modo CMake não permite que a saída do console dos arquivos tests.exe
e tests.py
permaneça visível mesmo ao pressionar CTRL + F5 conforme descrito nesta postagem que aplica-se ao uso "normal" do Visual Studio. Estou monitorando a situação do Visual Studio, e quando encontrar soluções melhores irei implementá-las ou publicá-las. Se você souber de algo melhor, entre em contato comigo.
Enquanto isso, no diretório raiz do projeto, você pode executar os testes Python usando ...
python tests.py
... e você pode executar os testes C++ usando ...
.buildx64-Debugtests.exe