This exercise is intended to help you assess your progress with the concepts and techniques we've covered during the week.
For these questions, write a short snippet of code that meets
the requirement. In cases where the question mentions a "given"
data value, use the variable given
to refer to it (instead of re-writing
the information).
class PizzaOven
def cook_pizza
"mmm 'za"
end
end
2. Define a class called Student
which is instantiated with a "name" value and which has a method name
that returns this value
class Student
attr_reader :name
def initialize(name)
@name = name
end
end
OR
class Student
def initialize(name)
@name = name
end
def name
@name
end
end
doubled = [1,2,3,4,5].map do |i|
i * 2
end
sum = doubled.reduce(0) do |sum, i|
sum + i
end
OR
sum = 0
[1,2,3,4,5].each do |i|
sum += i * 2
end
git init
Given a hypothetical Pizza
class which has an instance method is_tasty?
that always
returns true, write a simple Minitest test that tests this behavior.
require "minitest/autorun"
class PizzaTest < Minitest::Test
def test_is_tasty
assert Pizza.new.is_tasty?
end
end
Suppose the Pizza
class also has a method style
which randomly returns one of:
"supreme"
, "mediterranean"
, or "cheese"
. Write a test that confirms that the
returned pizza style is within this list.
require "minitest/autorun"
class PizzaTest < Minitest::Test
def test_style_is_within_expected_list
expected = ["supreme", "mediterranean", "cheese"]
assert expected.include?(Pizza.new.style)
end
end
git add some_file.rb
git commit -m "adding changes for some file"
Define a Student
class which, when created, has an attitude
attribute.
attitude
should start out with the value "cheerful", and the Student
class should
provide a "reader" method that allows us to access the value of its attitude
.
Additionally, add an assign_homework
method to Student
. When assigned_homework
is
invoked, if the student's attitude
is "cheerful"
, it should become "dubious"
. If
the value is currently "dubious"
it should become "perturbed"
. If the value is currently
"perturbed"
, it should become "dazed"
. Assigning homework to a "dazed"
student has no
effect.
class Student
attr_reader :attitude
def initialize
@attitude = "cheerful"
end
def assign_homework
if attitude == "cheerful"
@attitude = "dubious"
elsif attitude == "dubious"
@attitude = "perturbed"
elsif attitude == "perturbed"
@attitude = "dazed"
end
end
end
Building on the Student
class from the previous example, update the assign_homework
method
to accept an argument. The argument will be a String
containing a short description of the
assignment. For example we might use it like this:
s = Student.new
s.assign_homework("Write a linked list")
Then, add an assignments
method to Student
. assignments
should return a list of
all the assignments that have been given, separated by a comma and a space. For example:
s = Student.new
s.attitude
=> "cheerful"
s.assign_homework("write a linked list")
s.attitude
=> "dubious"
s.assign_homework("write a BST")
s.attitude
=> "perturbed"
s.assignments
=> "write a linked list, write a BST"
class Student
attr_reader :attitude
def initialize
@attitude = "cheerful"
@assignments = []
end
def assign_homework(assignment)
@assignments << assignment
if attitude == "cheerful"
@attitude = "dubious"
elsif attitude == "dubious"
@attitude = "perturbed"
elsif attitude == "perturbed"
@attitude = "dazed"
end
end
def assignments
@assignments.join(", ")
end
end
Create a new class SurlyStudent
which inherits from the Student
class above.
However, whenever you ask a SurlyStudent
for their attitude, they always respond
with "disgruntled"
class SurlyStudent < Student
def attitude
"disgruntled"
end
end
For example:
s1 = Student.new
s2 = Student.new
s3 = Student.new
s1.assign_homework("linked list")
s1.assign_homework("sorting algos")
s2.assign_homework("write a c compiler")
s2.assign_homework("write a pacman game")
s3.assign_homework("headcount")
s3.assign_homework("sales engine")
students = [s1,s2,s3]
# YOUR CODE HERE
=> "linked list, sorting algos, write a c compiler, write a pacman game, headcount, sales engine"
all_assignments = students.map do |s|
s.assignments
end
all_assignments.join(", ")