Coding challenges are a great resource for learning coding techniques and improve analytical thinking, this is a collection of challenges from different platforms.
Objective
In this challenge, we’re going to learn about the difference between a class and an instance; because this is an Object Oriented concept, it’s only enabled in certain languages. Check out the Tutorial tab for learning materials and an instructional video!
Task
Write a Person class with an instance variable, age
, and a constructor that
takes an integer, initialAge
, as a parameter. The constructor must assign
initialAge
to age
after confirming the argument passed as initialAge
is
not negative; if a negative argument is passed as initialAge
, the constructor
should set age
to 0
and print Age is not valid, setting age to 0.
. In
addition, you must write the following instance methods:
yearPasses()
should increase the instance variable by1
.amIOld()
should perform the following conditional actions:If
age < 13
, printYou are young.
.If
age >= 13
andage < 18
, printYou are a teenager.
.Otherwise, print
You are old.
.
To help you learn by example and complete this challenge, much of the code is provided for you, but you’ll be writing everything in the future. The code that creates each instance of your Person class is in the main method. Don’t worry if you don’t understand it all quite yet!
Note: Do not remove or alter the stub code in the editor.
Input Format
Input is handled for you by the stub code in the editor.
The first line contains an integer, T
(the number of test cases), and the T
subsequent lines each contain an integer denoting the age
of a Person
instance.
Constraints:
1 <= T <= 4
-5 <= age <= 30
Output Format
Complete the method definitions provided in the editor so they meet the
specifications outlined above; the code to test your work is already in the
editor. If your methods are implemented correctly, each test case will print
2
or 3
lines (depending on whether or not a valid initialAge
was passed
to the constructor).
Sample
input00.txt
4
-1
10
16
18
output00.txt
Age is not valid, setting age to 0.
You are young.
You are young.
You are young.
You are a teenager.
You are a teenager.
You are old.
You are old.
You are old.
Explanation
Test Case 0: initialAge = -1
Because initialAge < 0
, our code must set age
to 0
and print the “Age is
not valid…” message followed by the young message. Three years pass and age = 3
, so we print the young message again.
Test Case 1: initialAge = 10
Because initialAge < 13
, our code should print that the person is young.
Three years pass and age = 13
, so we print that the person is now a teenager.
Test Case 2: initialAge = 16
Because 13 <= initialAge < 18
, our code should print that the person is a
teenager. Three years pass and age = 19
, so we print that the person is old.
Test Case 3: initialAge = 18
Because initialAge >= 18
, our code should print that the person is old. Three
years pass and the person is still old at age = 21
, so we print the old
message again.
The extra line at the end of the output is supposed to be there and is trimmed before being compared against the test case’s expected output. If you’re failing this challenge, check your logic and review your print statements for spelling errors.
Solution
main.go
package main
import "fmt"
func main() {
var T, age int
fmt.Scan(&T)
for i := 0; i < T; i++ {
fmt.Scan(&age)
p := NewPerson(age)
p.amIOld()
for j := 0; j < 3; j++ {
p.yearPasses()
}
p.amIOld()
fmt.Println()
}
}
type Person struct {
age int
}
func NewPerson(age int) Person {
if age <= 0 {
fmt.Println("Age is not valid, setting age to 0.")
age = 0
}
return Person{age}
}
func (p Person) amIOld() {
var s string
if p.age <= 12 {
s = "You are young."
} else if p.age <= 17 {
s = "You are a teenager."
} else {
s = "You are old."
}
fmt.Println(s)
}
func (p *Person) yearPasses() {
p.age++
}
Privacy policy
This site does not use third-party tracking cookies!
If you use private source products, worrying about privacy and using this products is like worrying about global warming and not recycling.. So just don’t.. 😒