From d016f376efc0a983eb5430c227c405351c1f9cb6 Mon Sep 17 00:00:00 2001 From: Marshall Clyburn Date: Mon, 16 Nov 2015 18:27:37 -0500 Subject: [PATCH 01/15] Initial draft of LaTeX style guidelines. --- CONTRIBUTING.md | 171 ++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 26 +------- 2 files changed, 173 insertions(+), 24 deletions(-) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..a9a00be --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,171 @@ +# LaTeX Standards + +## Content + +### Sections on Algorithms and Data Structures + +The following subsections __must__ be present before a section will be considered for inclusion: + +- Description +- Reference (only for data structures) +- Applications +- Sample Problem + - Input Format + - Sample Input + - Output Format + - Sample Output + - 'Lessons Learned' + +#### Description + +All data structures and algorithms should include a description section detailing: +- what it does +- the problem(s) that it solves +- how it works +- construction and run times in O-notation + +#### Reference + +If the section is for a data structure, it should include a subsection containing skeleton reference code. +The reference code should include only what is necessary to use the data structure and perhaps usage examples in a main function if its use is not obvious enough. + +#### Applications + +A list of uses for the algorithm or data structure. +For example, one application of a maximum flow algorithm is 'finding a minimum set of edges to disconnect a source and sink'. + +#### Sample Problem + +A problem whose solution utilizes the algorithm or data structure the section describes. +Each problem should include a description that _clearly_ describes the problem. Following the problem description should be as follows: + +##### Input Format + +A precise description of the input that will be supplied to the code that will solve the problem described. + +##### Sample Input + +An example input that fully demonstrates and conforms to the format described in 'Input Format'. +Use the `\acmlisting` command to insert your sample input. +See the 'Code Listings' + +##### Output Format + +A precise description of the output that should be produced from the code that will solve the problem described. + +##### Sample Output + +An example input that conforms to the format described in 'Output Format'. +Use the `\acmlisting` command to insert your sample output. +See the 'Code Listings' section under 'Format' for more information. + +##### Sample Solution + +A solution for the problem described. +All solutions should be written in C++ __before__ providing solutions in other languages. + +##### Lessons Learned + +An unordered list of at least one non-trivial observation you had while writing the solution to your sample problem. + +*** + +### Figures and Images + +If adding a visual to a section would greatly aid in the understanding of the topic, doing so is highly encouraged. +Submissions should preferably be in the Encapsulated PostScript format. +This provides very clear visuals, even when scaled up or down. +Do _not_ simply pull images from the Internet. +Doing so may violate the Hack Pack licensing terms. +Any submission found to be doing so will be rejected until the appropriate changes are made. + +### Indexing + +Indexing entries is very helpful for finding relevant entries in the Hack Pack. +Please do not sprinkle index entries _too_ liberally throughout, as this will cause the size of the index to explode and make it harder to locate information. +An example of a good set of index entries can be found in the section on the Sieve of Eratosthenes. +Entries include: + +- sieve +- primes +- Eratosthenes + +### Citations + +Information pulled from other sources need to be properly cited. +Any information included in submissions that is not properly cited will cause the entire section to be rejected from consideration for inclusion. +References should use BibTeX where applicable. + +## Format + +### General Rules to Type By + +- only one line per sentence +- use tabs for indentation +- do not use LaTeX comments + +### Sectioning + +All sections should have headers using the appropriate LaTeX sectioning commands: +| Section | Command | +|---------|:-------:| +|section title|`\section{}`| +|Applications|`\subsection{}`| +|Sample Problem|`\subsection{}`| +|Input Format|`\subsubsection{}`| +|Sample Input|`\subsubsection{}`| +|Output Format|`\subsubsection{}`| +|Sample Output|`\subsubsection{}`| +|Lessons Learned|`\subsubsection{}`| + +### Code Listings + +Always use the `\acmlisting` command when including code, input, or output in the Hack Pack. +The label and caption should always be set as well; both should be set to the same value. +A code listing for a sample problem titled 'Cows Amok' would be inserted like so: + +`\acmlisting[label=Cows Amok, caption=Cows Amok]{./path/to/cows-amok.cpp}` + +Sample input for the problem would be inserted like so: + +`\acmlisting[label=Cows Amok Sample Input, caption=Cows Amok Sample Input]{./path/to/cows-amok.in}` + +Sample output for the problem would be inserted like so: + +`\acmlisting[label=Cows Amok Sample Output, caption=Cows Amok Sample Output]{./path/to/cows-amok.out}` + +### Style Changes + +Any changes to the style of the document must be cleared with the core Hack Pack team before implementing. +Any submissions that change the style of document (even if not global) without prior approval will be rejected. + +## Condensing + +Each submission to the Hack Pack must also have a condensed version for inclusion in the condensed Hack Pack as well. +This is trivial. + +### Content + +A complete, condensed section of the Hack Pack should include: + +- a brief description of the problem (possibly gleaned from the full description) +- reference code (if the section is for a data structure) +- sample solutions for each included problem + +### How To Condense Your Section + +We have defined special keywords (from a familiar language) to separate information that should be displayed in each section: `#define hackpack`, `#define hackpackpp`, and `#endif`. +Wrap a section with the `#define hackpack` and `#endif` to include the section only in the condensed version of the Hack Pack. +Wrap a section with the `#define hackpack` and `#endif` to include the section only in the full version of the Hack Pack. +Any section that is not wrapped with either set of keywords will be included in both versions of the Hack Pack. + +## Submission + +Before submitting a section for inclusion in the Hack Pack, ensure that both the Hack Pack and Hack Pack++ build (using only `make`) on the McAdams lab machines _without stopping_. + +## Still Not Sure? + +We strive to make our content as clear and concise as possible, but it is always possible that we have left some content off. +If you have any question about any part of your LaTeX, it is always a good idea to consult entries that have already made it into the Hack Pack. +In particular, the section on INSERT SECTION HERE is an example of an excellent addition to the Hack Pack. +Failing that, feel free to email any of the core Hack Pack team. diff --git a/README.md b/README.md index 4b475a3..c7aefd5 100644 --- a/README.md +++ b/README.md @@ -89,31 +89,9 @@ All examples assume a topic called `foo` and a sample problem `bar`: + `bar-test.in` Data for the automated unit test + `bar-test.out` Expected output for the automated unit test +#### Writing Documentation - - - -#### Writing Documentation -Documentation should be written in `LaTeX`: -For each item in the Hackpack, please include the following in clearly delineated subsections: - -1. Name and Brief Description of the topic -2. Data structures should have a "Reference" section with a code sample of only commonly used functions -3. A list of possible uses and applications -4. 2-3 possible contest problems; preferably of varying difficulty -5. Sample code that answers one of the contest problems -6. Please use the `\acmlisting` for code listings. A caption and label should be specified. If applicable, line ranges should be specified to limit the amount of text displayed. -7. It would be preferred if each set of sample code had some lessons learned to point out some key elements of the implementation -8. References using BibTeX where applicable -9. Should be "compiled" properly by make -10. Each sentence must be on a separate line. -11. The condensed version of the hackpack should have the following removed: - - * 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. +Please see CONTRIBUTING.md for guidelines concerning documentation. #### Writing Code Code Must meet the following standards: From 89607f97d6c8427b4833f2277b8f6377efe43d00 Mon Sep 17 00:00:00 2001 From: Marshall Clyburn Date: Mon, 16 Nov 2015 20:16:04 -0500 Subject: [PATCH 02/15] Fix typo. --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a9a00be..e32cb41 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -92,7 +92,7 @@ Entries include: ### Citations -Information pulled from other sources need to be properly cited. +Information pulled from other sources needs to be properly cited. Any information included in submissions that is not properly cited will cause the entire section to be rejected from consideration for inclusion. References should use BibTeX where applicable. From ca4ef7f3df8f09b48b2e754f713aed6833f60659 Mon Sep 17 00:00:00 2001 From: Marshall Clyburn Date: Mon, 16 Nov 2015 20:19:57 -0500 Subject: [PATCH 03/15] Attempt to fix table. --- CONTRIBUTING.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e32cb41..037bfbc 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -109,14 +109,14 @@ References should use BibTeX where applicable. All sections should have headers using the appropriate LaTeX sectioning commands: | Section | Command | |---------|:-------:| -|section title|`\section{}`| -|Applications|`\subsection{}`| -|Sample Problem|`\subsection{}`| -|Input Format|`\subsubsection{}`| -|Sample Input|`\subsubsection{}`| -|Output Format|`\subsubsection{}`| -|Sample Output|`\subsubsection{}`| -|Lessons Learned|`\subsubsection{}`| +| section title | `\section{}` | +| Applications | `\subsection{}` | +| Sample Problem | `\subsection{}` | +| Input Format | `\subsubsection{}` | +| Sample Input | `\subsubsection{}` | +| Output Format | `\subsubsection{}` | +| Sample Output | `\subsubsection{}` | +| Lessons Learned | `\subsubsection{}` | ### Code Listings From 8f0154dc29d8de92073d432455fc19b9c246fc8d Mon Sep 17 00:00:00 2001 From: Marshall Clyburn Date: Mon, 16 Nov 2015 20:24:08 -0500 Subject: [PATCH 04/15] Really fix table this time. --- CONTRIBUTING.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 037bfbc..0d9e4d1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -107,6 +107,7 @@ References should use BibTeX where applicable. ### Sectioning All sections should have headers using the appropriate LaTeX sectioning commands: + | Section | Command | |---------|:-------:| | section title | `\section{}` | From 6b7d45676ab1d62e9062f667b3f82e086a7e8d59 Mon Sep 17 00:00:00 2001 From: Marshall Clyburn Date: Mon, 16 Nov 2015 23:19:51 -0500 Subject: [PATCH 05/15] Extra formatting rules. --- CONTRIBUTING.md | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0d9e4d1..ca19412 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -100,9 +100,14 @@ References should use BibTeX where applicable. ### General Rules to Type By -- only one line per sentence -- use tabs for indentation -- do not use LaTeX comments +- Use only one sentence per line. This makes it easier to review changes to the documentation. +- Use tabs for indentation. This allows editors to choose their preferred tab width. +- Do not use LaTeX comments. Anything important enough to put in a comment should be put into the text. This excludes primarily technical parts like `style.tex`. + +### Indentation + +Please use one tab per indent. +Any text wrapped in the `\begin{}` and `\end{}` commands should be indented; this includes lists (both itemize and description). ### Sectioning @@ -168,5 +173,5 @@ Before submitting a section for inclusion in the Hack Pack, ensure that both the We strive to make our content as clear and concise as possible, but it is always possible that we have left some content off. If you have any question about any part of your LaTeX, it is always a good idea to consult entries that have already made it into the Hack Pack. -In particular, the section on INSERT SECTION HERE is an example of an excellent addition to the Hack Pack. -Failing that, feel free to email any of the core Hack Pack team. +In particular, the section on sets is an example of an excellent addition to the Hack Pack. +Failing that, feel free to email any of the Hack Pack development team, `@clemsonacm/hackpack-developers`. From ae741db1363400ece6e8fc8ea21921652f4762b5 Mon Sep 17 00:00:00 2001 From: Marshall Clyburn Date: Mon, 16 Nov 2015 23:22:08 -0500 Subject: [PATCH 06/15] Add extra bit on indexing. --- CONTRIBUTING.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ca19412..3d9b318 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -83,6 +83,8 @@ Any submission found to be doing so will be rejected until the appropriate chang Indexing entries is very helpful for finding relevant entries in the Hack Pack. Please do not sprinkle index entries _too_ liberally throughout, as this will cause the size of the index to explode and make it harder to locate information. +If an index entry for the term you are looking to add already exists, add it anyway. +It is possible that a reader may be searching for your section. An example of a good set of index entries can be found in the section on the Sieve of Eratosthenes. Entries include: From c871e773db10e359034c0ef0f8ce6b532b6466c9 Mon Sep 17 00:00:00 2001 From: Marshall Clyburn Date: Mon, 16 Nov 2015 23:23:49 -0500 Subject: [PATCH 07/15] Add recommended drawing tools. --- CONTRIBUTING.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3d9b318..a66ad31 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -79,6 +79,11 @@ Do _not_ simply pull images from the Internet. Doing so may violate the Hack Pack licensing terms. Any submission found to be doing so will be rejected until the appropriate changes are made. +Recommended tools: + +- Ipe +- Xfig + ### Indexing Indexing entries is very helpful for finding relevant entries in the Hack Pack. From 99d051957db97214e853d08e5cee6ac69903922a Mon Sep 17 00:00:00 2001 From: Marshall Clyburn Date: Tue, 17 Nov 2015 12:15:08 -0500 Subject: [PATCH 08/15] Fix #ifdefs. --- CONTRIBUTING.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a66ad31..fb1a911 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -167,9 +167,9 @@ A complete, condensed section of the Hack Pack should include: ### How To Condense Your Section -We have defined special keywords (from a familiar language) to separate information that should be displayed in each section: `#define hackpack`, `#define hackpackpp`, and `#endif`. -Wrap a section with the `#define hackpack` and `#endif` to include the section only in the condensed version of the Hack Pack. -Wrap a section with the `#define hackpack` and `#endif` to include the section only in the full version of the Hack Pack. +We have defined special keywords (from a familiar language) to separate information that should be displayed in each section: `#ifdef hackpack`, `#ifdef hackpackpp`, and `#endif`. +Wrap a section with the `#ifdef hackpack` and `#endif` to include the section only in the condensed version of the Hack Pack. +Wrap a section with the `#ifdef hackpack` and `#endif` to include the section only in the full version of the Hack Pack. Any section that is not wrapped with either set of keywords will be included in both versions of the Hack Pack. ## Submission From bf60f833fbbadb4b57d487c9dd8782fe761247a8 Mon Sep 17 00:00:00 2001 From: Marshall Clyburn Date: Tue, 17 Nov 2015 12:15:59 -0500 Subject: [PATCH 09/15] Include applications in condensed version. --- CONTRIBUTING.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index fb1a911..0be3f1c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -162,6 +162,7 @@ This is trivial. A complete, condensed section of the Hack Pack should include: - a brief description of the problem (possibly gleaned from the full description) +- a list of applications - reference code (if the section is for a data structure) - sample solutions for each included problem From bdf99c648d77ccce1aa66a3767e2486a417b87b5 Mon Sep 17 00:00:00 2001 From: Marshall Clyburn Date: Tue, 17 Nov 2015 12:16:50 -0500 Subject: [PATCH 10/15] Include note about indexing. --- CONTRIBUTING.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0be3f1c..7e973df 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -172,6 +172,7 @@ We have defined special keywords (from a familiar language) to separate informat Wrap a section with the `#ifdef hackpack` and `#endif` to include the section only in the condensed version of the Hack Pack. Wrap a section with the `#ifdef hackpack` and `#endif` to include the section only in the full version of the Hack Pack. Any section that is not wrapped with either set of keywords will be included in both versions of the Hack Pack. +Ensure that index entries are present in both versions of the Hack Pack. ## Submission From 354463810247405a15fbab5ee9a7d5259eebdb1c Mon Sep 17 00:00:00 2001 From: Marshall Clyburn Date: Wed, 18 Nov 2015 23:32:53 -0500 Subject: [PATCH 11/15] Add a quick start section. --- CONTRIBUTING.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7e973df..cb38094 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,5 +1,26 @@ # LaTeX Standards +## Quick Start + +All sections must have: + +- a description +- reference code showcasing capabilities (only if the section is for a data structure) +- applications for the algorithm/data structure +- sample problem using the algorithm/data structure (with sample format and I/O) + +The 'Sectioning' section lists the appropriate sectioning commands to use for each portion of a section. + +Please wrap content appropriate for only the full-sized Hack Pack++ with `% #ifdef hackpackpp` and `% #endif`. +Wrap content appropriate for only the condensed Hack Pack with `% #ifdef hackpack` and `% #endif`. + +See the Content section for more information. + +### Things to Keep In Mind + +- one line for each sentence +- indent using tabs only + ## Content ### Sections on Algorithms and Data Structures From e2d0eec2f76a5d4582a2b060920f6d7e2ce5ce4d Mon Sep 17 00:00:00 2001 From: Marshall Clyburn Date: Wed, 18 Nov 2015 23:35:49 -0500 Subject: [PATCH 12/15] Add header questions. This will help spot out desired sections faster. --- CONTRIBUTING.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index cb38094..63568d6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ # LaTeX Standards -## Quick Start +## Quick Start - What Should I Know Getting Started? All sections must have: @@ -21,7 +21,7 @@ See the Content section for more information. - one line for each sentence - indent using tabs only -## Content +## Content - What Goes Into a Section? ### Sections on Algorithms and Data Structures @@ -124,7 +124,7 @@ Information pulled from other sources needs to be properly cited. Any information included in submissions that is not properly cited will cause the entire section to be rejected from consideration for inclusion. References should use BibTeX where applicable. -## Format +## Format - How Should My LaTeX Look? ### General Rules to Type By @@ -173,7 +173,7 @@ Sample output for the problem would be inserted like so: Any changes to the style of the document must be cleared with the core Hack Pack team before implementing. Any submissions that change the style of document (even if not global) without prior approval will be rejected. -## Condensing +## Condensing - How Is This 'Condensing' Done? Each submission to the Hack Pack must also have a condensed version for inclusion in the condensed Hack Pack as well. This is trivial. @@ -195,7 +195,7 @@ Wrap a section with the `#ifdef hackpack` and `#endif` to include the section on Any section that is not wrapped with either set of keywords will be included in both versions of the Hack Pack. Ensure that index entries are present in both versions of the Hack Pack. -## Submission +## Submission - What Should I Do Before Submitting? Before submitting a section for inclusion in the Hack Pack, ensure that both the Hack Pack and Hack Pack++ build (using only `make`) on the McAdams lab machines _without stopping_. From 569f52a16182a4d48efc6326e915290b3b0b58fc Mon Sep 17 00:00:00 2001 From: Marshall Clyburn Date: Thu, 28 Jan 2016 22:24:38 -0500 Subject: [PATCH 13/15] Make bullet point grammar consistent. --- CONTRIBUTING.md | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 63568d6..469b591 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,10 +4,10 @@ All sections must have: -- a description -- reference code showcasing capabilities (only if the section is for a data structure) -- applications for the algorithm/data structure -- sample problem using the algorithm/data structure (with sample format and I/O) +- a description. +- reference code showcasing capabilities (only if the section is for a data structure). +- applications for the algorithm/data structure. +- sample problem using the algorithm/data structure (with sample format and I/O). The 'Sectioning' section lists the appropriate sectioning commands to use for each portion of a section. @@ -18,8 +18,9 @@ See the Content section for more information. ### Things to Keep In Mind -- one line for each sentence -- indent using tabs only +Please remember to: +- one line for each sentence. +- indent using tabs only. ## Content - What Goes Into a Section? @@ -40,10 +41,10 @@ The following subsections __must__ be present before a section will be considere #### Description All data structures and algorithms should include a description section detailing: -- what it does -- the problem(s) that it solves -- how it works -- construction and run times in O-notation +- what it does. +- the problem(s) that it solves. +- how it works. +- construction and run times in O-notation. #### Reference @@ -128,9 +129,10 @@ References should use BibTeX where applicable. ### General Rules to Type By -- Use only one sentence per line. This makes it easier to review changes to the documentation. -- Use tabs for indentation. This allows editors to choose their preferred tab width. -- Do not use LaTeX comments. Anything important enough to put in a comment should be put into the text. This excludes primarily technical parts like `style.tex`. +Please, remember to: +- use only one sentence per line. +- use tabs for indentation. +- not use LaTeX comments (this excludes primarily technical parts like `style.tex`). ### Indentation @@ -182,10 +184,10 @@ This is trivial. A complete, condensed section of the Hack Pack should include: -- a brief description of the problem (possibly gleaned from the full description) -- a list of applications -- reference code (if the section is for a data structure) -- sample solutions for each included problem +- a brief description of the problem (possibly gleaned from the full description). +- a list of applications. +- reference code (if the section is for a data structure). +- sample solutions for each included problem. ### How To Condense Your Section From 1893ca3502863f52977025c0e04911db43e67348 Mon Sep 17 00:00:00 2001 From: Marshall Clyburn Date: Thu, 28 Jan 2016 22:28:26 -0500 Subject: [PATCH 14/15] Remove 'algorithm code unnecessary' implication. This is likely up for debate in issue #63. --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 469b591..ac2f3fa 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -48,7 +48,7 @@ All data structures and algorithms should include a description section detailin #### Reference -If the section is for a data structure, it should include a subsection containing skeleton reference code. +Each section should include a subsection containing skeleton reference code. The reference code should include only what is necessary to use the data structure and perhaps usage examples in a main function if its use is not obvious enough. #### Applications From 242dad9efa10751df54bfc2e6a0e7586fbe4dd26 Mon Sep 17 00:00:00 2001 From: Marshall Clyburn Date: Thu, 28 Jan 2016 22:48:35 -0500 Subject: [PATCH 15/15] Reword quick start section. --- CONTRIBUTING.md | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ac2f3fa..6924f23 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,17 +2,28 @@ ## Quick Start - What Should I Know Getting Started? -All sections must have: +The Hack Pack is an amalgam of algorithms, data structures, and all sorts of handy tidbits intended for use in a programming contest environment. +Contributions are very much appreciated. +Content for the Hack Pack is written in LaTeX. +To contribute a section for the Hack Pack, your submission should include: - a description. -- reference code showcasing capabilities (only if the section is for a data structure). -- applications for the algorithm/data structure. +- reference code showcasing capabilities. +- a list of applications for the algorithm/data structure. - sample problem using the algorithm/data structure (with sample format and I/O). +To keep the document well-organized, there is a set of commands designated for use to mark each part of the Hack Pack. The 'Sectioning' section lists the appropriate sectioning commands to use for each portion of a section. +It is possible to create two versions of the document. +One is a more informative, but heavyweight document that includes all information about a topic possible. +The other is a more compact document that excludes information that is likely unwanted in a contest environment. +They are referred to as the 'Hack Pack++' and 'Hack Pack' respectively. +Each section of the Hack Pack needs to properly slim itself down when the leaner version is created. +We have a special method to enable this. Please wrap content appropriate for only the full-sized Hack Pack++ with `% #ifdef hackpackpp` and `% #endif`. Wrap content appropriate for only the condensed Hack Pack with `% #ifdef hackpack` and `% #endif`. +Any content that is to appear in both versions of the Hack Pack does not need to be wrapped with anything. See the Content section for more information.