How to resolve the algorithm General FizzBuzz step by step in the Ceylon programming language

Published on 12 May 2024 09:40 PM

How to resolve the algorithm General FizzBuzz step by step in the Ceylon programming language

Table of Contents

Problem Statement

Write a generalized version of FizzBuzz that works for any list of factors, along with their words. This is basically a "fizzbuzz" implementation where the user supplies the parameters. The user will enter the max number, then they will enter the factors to be calculated along with the corresponding word to be printed. For simplicity's sake, assume the user will input an integer as the max number and 3 factors, each with a word associated with them.

For example, given: In other words: For this example, print the numbers 1 through 20, replacing every multiple of 3 with "Fizz", every multiple of 5 with "Buzz", and every multiple of 7 with "Baxx". In the case where a number is a multiple of at least two factors, print each of the words associated with those factors in the order of least to greatest factor. For instance, the number 15 is a multiple of both 3 and 5; print "FizzBuzz". If the max number was 105 instead of 20, you would print "FizzBuzzBaxx" because it's a multiple of 3, 5, and 7.

Let's start with the solution:

Step by Step solution about How to resolve the algorithm General FizzBuzz step by step in the Ceylon programming language

Source code in the ceylon programming language

shared void run() {
	
	print("enter the max value");
	assert(exists maxLine = process.readLine(), 
		exists max = parseInteger(maxLine));

	print("enter your number/word pairs
	       enter a blank line to stop");

	variable value divisorsToWords = map {};

	while(true) {
		value line = process.readLine();
		assert(exists line);
		if(line.trimmed.empty) {
			break;
		}
		value pair = line.trimmed.split().sequence();
		if(exists first = pair.first, 
			exists integer = parseInteger(first), 
			exists word = pair[1]) {
			divisorsToWords = divisorsToWords.patch(map {integer -> word});
		}
	}

	value divisors = divisorsToWords.keys.sort(byIncreasing(Integer.magnitude));
	for(i in 1..max) {
		value builder = StringBuilder();
		for(divisor in divisors) {
			if(divisor.divides(i), exists word = divisorsToWords[divisor]) {
				builder.append(word);
			}
		}
		if(builder.empty) {
			print(i);
		} else {
			print(builder.string);
		}
	}
}


  

You may also check:How to resolve the algorithm Non-decimal radices/Output step by step in the Mathematica/Wolfram Language programming language
You may also check:How to resolve the algorithm Partition an integer x into n primes step by step in the Java programming language
You may also check:How to resolve the algorithm Proper divisors step by step in the ARM Assembly programming language
You may also check:How to resolve the algorithm Magic squares of doubly even order step by step in the Perl programming language
You may also check:How to resolve the algorithm Hello world/Text step by step in the Sisal programming language