Coder Social home page Coder Social logo

isaacg / exercism-fork-cpp Goto Github PK

View Code? Open in Web Editor NEW

This project forked from exercism/cpp

0.0 0.0 0.0 1.52 MB

Exercism exercises in C++.

Home Page: https://exercism.org/tracks/cpp

License: MIT License

Shell 0.01% C++ 99.65% C 0.01% PowerShell 0.01% Smarty 0.01% CMake 0.33%

exercism-fork-cpp's Introduction

Exercism C++ Track

Exercism Exercises in C++

Contributing Guide

Please see the contributing guides

The most useful way to start contributing to this track is to review Pull Requests and/or some of the open track issues. There are not many active contributors, so anyone reviewing PRs or Issues, even just to +1 someone elses opinion, is appreciated.

Adding an exercise

Here is a list of things that need to be done to add an exercise to this track.

  1. Add the exercise under the exercises/ directory.
  2. Create your test suite based on the canonical tests in the problem specifications repo, and add a comment at the top of the test suite noting the version of the test suite it implements.
  3. Create an example solution and name the files example.cpp and example.h. example.cpp is optional but encouraged.
  4. Add the test to the list in the root CMakeLists.txt file.
  5. Add the test to the config.json file. The configlet can help generate a unique UUID. You can download configlet using the script in bin/fetch-configlet.
  6. Add at least one topic for the exercise in the config.json file. Check the available topics in TOPICS.txt.
  7. Use the configlet tool to generate the README for your exercise.
  8. Try to match the formatting used in the other tests as closely as possible.

Testing an exercise

The Exercism build system has two unusual constraints. First, example solutions must be named example.h and example.cpp; this prevents Exercism from sending these files to the student. Second, student solutions must be named <exercise>.h and <exercise>.cpp, for example anagram.h and anagram.cpp.

The current CMake build system navigates this with an unusual approach: it copies all example solutions from the exercises/ tree to an alternate directory (which is ignored by git), renames the solutions as if they were student exercises, and runs a complete build in this new directory.

Maintainers can largely ignore the alternate exercise directory if they recopy their example solution before running a build. Re-running CMake will recopy all exercise files.

For example, a maintainer can copy, configure, compile, and test all exercises by running the following from the root directory:

cmake . && make

For an individual exercise, in this example anagram, the maintainer should edit:

exercises/anagram/example.h
exercises/anagram/example.cpp
exercises/anagram/anagram_test.cpp

Then copy, configure, compile, and test with:

cmake . && make test_anagram

exercism-fork-cpp's People

Contributors

legalizeadulthood avatar arcuru avatar erikschierboom avatar vaeng avatar kytrinyx avatar kevinwmatthews avatar siebenschlaefer avatar smuroff avatar alexlesang avatar exercism-bot avatar silvanocerza avatar elyashiv avatar jackhughesweb avatar bobahop avatar chgraef avatar bethanyg avatar kevdi avatar dependabot[bot] avatar sbromberger avatar marko213 avatar k4rtik avatar henryrlee avatar tesarect avatar ee7 avatar apprentilab-suzanne avatar pdmoore avatar objarni avatar nobbz avatar duffn avatar ihid avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.