Skip to content

Instantly share code, notes, and snippets.

@Laner12
Forked from worace/week_3.markdown
Last active May 26, 2016 17:47
Show Gist options
  • Save Laner12/26f680c42e6332c20de13f509f6426f0 to your computer and use it in GitHub Desktop.
Save Laner12/26f680c42e6332c20de13f509f6426f0 to your computer and use it in GitHub Desktop.
Module 1 Week 3 Diagnostic

Module 1 Week 3 Diagnostic

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).

1. What does the following code output?
def print_variables(x)
  puts "x: #{x}"
  puts "b: #{b}"
end

def b
  12
end

a = 4
print_variables(a)


"x: a"
"b: 12"
2. Working with files

Given a text file located at "~/Documents/pizza.txt", write code to read the file from the filesystem and print each line one at a time.

x = File.readlines(given_path)
x.each do |i|
 puts i
 end
3. Writing Files

Given a text file located at "~/Documents/pizza.txt", write code to read the file from the filesystem, then write a new file at "~/Documents/line_count.txt" containing the number of lines in the original file.

x = File.readlines(given_path)
y = x.count
File.write(given_output_path, y)
4. Corgis

Imagine a simple ruby class designed to represent a Corgi dog. Write a test for each of the following features:

  • A Corgi can be created with no arguments
  • A Corgi can be assigned a name
  • A Corgi can be asked for its name
  • A Corgi can be asked for its posture, which should default to "standing"
  • A Corgi can be asked to lie down, which should change its posture to "laying"
require minitest/goodies

class_name < Minitest::Test

  def test_the_stuff
  c = Corgi.new
  assert_equal "Bob", c.name("Bob")
  assert_equal "My name is Bob", c.name?
  assert_equal "standing", c.posture
  c.posture("laying")
  assert_equal false, c.standing?
  end
end
5. Counting Words

Given an array of words ["dog", "cat", "gerbil", "cat", "hamster", "rabbit", "rabbit"], create a Hash containing the individual words as keys and the number of times the word appears in the list as values. That is:

{"dog" => 1, "cat" => 2, "gerbil" => 1, "hamster" => 1, "rabbit" => 2}

input = given

def count(input)
hash = Hash.new(0)
input.each { |key| hash[key] += 1 }
hash
end
6. Reading Files

Given a text file located at "~/Documents/pizza.txt", write code to read the file from the filesystem, then process the file's lines so that:

  • Even lines go into an array called even
  • Odd lines go into an array called odd

(Assume the first line is numbered 0, and is thus even)

x = File.readlines(given_path)
even = []
odd = []

x.each do |i|
 if i.even?
 even << i
 else 
 odd << i
 end
 end
7. Stacks

Given the following code, draw a simple diagram representing the stack frames that the program will generate as it is run. In order to show change in the stack over time, you may need to re-copy the lower frames into a new diagram.

def wrap_it(x)
  "<<<" + x + ">>>"
end

def string_it(x)
  x.to_s
end

def churn_it(x)
  wrap_it(string_it(x))
end


churn_it(10)
"<<<10>>>"

bottom to top of stack churn_it => string_it => wrap_it => return value

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment