# Session 2 Practice Tasks The assignments listed here should take you approximately 2 hours. To start this assignment, click the button in the upper right-hand corner that says **Fork**. This is now your copy of the document. Click the **Edit** button when you're ready to start adding your answers. To save your work, click the green button in the bottom right-hand corner. You can always come back and re-edit your gist. ### 1. Documentation and Googling (60 min) Documentation of a langauge, framework, or tool is the information that describes its functionality. For this part of the practice tasks, you're going to practice digging into documentation and other reference material. **NOTE:** The linked documentation for each question below is a good starting place, but you should also be practicing your Googling skills and sifting through the results to find relevant and helpful sites. - [ ] In your own words, what does the Ruby array [drop](https://ruby-doc.org/core-2.4.0/Array.html#method-i-drop) method do? As you're explaining, be sure to provide an example. Your answer: It removes the specified number of items from an array, starting from the beginning. Example Array [1,2,3,4,5] drop 1 returns [2,3,4,5] - [ ] What did you Google to help you with this task, and how did you pick your results? I read the official documentation. - [ ] In your own words, what does the Ruby string [split](https://ruby-doc.org/core-2.4.0/String.html#method-i-split) method do? As you're explaining, be sure to provide an example. Your answer: It breaks a string apart based on a choose character, phrase, or other delimiter. String example “I ran around the house” could be split by a space and it would return the string as: “I”, “ran”, “around”, “the”, “house” - [ ] What did you Google to help you with this task, and how did you pick your results? split string ruby I went through the first 4 results until I found a simple explanation and example - [ ] In your own words, what does the JavaScript array [slice](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice) method do? As you're explaining, be sure to provide an example. Your answer: Slice returns a new array and does not edit/touch the original array from the specified position. [1, 2, 3, 4, 5] slice 1 > [2, 3, 4, 5] - [ ] What did you Google to help you with this task, and how did you pick your results? Read the documentation. ### 2. Data Types (15 min) Imagine that you're taking your favorite board game and turning it into a computer-based game. - [ ] Name of board game: Risk - [ ] Use the space below to categorize game data into each of the following data types. You should have a **minimum of two** pieces of data for each category. 1. String data: "Country Names", "Piece Names" 1. Integer and/or float data: numberUnits = 7, players = 4, diceResults = 12 1. Boolean data: Has correct number of cards for a turn in correctCards = True, playerOneControlsAustrilia = True 1. Array data: var countriesHeld = ["Serbia","Russia","Cyrpus"], var countriesPlayer = [5,15,20,40] 1. Hash or Object data: Var Player = "Matt", var countriesHeld = ["Serbia","Russia","Cyrpus"] ### 3. Iteration (30 min) - [ ] Create a list below of **three real-life situations** where iteration is used. For each situation, explain why it would be an example of iteration. - Making Perogies. If dough is available and filling available, fill dough, fold, place aside. - Packing Envelopes, if addressed envelopes left and invitations available. Place invite in envelope seal. Repeat. - Reading book, if pages left read next page. - [ ] Create a list below of **three programming situations** where iteration would be used. For each situation, explain why it would be an example of iteration. - Displaying names of players in a video game. You would go through the array of players and display them on the screen. - Playing through songs on a digital album until the end. Array of song, playing each one until there are none left. - Playing through episodes in a series on Netflix. Array of shows in a series playing until user breaks loop or there are not more episodes. ### 4. Identifying Mistakes (15 min) The following code examples each contain a mistake. Describe the problem for each.
Original Mistakes Problem
students.each do |student|
  puts "Welcome, #{student}"
end
students.each do |student|
  puts "Welcome, #(student)"
end
The problem is...
.main-content {
  font-size: 12px;
  border: 3px solid black;
  font-family: sans-serif;
}
.main-content {
  font-size: 12px;
  border: 3px solid black;
  font-family: sans serif;
}
The problem is...
log(2, (1022 * ((score - min(score) over ()) / ((max(score) over ()) - (min(score) over ()))) + 2)::numeric) log(2, (1022 * ((score - min(score) over ()) / ((min(score) over ()) - (min(score) over ()))) + 2)::numeric) The problem is...
arr.product(arr).reject { |a,b| a == b }.any? { |a,b| a + b == n } arr.product(arr).reject { |a,b| b == b }.any? { |a,b| a + b == n } The problem is...
class Cat
  attr_reader :color, :name
  def initialize(data)
    @name = data[:name]
    @color = data[:color]
  end
end
class Cat
  attr_reader :color, :name
  def intialize(data)
    @name = data[:name]
    @color = data[:color]
  end
end
The problem is...
1. Incorrect bracketing. 2. Incorrect font name missing dash. 3. Min replaces max for the score being subtracted from. 4. a == b is correct and b is equal to itself in mistake. 5. initialize is typed incorrectly in mistake. ### 5. Modify your Bash Profile (10 min) - [ ] Watch [this video](https://drive.google.com/file/d/1s_CDBnxHSA0HDWldjosulthAvBi-C-d5/view?usp=sharing) and follow each step to modify your own bash profile. As mentioned in the video, you will need this snippet below: ``` # get current branch in git repo function parse_git_branch() { BRANCH=`git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'` if [ ! "${BRANCH}" == "" ] then STAT=`parse_git_dirty` echo "[${BRANCH}${STAT}]" else echo "" fi } # get current status of git repo function parse_git_dirty { status=`git status 2>&1 | tee` dirty=`echo -n "${status}" 2> /dev/null | grep "modified:" &> /dev/null; echo "$?"` untracked=`echo -n "${status}" 2> /dev/null | grep "Untracked files" &> /dev/null; echo "$?"` ahead=`echo -n "${status}" 2> /dev/null | grep "Your branch is ahead of" &> /dev/null; echo "$?"` newfile=`echo -n "${status}" 2> /dev/null | grep "new file:" &> /dev/null; echo "$?"` renamed=`echo -n "${status}" 2> /dev/null | grep "renamed:" &> /dev/null; echo "$?"` deleted=`echo -n "${status}" 2> /dev/null | grep "deleted:" &> /dev/null; echo "$?"` bits='' if [ "${renamed}" == "0" ]; then bits=">${bits}" fi if [ "${ahead}" == "0" ]; then bits="*${bits}" fi if [ "${newfile}" == "0" ]; then bits="+${bits}" fi if [ "${untracked}" == "0" ]; then bits="?${bits}" fi if [ "${deleted}" == "0" ]; then bits="x${bits}" fi if [ "${dirty}" == "0" ]; then bits="!${bits}" fi if [ ! "${bits}" == "" ]; then echo " ${bits}" else echo "" fi } export PS1="\u\w\`parse_git_branch\`$ " ``` ### 5. Questions/Comments/Confusions If you have any questions, comments, or confusions from the any of the readings that you would an instructor to address, list them below: 1.