diff --git a/week3/homework/calculator.rb b/week3/homework/calculator.rb new file mode 100644 index 0000000..037b24b --- /dev/null +++ b/week3/homework/calculator.rb @@ -0,0 +1,24 @@ +class Calculator + def sum(values) + values.inject(0) { |result, next_val| result + next_val } + end + def multiply(*values) + values_list = Array.new + if (values.first.kind_of?(Array)) + values_list += values.first + else + values_list += values + end + values_list.inject { |result, next_val| result * next_val } + end + + def pow(base, exponent) + result = 1 + exponent.times{ result *= base } + result + end + + def fac(value) + value == 0 ? 1 : (1..value).inject { |result, next_val| result * next_val } + end +end \ No newline at end of file diff --git a/week3/homework/questions.txt b/week3/homework/questions.txt index dfb158d..671955d 100644 --- a/week3/homework/questions.txt +++ b/week3/homework/questions.txt @@ -6,10 +6,24 @@ Please Read: 1. What is a symbol? +A: A symbol is Ruby's immutable string-like unique primative, used when creating a variable that stands for something significant, much like enumerables in other languages. An example might be creating a symbol for each direction like :up, :down, :left. :right. + 2. What is the difference between a symbol and a string? +A: Strings are mutable, symbols are immutable. + 3. What is a block and how do I call a block? +A: Blocks are chunks of code inbetween delimeters, curly braces or keywords 'do' and 'end'. Blocks are called with a method name, code wrapped in the do and end keywords and any parameters passed to the block with pipes '|' on either side. + +method_name {|parameter| parameter.work} + 4. How do I pass a block to a method? What is the method signature? +A: You can pass a block to a method by immediately including a block following a method name. The method signature does not have to be special, and does not have to take any special parameters. However to emit values to a block, the method definition needs to contain the yield keyword. + +method_name {|parameter| parameter.work} + 5. Where would you use regular expressions? + +A: Regular expressions are used in any situation that calls for string finding/matching. Regex's can be used for user input validation, manipulation/searching of large text files, or even extraction of values from unstructured data. diff --git a/week4/homework/questions.txt b/week4/homework/questions.txt index ffaf215..28d9d80 100644 --- a/week4/homework/questions.txt +++ b/week4/homework/questions.txt @@ -4,10 +4,28 @@ The Rake Gem: http://rake.rubyforge.org/ 1. How does Ruby read files? +A: Call File.open on the file in the file system, and then use a block to call something on the file object iterator, typically something like the each_line method. Each line will yield a string value for line of the file. + +File.open("aFile.txt") do |file| + file.each_line {|line| puts line } +end + 2. How would you output "Hello World!" to a file called my_output.txt? +A: Call File open on my_output.txt, passing a "w" for as the mode param (write), and then call puts "Hello World!" on the resulting file object. + +File.open("my_output.txt" "w") do |file| + file.puts "Hello World!" +end + 3. What is the Directory class and what is it used for? +A: The directory class is a standard ruby library class that represent directories (folders) within a host machine's local file system. It provides multiple methods to enumerate directories and files within those directories. + 4. What is an IO object? +A: An IO object is a bidirectional channel between a Ruby program and external resources like files or sockets. Files and sockets are subclasses of the IO object and support similar interfaces. + 5. What is rake and what is it used for? What is a rake task? + +A: Rake is a build utility that is used to provide an easy to use domain specific language to define/automate common tasks that a developer may commonly run within a ruby project. A rake task is similar to a function, you can call a particular rake task by name and it will run whatever operations defined for that task. A task example might be setting some environment variable used by a ruby program. \ No newline at end of file diff --git a/week4/homework/worker.rb b/week4/homework/worker.rb new file mode 100644 index 0000000..ba659dd --- /dev/null +++ b/week4/homework/worker.rb @@ -0,0 +1,7 @@ +module Worker + def self.work(n = 1) + val = nil + n.times {val = yield} + return val + end +end \ No newline at end of file