How to resolve the algorithm Convert seconds to compound duration step by step in the D programming language

Published on 12 May 2024 09:40 PM
#D

How to resolve the algorithm Convert seconds to compound duration step by step in the D programming language

Table of Contents

Problem Statement

Write a function or program which: This is detailed below (e.g., "2 hr, 59 sec").

Demonstrate that it passes the following three test-cases: Test CasesDetailsThe following five units should be used: However, only include quantities with non-zero values in the output (e.g., return "1 d" and not "0 wk, 1 d, 0 hr, 0 min, 0 sec"). Give larger units precedence over smaller ones as much as possible (e.g., return 2 min, 10 sec and not 1 min, 70 sec or 130 sec) Mimic the formatting shown in the test-cases (quantities sorted from largest unit to smallest and separated by comma+space; value and unit of each quantity separated by space).

Let's start with the solution:

Step by Step solution about How to resolve the algorithm Convert seconds to compound duration step by step in the D programming language

Source code in the d programming language

import std.stdio, std.conv, std.algorithm;

immutable uint SECSPERWEEK = 604_800;
immutable uint SECSPERDAY = 86_400;
immutable uint SECSPERHOUR = 3_600;
immutable uint SECSPERMIN = 60;

string ConvertSeconds(in uint seconds)
{
    uint rem = seconds;

    uint weeks = rem / SECSPERWEEK;
    rem %= SECSPERWEEK;
    uint days = rem / SECSPERDAY;
    rem %= SECSPERDAY;
    uint hours = rem / SECSPERHOUR;
    rem %= SECSPERHOUR;
    uint mins = rem / SECSPERMIN;
    rem %= SECSPERMIN;

    string formatted = "";

    (weeks != 0) ? formatted ~= (weeks.to!string ~ " wk, ") : formatted;
    (days != 0) ? formatted ~= (days.to!string ~ " d, ") : formatted;
    (hours != 0) ? formatted ~= (hours.to!string ~ " hr, ") : formatted;
    (mins != 0) ? formatted ~= (mins.to!string ~ " min, ") : formatted;
    (rem != 0) ? formatted ~= (rem.to!string ~ " sec") : formatted;

    if (formatted.endsWith(", ")) return formatted[0..$-2];

    return formatted;
}

void main()
{
    7_259.ConvertSeconds.writeln;
    86_400.ConvertSeconds.writeln;
    6_000_000.ConvertSeconds.writeln;
}


  

You may also check:How to resolve the algorithm Count occurrences of a substring step by step in the Lua programming language
You may also check:How to resolve the algorithm AKS test for primes step by step in the PureBasic programming language
You may also check:How to resolve the algorithm Five weekends step by step in the Arturo programming language
You may also check:How to resolve the algorithm Determine if only one instance is running step by step in the Julia programming language
You may also check:How to resolve the algorithm Terminal control/Ringing the terminal bell step by step in the Racket programming language