How to resolve the algorithm Loops/With multiple ranges step by step in the Kotlin programming language
How to resolve the algorithm Loops/With multiple ranges step by step in the Kotlin programming language
Table of Contents
Problem Statement
Some languages allow multiple loop ranges, such as the PL/I example (snippet) below.
Simulate/translate the above PL/I program snippet as best as possible in your language, with particular emphasis on the do loop construct. The do index must be incremented/decremented in the same order shown. If feasible, add commas to the two output numbers (being displayed). Show all output here.
Let's start with the solution:
Step by Step solution about How to resolve the algorithm Loops/With multiple ranges step by step in the Kotlin programming language
The provided Kotlin code is a program that calculates the sum and product of a series of integers within specified ranges. Here's a detailed explanation of the code:
1. Custom 'pow' Function:
infix fun Int.pow(e: Int): Int {
if (e == 0) return 1
var prod = this
for (i in 2..e) {
prod *= this
}
return prod
}
This function defines a custom infix 'pow' operator that calculates the exponentiation of an integer. It uses a loop to repeatedly multiply the number by itself.
2. Main Function:
The code defines two versions of the 'main' function, which is the entry point of the program.
Version 1:
fun main(args: Array<String>) {
// ...
}
Version 2:
fun main() {
// ...
}
Both versions of the 'main' function do the same thing.
3. Variables:
The program initializes several integer variables, which are used as constants and boundaries for the ranges:
x
,y
,z
,one
,three
,seven
: Constants used in the ranges.p
: Calculated as11 ^ 5
using the custom 'pow' operator.
4. 'process' Function:
fun process(j: Int) {
sum += abs(j)
if (abs(prod) < (1 shl 27) && j != 0) prod *= j
}
This function performs two operations:
- Adds the absolute value of
j
to thesum
. - Multiplies
prod
byj
if the absolute value ofprod
is less than2^27
andj
is not 0.
5. Ranges and Iterations:
The code uses several ranges defined by the variables and the step values to iterate through a series of integers. Each iteration calls the 'process' function with the value of the iterator variable (j
).
6. Calculations:
- The program calculates the sum of the absolute values of all the integers in the ranges.
- It also calculates the product of the non-zero integers in the ranges.
7. Printing the Results:
Finally, the program prints the calculated sum
and prod
to the standard output using System.out.printf
.
8. Enhanced Version (Version 2):
The second version of the 'main' function uses an infix function called '^
' for exponentiation and the 'flatten' function to combine multiple ranges into a single sequence. This version is slightly more concise and modern.
Source code in the kotlin programming language
// Version 1.2.70
import kotlin.math.abs
infix fun Int.pow(e: Int): Int {
if (e == 0) return 1
var prod = this
for (i in 2..e) {
prod *= this
}
return prod
}
fun main(args: Array<String>) {
var prod = 1
var sum = 0
val x = 5
val y = -5
val z = -2
val one = 1
val three = 3
val seven = 7
val p = 11 pow x
fun process(j: Int) {
sum += abs(j)
if (abs(prod) < (1 shl 27) && j != 0) prod *= j
}
for (j in -three..(3 pow 3) step three) process(j)
for (j in -seven..seven step x) process(j)
for (j in 555..550-y) process(j)
for (j in 22 downTo -28 step three) process(j)
for (j in 1927..1939) process(j)
for (j in x downTo y step -z) process(j)
for (j in p..p + one) process(j)
System.out.printf("sum = % ,d\n", sum)
System.out.printf("prod = % ,d\n", prod)
}
import kotlin.math.abs
import kotlin.math.pow
private infix fun Int.`^`(exponent: Int): Int = toDouble().pow(exponent).toInt()
fun main() {
var prod = 1
var sum = 0
val x = 5
val y = -5
val z = -2
val one = 1
val three = 3
val seven = 7
val p = 11 `^` x
for (j in sequenceOf(
-three..(3 `^` 3) step three,
-seven..seven step x,
555..550-y,
22 downTo -28 step three,
1927..1939,
x downTo y step -z,
p..p + one
).flatten()) {
sum += abs(j)
if (abs(prod) < (2 `^` 27) && j != 0) prod *= j
}
System.out.printf("sum = % ,d\n", sum)
System.out.printf("prod = % ,d\n", prod)
}
You may also check:How to resolve the algorithm JortSort step by step in the OCaml programming language
You may also check:How to resolve the algorithm Extend your language step by step in the C# programming language
You may also check:How to resolve the algorithm Non-continuous subsequences step by step in the Tcl programming language
You may also check:How to resolve the algorithm Day of the week step by step in the Scala programming language
You may also check:How to resolve the algorithm Bioinformatics/base count step by step in the EasyLang programming language