15-110 Spring 2011 Homework
2 Practice
These are optional practice problems to help you prepare for
hw2. Solutions are provided, along with short video tutorials.
Here are the files you'll need:
Note: This week, you may not use "if" statements
(conditionals), "for" or "while" statements (loops), recursion, or
collections (lists, dictionaries, etc). Since we have not
covered these yet, this should not be a concern for most of
you. That said, solutions that use "if", "for", "while", etc,
will receive half credit for those portions.
- rotateStringLeft
- rotateStringRight
- hasThreeWords
- getTimeString
- rotateStringLeft
Write
the function rotateStringLeft that takes a string and a non-negative
integer, and returns the string rotated that many places to the left. Here are some test cases for you:
assert(rotateStringLeft("abcde", 0) == "abcde")
assert(rotateStringLeft("abcde", 1) == "bcdea")
assert(rotateStringLeft("abcde", 2) == "cdeab")
assert(rotateStringLeft("abcde", 3) == "deabc")
assert(rotateStringLeft("abcde", 4) == "eabcd")
assert(rotateStringLeft("abcde", 5) == "abcde")
assert(rotateStringLeft("abcde", 25) == "abcde")
assert(rotateStringLeft("abcde", 28) == "deabc")
- rotateStringRight
Write
the function rotateStringRight that takes a
string and a non-negative integer, and returns the string rotated that
many places to the right. Here are some test cases for you:
assert(rotateStringRight("abcde", 0) == "abcde")
assert(rotateStringRight("abcde", 1) == "eabcd")
assert(rotateStringRight("abcde", 2) == "deabc")
assert(rotateStringRight("abcde", 3) == "cdeab")
assert(rotateStringRight("abcde", 4) == "bcdea")
assert(rotateStringRight("abcde", 5) == "abcde")
assert(rotateStringRight("abcde", 25) == "abcde")
assert(rotateStringRight("abcde", 28) == "cdeab")
- hasThreeWords
Write
the function hasThreeWords that takes a string (which you may assume
only contains letters or spaces) and returns true if the string
contains exactly three words, with no leading spaces, and with each
word separated by exactly one space. Here are some test cases for you:
assert(hasThreeWords("a b c") == True)
assert(hasThreeWords("this should work") == True)
assert(hasThreeWords("but this should fail") == False)
assert(hasThreeWords("this too") == False)
assert(hasThreeWords("likewise") == False)
assert(hasThreeWords(" leading space fails") == False)
assert(hasThreeWords("no double spaces") == False)
- getTimeString
Write
the function getTimeString that takes (as a non-negative integer) the
number of minutes since midnight, and returns the time in "hh:mm"
format. Here are some test cases for you:
assert(getTimeString(0) == "12:00")
assert(getTimeString(5) == "12:05")
assert(getTimeString(60) == "01:00")
assert(getTimeString(65) == "01:05")
assert(getTimeString(605) == "10:05")
assert(getTimeString(665) == "11:05")
assert(getTimeString(725) == "12:05")
assert(getTimeString(785) == "01:05")
assert(getTimeString(665 + 60*12*1000) == "11:05")