JS Object Model

Create an object constructor so you can use it as a blueprint to create new instances of that object later (in this example, that instance of the Person object is ‘bob’).

screen-shot-2017-02-22-at-1-12-46-pm

The methods created for the object constructor are the object keys.  Methods created inside a constructor start with ‘this.’

Advertisements
JS Object Model

Hackerrank Day 15: Linked List

Linked List: A data structure that consists of a group of nodes which represent a sequence together.

  • Order matters (can’t move nodes around)
  • Space is dynamic
  • Each node contains data and reference to the next node.
  • The last node does not have reference to the next node because  it’s the last one and there’s nothing to reference to.

A real life example would be a train (linked list) made up of multiple train cars (nodes).  Each car contains data of how many people are in the car, and it references to the next car (except the last car which references nothing/null).

screen-shot-2016-12-23-at-3-21-28-pm

My solution in Ruby:

I managed to solve this problem by digging around other people’s codes (in other languages), but I’m still not quite sure I understand it completely..

screen-shot-2016-12-23-at-3-19-07-pm

Things I learned:

  • You could implement a linked list using classes, but arrays will give linked-list like behavior using the standard array methods. Below is an example of a linked list.
# A very simple representation
class Node
  attr_accessor :value, :next_node

  def initialize(value, next_node=nil)
    @value = value
    @next = next_node
  end
end

class LinkedList

  def initialize(value)
    @head = Node.new(value)
  end

  def add(value)
    current = @head
    while !current.next_node.nil?
      current = current.next_node
    end
    current.next_node = Node.new(value)
  end
end

ll = LinkedList.new
ll.add(10)
ll.add(20)
Hackerrank Day 15: Linked List

Exercism JS: RNA Transcription

Write a program that, given a DNA strand, returns its RNA complement (per RNA transcription).

Both DNA and RNA strands are a sequence of nucleotides.

The four nucleotides found in DNA are adenine (A), cytosine (C), guanine (G) and thymine (T).

The four nucleotides found in RNA are adenine (A), cytosine (C), guanine (G) and uracil (U).

Given a DNA strand, its transcribed RNA strand is formed by replacing each nucleotide with its complement:

  • G -> C
  • C -> G
  • T -> A
  • A -> U

My solution:

screen-shot-2016-12-14-at-11-14-35-pm

Another solution that introduces more advanced concepts like the ‘this’ object constructor and returning a function within a function.

screen-shot-2016-12-14-at-11-03-13-pm

Things to note:

  • ‘this’ allows you to access an object when you’re creating the new object later using the module.  (ie. var dnaTranscriber = new DnaTranscriber();)
  • splitting a string converts it into an array
  • .map allows you to apply the same method to every item in an array.

Javascript is so much harder to grasp than Ruby. 😐

Exercism JS: RNA Transcription

Hackerrank Day 4: Class vs Instance

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:

  1. yearPasses() should increases the age instance variable by 11.
  2. amIOld() should perform the following conditional actions:
    • If age<13, print You are young.You are young.
    • If age13 and age<18, print You are a teenager.
    • Otherwise, print You are old.

Sample Input

4
-1
10
16
18

Sample Output

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 00 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 initialAge18, 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.

My Solution:  

screen-shot-2016-12-11-at-3-16-44-pm

Something important that I forgot to do in this challenge: set age as an instance variable using the “@” notation.

Side notes:

  • initialize is a constructor in this example.
  • A class can have one or more constructors that build different versions of the same type of object.
  • A class has two types of variables:
    • class variables: point to the same variable across all instances of a class.
    • instance variables: have distinct values that vary from instance to instance.
Hackerrank Day 4: Class vs Instance