Sha256: 87461f1746fa3591d5c7a2cfb075751d88ccd07b0e51ba5fcc15939c8e1f979f

Contents?: true

Size: 1.2 KB

Versions: 213

Compression:

Stored size: 1.2 KB

Contents

module raindrops;

import std.array : appender;
import std.format : formattedWrite;

string convert(int n) {
    auto builder = appender!string();
    if (isPling(n) || isPlang(n) || isPlong(n)) {
        if (isPling(n)) {
            builder.put("Pling");
        }
        if (isPlang(n)) {
            builder.put("Plang");
        }
        if (isPlong(n)) {
            builder.put("Plong");
        }
    } else {
        builder.formattedWrite("%s", n);
    }

    return builder.data;
}

private bool isPling(int n) {
    return n % 3 == 0;
}

private bool isPlang(int n) {
    return n % 5 == 0;
}

private bool isPlong(int n) {
    return n % 7 == 0;
}

unittest {
    assert(convert(1) == "1");
    assert(convert(3) == "Pling");
    assert(convert(5) == "Plang");
    assert(convert(7) == "Plong");
    assert(convert(6) == "Pling");
    assert(convert(9) == "Pling");
    assert(convert(10) == "Plang");
    assert(convert(14) == "Plong");
    assert(convert(15) == "PlingPlang");
    assert(convert(21) == "PlingPlong");
    assert(convert(25) == "Plang");
    assert(convert(35) == "PlangPlong");
    assert(convert(49) == "Plong");
    assert(convert(52) == "52");
    assert(convert(105) == "PlingPlangPlong");
}

Version data entries

213 entries across 213 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/d/exercises/raindrops/example/raindrops.d
trackler-2.2.1.179 tracks/d/exercises/raindrops/example/raindrops.d
trackler-2.2.1.178 tracks/d/exercises/raindrops/example/raindrops.d
trackler-2.2.1.177 tracks/d/exercises/raindrops/example/raindrops.d
trackler-2.2.1.176 tracks/d/exercises/raindrops/example/raindrops.d
trackler-2.2.1.175 tracks/d/exercises/raindrops/example/raindrops.d
trackler-2.2.1.174 tracks/d/exercises/raindrops/example/raindrops.d
trackler-2.2.1.173 tracks/d/exercises/raindrops/example/raindrops.d
trackler-2.2.1.172 tracks/d/exercises/raindrops/example/raindrops.d
trackler-2.2.1.171 tracks/d/exercises/raindrops/example/raindrops.d
trackler-2.2.1.170 tracks/d/exercises/raindrops/example/raindrops.d
trackler-2.2.1.169 tracks/d/exercises/raindrops/example/raindrops.d
trackler-2.2.1.167 tracks/d/exercises/raindrops/example/raindrops.d
trackler-2.2.1.166 tracks/d/exercises/raindrops/example/raindrops.d
trackler-2.2.1.165 tracks/d/exercises/raindrops/example/raindrops.d
trackler-2.2.1.164 tracks/d/exercises/raindrops/example/raindrops.d
trackler-2.2.1.163 tracks/d/exercises/raindrops/example/raindrops.d
trackler-2.2.1.162 tracks/d/exercises/raindrops/example/raindrops.d
trackler-2.2.1.161 tracks/d/exercises/raindrops/example/raindrops.d
trackler-2.2.1.160 tracks/d/exercises/raindrops/example/raindrops.d