Assignment #1
Question 1.
Define a string using either literal or here document, for example, the following variable str is defined with a here document
str = <
Question 2.
Define an array of student record, for example, students = [
{:firstname => John, :lastname => LastnameJohn, :phonenumber => 123456789}, {:firstname => Ken, :lastname => Lastnameken, :phonenumber => 456734244}, {:firstname => Marisa, :lastname => lastnamemarisa, :phonenumber => 443234567}, {:firstname => Ken, :lastname => Kenlastname, :phonenumber => 456734244}
]
write a Search class, the instance method of its object is able to query student,
for example find all the record with first firstname being ken: obj.search_students(students, firstname: ken), it will print:
First Name Last Name Phone#
Ken Lastnameken 456734244 Ken Kenlastname 456734244
Question 3. write a class for compressing a string. when you create an object of this class, you provide a string, then the object save the compressed result (no duplicate words) as the
state of the object. the compressed result will have two arrays: an array for strings and an array for index.
for example: assuming the name of your class is Compress to create an object, you can call like this:
obj = Compress.new(i love you but do you love me)
then there will be two instance variables created inside the object to hold two values:
[i, love, you, but, do, me] # no duplicate word (compressed)
[0, 1, 2, 3, 4, 2, 1, 5] # index to the original array to represent
# original string
you can check these two variables using getter method
Question 4. one of the method in Hash class is Hash#merge, it will merge two hashes.
its format is like this:
merge(second_hash) new hash
merge(second_hash){ | key, val1, val2 | newvalue} new hash
if no block is given, it merge two hashes, if there is duplicate key, the value of the other_hash
will be used. if a block is given, the value for the duplicate key is determined by calling the block with the duplicate key, the value in first hash (val1), and the value in second hash (val2)
for example:
h1 = { a => 100, b => 200 }
h2 = { b => 254, c => 300 }
h1.merge(h2) #=> {a=>100, b=>254, c=>300} h1.merge(h2){|key, val1, val2| val2 val1}
#=> {a=>100, b=>54, c=>300} h1 #=> {a=>100, b=>200}
merge!() is the dangerous version of merge(), which will change the h1 to be the merged hash.
re-open the class Hash, re-implement these two methods.
Question 5
A template is a HTML file with Ruby code inside. The Ruby code is marked by <% %>.
or if a line start with %, then the whole line is ruby code
For example, the following is an template file:
<%= simple_form_for @project do |f| %> <%= f.input :name %>
<%= f.input :description %>
Tasks
<%= render ‘task_fields’, :f => task %> <% end %>
<%= f.submit ‘Save’ %> <% end %>
write a class, the object of this class has a template attribute and an instance method to
filter its template, so that all ruby code are removed and filtered string is return.
you can define your string using either here document or normal string quotation %{ }
the create the object, then filter the template and return the filtered string.
Question 6. Following is a conversation between ADVISOR and STUDENT in a text file, each line either starts with ADVISOR or STUDENT or 5 spaces.
write a program to read this file and print out only the lines by ADVISOR
(including all text between ADVISOR and STUDENT)
ADVISOR: Now, then, Mr., uh, Vickstad. How can I help you?
STUDENT: Well, Im thinking about transferring, but Im, Im not sure
I was hoping you could help me make a decision.
ADVISOR: Ill try. Where are you thinking of transferring to? And why do
you want to leave Kryptos U?
STUDENT: UmIm thinking of going to Central University, because its
in my hometown. Ive uh, been kind of homesick here this year, and
I havent made many friendsI just feel so lonely. So, I thought that
uh, maybe, itd be better to be closer to my parents and friends and
all.
ADVISOR: I see. And would you keep the same major if you transferred?
What is itbusiness administration?
STUDENT: Yeah, I would. The credits Ive earned here will transfer to
Central. Ive already checked.
ADVISOR: May I ask why you chose to come to Kryptos University in the
first place?
STUDENT: Sure. Um, well, the main reason is you have a great business
school. And the second reason is that II wanted to get away from
home.
ADVISOR: Youre right, Mr. Vickstad, we do have an excellent business
school. But, so does Central. The thing is, youve got almost a year
under your belt here now. At Central, youll be starting from scratch.
STUDENT: Yeah, I know that. But Im a little bit familiar with Central,
cuz I had older friends who went there, and I visited it before I came
here.
ADVISOR: You know, freshman year is usually the hardest. I remember
how homesick I was my first year. Ill tell you, I was ready to pack it
in after the first two weeks. But the longer I stayed, the more
comfortable I felt. By senior year, I was glad I chose to stay.
STUDENT: Really? Did it get a lot better your sophomore year?
ADVISOR: Yes, it did. You might well find the same is true for you. Also,
even though your credits here will transfer, you will have to take
extra courses, because Central has different requirements. Youll
probably have to go to school for an extra year.
STUDENT: HmmI hadnt thought about that. Ill have to check into it.
Maybe I should give it one more year. I mean, its probably good for
me to learn to live away from my family and friends, right? Itll make
me stronger in the future.
ADVISOR: You can always move back there after you graduate.
Of
course, by that time you may not want to!
STUDENT: Thank you for all your help. I guess Ill find out the exact
transfer requirements. Youve given me a lot to think about.
ADVISOR: Dont mention it. If you feel like you want to talk more, dont
hesitate to come back and see me.
Requirement:
Define your classes in separate .rb files
write a main .rb file to require these .rb files (use require_relative), and write code to create object and call method and output results.
write comment
your program should do some data check, for example, in question 1, check if parameter is string. in question 2, if no match, print out no match is found.
use #! to make your main .rb program be able to run directly.
Reviews
There are no reviews yet.