CMU 15-112: Fundamentals of Programming and Computer Science
Extra Practice for Week 8 (Due never)
- These problems will help you prepare for the upcoming
quizzes, midterms, and final exam. They are
optional and you are encouraged to collaborate when working on them.
-
You may also wish to see
extra-practice8-ct-and-roc.html.
-
This week we are not providing a starter file. You should now be
able to make your own (though of course we are happy to help
you get started!).
- Do not use recursion this week.
- Do not hardcode the test cases in your solutions.
- You may assume 2d lists are rectangular unless explicitly stated otherwise.
- hasNoPrimes(L)
Write the function hasNoPrimes(L) that takes a 2d list L of integers,
and returns True if L does not contain any primes, and False otherwise.
- hasDuplicates(L)
Write the function hasDuplicates(L) that takes a 2d list L of arbitrary values,
and returns True if L contains any duplicate values (that is, if any two
values in L are equal to each other), and False otherwise.
- isLatinSquare(board)
Write the function isLatinSquare(a) that takes a 2d list and returns
True if it is a
Latin square
and False otherwise.
- matrixMultiply(m1, m2)
Write the function matrixMultiply(m1, m2) that takes two 2d lists (that
we will consider to be matrices) and returns a
new 2d list that is the result of
multiplying the two matrices. Return None if the two matrices
cannot be multiplied for any reason.
- isKnightsTour(board)
Background:
A "knight's tour"
in chess is a sequence of legal knight moves such that the knight
visits every square exactly once. We can represent a (supposed)
knight's tour as an NxN list of the integers from 1 to N2 listing
the positions in order that the knight occupied on the tour. If it is
a legal knight's tour, then all the numbers from 1 to N2 will be
included and each move from k to (k+1) will be a legal knight's move.
With this in mind, write the function isKnightsTour(board) that takes such a
2d list of integers and returns True if it represents a legal knight's tour
and False otherwise.
- nQueensChecker(board)
Background: The "N Queens" problem asks if we can place N queens
on an NxN chessboard such that no two queens are attacking each other.
For most values of N, there are many ways to solve this problem. Here,
you will write the function nQueensChecker(board) that takes a 2d list of
booleans where True indicates a queen is present and False indicates a blank
cell, and returns True if this NxN board contains N queens all of which do
not attack any others, and False otherwise.
- Games, games, games!
Have fun writing your own
console-based 2d board games (human-human mainly, but maybe a simple human-computer game) such as:
- Checkers
- Chess
-
Fox and Hounds
- Backgammon
- Stratego
- Or many, many others...