| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
This is the Clemson ACM Repo. We are the local chapter of the Association for Computing Machinery at Clemson University in Clemson, South Carolina. We do cool computing stuff for cool computing people!
This repository contains resources developed to aid with doing cool stuff in Computer Science. The main projects are as follows:
Depending on what you are doing you will need different tools:
For all projects and improvements:
If you have any questions related to the issues in the tracker, comment on the issues and mention one of the owners.
All examples assume a topic called foo and a sample problem bar:
All file names should be lowercase with - (hyphens) separating the words in a file. For example, ten-commandments.tex instead of TenCommandments.tex
All sample contest problems should be in a subdirectory called problems and in a further subdirectory based on the problem name. For example if the topic foo has a problem bar the path to the code sample could be foo/problems/bar/bar.cpp.
In the rare circumstance that your finished product is one tex file, place it in general instead
See how the set material is laid out for reference. It is in structures/set
foo the name of the branch where foo is being worked on
foo.tex the hackpack documentation on the algorithm
foo.cpp reference code for the foo data structure in C++ if applicable
bar.in sample input for foo.cpp if applicable
bar.out sample output for foo.cpp if applicable
bar.exe untracked compiled binary DO NOT ADD THIS. It makes it easier to spot in the .gitignore.
bar.py a version of foo.cpp in python if applicable. Alternate versions of algorithms in languages other than C++ should be written after the C++ code is written
bar.example files such as .vimrc that do not have an extension normally
bar.bats Automated test case written in bats
bar-test.cpp An automated unit test written in cpp
bar-test.in Data for the automated unit test
bar-test.out Expected output for the automated unit test
Documentation should be written in LaTeX: For each item in the Hackpack, please include the following in clearly delineated subsections:
* Introductions to the topic.
* Guidelines directing the reader to different sections of the hackpack.
* References to contest problems including statement, sample io, and
lessons learned, but solutions should remain.
* As much as possible, index tags should __NOT__ be removed.
Code Must meet the following standards:
Code should be indented with tabs and not exceed 80 characters per line.
Code must compile under contest conditions: g++ -g -O2 -std=gnu++0x -static $*
Code must be delivered with the passing unit tests.
Code must be commented with detailed explanations and asymptotic notation where applicable
Code must be concise but not at the expense of readability
Source code must solve a problem: It should solve a specific problem and include all relevant IO and supporting code. The algorithm should not be in a vacuum.
The condensed hackpack version should have the following removed:
All code must have tests that meet the following requirements
All tests should be written using the bats framework, and use tap compliant mode. See the structures/set section for an example.
Test at least the upper and lower boundaries of the allowed inputs.
Testing files should be postfixed by -test prior to the extension. For example, foo.cpp test files should be called foo-test.cpp and foo-test.in respectively
Tests should be runnable by calling make test in the directory of the source
The hack pack is from one source built into two versions: one slim (hackpack) and one tome-like (hackpack++, or as denoted in the build scripts, hackpackpp). But how? By a combination of awk and dark magicks, authors can use an extremely limited set of C-preprocessor-like #ifdefs to denote a block of text or code as part of one version or the other. Here's an example:
// #ifdef hackpackpp cout << "This is the Hack Pack: plusplus edition!" << endl; // #endif // #ifdef hackpack cout << "This is just the regular hack pack." << endl; // #endif
The first cout will only appear in the hackpack++'s code listing, and the second will only appear in the normal hackpack. Note that the #ifdefs are commented out: as long as the line ends with the if directive, they'll work properly. You might want to comment them out so that they don't break the compilers. Make sure you have a new line after each directive somewhere!
Here's a list of filetypes where the if directives will work:
The hack pack uses a Makefile for building our PDF output. Here's a rundown of the make rules you'll probably be using:
Contact one of the members of the Hackpack Developers groups with any questions.
| Back | FazBrowse Home | New Git URL |