ðŸŽ‰ Exercism Research is now launched. Help Exercism, help science and have some fun at research.exercism.io ðŸŽ‰

# NickSeagull's solution

## to Clock in the Raku Track

Published at Jul 26 2020 · 0 comments
Instructions
Test suite
Solution

#### Note:

This exercise has changed since this solution was written.

Implement a clock that handles times without dates.

You should be able to add and subtract minutes to it.

Two clocks that represent the same time should be equal to each other.

## Resources

Remember to check out the Raku documentation and resources pages for information, tips, and examples if you get stuck.

## Running the tests

There is a test suite and module included with the exercise. The test suite (a file with the extension `.t6`) will attempt to run routines from the module (a file with the extension `.pm6`). Add/modify routines in the module so that the tests will pass! You can view the test data by executing the command `perl6 --doc *.t6` (* being the name of the test suite), and run the test suite for the exercise by executing the command `prove6 .` in the exercise directory.

## Source

Pairing session with Erin Drummond https://twitter.com/ebdrummond

## Submitting Incomplete Solutions

It's possible to submit an incomplete solution so you can see how others have completed the exercise.

``````unit class Clock;

my constant minutes-in-hour = 60;
my constant hours-in-day = 24;

has \$.hour;
has \$.minute;

submethod TWEAK() {
\$!hour += \$!minute div minutes-in-hour;
\$!minute = \$!minute mod minutes-in-hour;
\$!hour = \$!hour mod hours-in-day;
}

method time {
my \$h = \$!hour >= 10 ?? \$!hour !! "0\$!hour";
my \$m = \$!minute >= 10 ?? \$!minute !! "0\$!minute";
"\$h:\$m";
}

method add-minutes (Int \$amount --> Clock) {
\$!minute += \$amount;
\$.TWEAK;
self;
}

method subtract-minutes (Int \$amount --> Clock) {
\$!minute -= \$amount;
\$.TWEAK;
self;
}``````