How to resolve the algorithm The Name Game step by step in the D programming language

Published on 12 May 2024 09:40 PM
#D

How to resolve the algorithm The Name Game step by step in the D programming language

Table of Contents

Problem Statement

Write a program that accepts a name as input and outputs the lyrics to the Shirley Ellis song "The Name Game".

The regular verse Unless your name begins with a vowel (A, E, I, O, U), 'B', 'F' or 'M' you don't have to care about special rules. The verse for the name 'Gary' would be like this: At the end of every line, the name gets repeated without the first letter: Gary becomes ary If we take (X) as the full name (Gary) and (Y) as the name without the first letter (ary) the verse would look like this: Vowel as first letter of the name If you have a vowel as the first letter of your name (e.g. Earl) you do not truncate the name. The verse looks like this: 'B', 'F' or 'M' as first letter of the name In case of a 'B', an 'F' or an 'M' (e.g. Billy, Felix, Mary) there is a special rule. The line which would 'rebuild' the name (e.g. bo-billy) is sung without the first letter of the name. The verse for the name Billy looks like this: For the name 'Felix', this would be right:

Let's start with the solution:

Step by Step solution about How to resolve the algorithm The Name Game step by step in the D programming language

Source code in the d programming language

import std.algorithm;
import std.array;
import std.conv;
import std.stdio;
import std.uni;

void printVerse(string name) {
    auto sb = name.map!toLower.array;
    sb[0] = sb[0].toUpper;

    string x = sb.to!string;
    string y;
    switch(sb[0]) {
        case 'A':
        case 'E':
        case 'I':
        case 'O':
        case 'U':
            y = x.map!toLower.to!string;
            break;
        default:
            y = x[1..$];
            break;
    }
    string b = "b" ~ y;
    string f = "f" ~ y;
    string m = "m" ~ y;
    switch (x[0]) {
        case 'B':
            b = y;
            break;
        case 'F':
            f = y;
            break;
        case 'M':
            m = y;
            break;
        default:
            // no adjustment needed
            break;
    }

    writeln(x, ", ", x, ", bo-", b);
    writeln("Banana-fana fo-", f);
    writeln("Fee-fi-mo-", m);
    writeln(x, "!\n");
}

void main() {
    foreach (name; ["Gary","Earl","Billy","Felix","Mary","steve"]) {
        printVerse(name);
    }
}


  

You may also check:How to resolve the algorithm Read a file line by line step by step in the Forth programming language
You may also check:How to resolve the algorithm Department numbers step by step in the Objeck programming language
You may also check:How to resolve the algorithm Extreme floating point values step by step in the Oforth programming language
You may also check:How to resolve the algorithm Last letter-first letter step by step in the Bracmat programming language
You may also check:How to resolve the algorithm Compound data type step by step in the LFE programming language