* update testing instructions
* new test lib: acronym
* new test lib: affine-cipher
* new test lib: armstrong-numbers
* new test lib: atbash-cipher
* new test lib: bob
* new test lib: collatz-conjecture
* new test lib: darts
* new test lib: gigasecond
* update previous exercises with date equal
* new test lib: hamming
* new test lib: hello-world
* new test lib: isogram
* new test lib: leap
* new test lib: luhn
* new test lib: pangram
* new test lib: pythagorean-triplet
* new test lib: raindrops
* new test lib: resistor-color
* new test lib: reverse-string
* new test lib: roman-numerals
* new test lib: series
* new test lib: triangle
* new test lib: trinary
* new test lib: two-fer
* new test lib: word-count
* new test lib: yacht
* Rework test-words into "test" namespace
* using test lib and harness, as discussed in 8th forum
* revert to test-words; merge sieve-test.8th and test.8th
* `needs` does look in libs/
* test-words: fix test_eqa2 to skip tests, normalize test-words.8th
1) All test-words.8th should be identical to avoid maintenance
headaches. The pythagorean-triplet/test-words.8th was not in sync
with the rest.
2) The new test_eqa2 word was missing the run-test? check; so it ignored
SKIP-REST-OF-TESTS.
* test-words.8th: Create lib/test-words.8th main copy
* SKIP-REST-OF-TESTS proof of concept for acronym exercise
* apply to rest of exercises
* markdown files must have exactly one top-level header
* rewrite help files
* re-add special words for pythagorean-triplet
* pythagorean-triplet: new exercise
The instructions, test cases, etc. are taken from the C track.
The example solution uses a formula for generating primitive Pythagorean
triplets directly, as written up in
http://www.asiapacific-mathnews.com/05/0502/0009_0015.pdf
Testing requires a new comparison function for test-words.8th. I call it
test_eqa2, which compares arrays-of-arrays to each other.
* pythagorean-triplet: update test-words.8th to latest version
* Add test script that doesn't rely on docker
* Modify test-words to be able to exit with non-zero exit status for test failures: Luhn exercise only
* Modify test-words to be able to exit with non-zero exit status for test failures: all other exercises
* Tweaks
* be more specific about the exit status
* test_eqa made global. handling for counted tests
* test_eqa made global. added support for counted tests
* counts and additions to test routines
* better naming. smaller code. check for prem exit
The SEDs for most functions were not correct, making it hard to reason
about the program. For example, contains-only-numeric polluted the stack
with a regex that later had to be dropped in various places. The
behavior was correct, but confusing.
There are two reasons for this change:
1. Having the average run time as a float gives the impression of being exact, whereas the actual run time wildly varies due to a wide variety of reasons (e.g. how busy it is on the server). That fractional component will almost never actually conform the real situation.
2. jq is often used to work with track config.json config files (e.g. to add elements to it), and it will remove any trailing .0 fractional part from a number, which caused configlet lint to fail. Those JQ scripts then have to work around this by manually adding .0 to it.