Problem Bank

Problems numbered P1, P2... are practice problems. Problems numbered NV1, NV2... are problems from the edX numbered videos.

Problems that have an autograder are marked in the first column.

Easy Medium Hard

Problem NumberDifficultyRequires lecturesName and files
BSL P1exprs

More Arithmetic Expression

Write more arithmetic expressions.

more-arithmetic-expression-starter.rkt
more-arithmetic-expression-solution.rkt

BSL P2

Has Grader
eval

Primitive Evaluation

Write out the step-by-step evaluation of expressions involving calls to primitives.

primitive-evaluation-starter.rkt
primitive-evaluation-solution.rkt

BSL P3strs-imgs

Tile

Create an image using image composition primitives.

tile-starter.rkt
tile-solution.rkt

BSL P4strs-imgs

Glue

Write an expression to combine strings together.

glue-starter.rkt
glue-solution.rkt

BSL P5bools-if-exprs

Compare Images

Write expressions to operate on booleans using primitives.

compare-images-starter.rkt
compare-images-solution.rkt

BSL P6

Has Grader
stepper

Function Call Evaluation

Step by step evaluation of expressions involving calls to programmer defined functions.

function-call-evaluation-starter.rkt
function-call-evaluation-solution.rkt

BSL P8strs-imgs

Canadian Flag Background

Write expression to produce background image of Canadian flag.

cflag-starter.rkt
cflag-solution.rkt

BSL P9exprs

Even More Arithmetic Expression

Write even more arithmetic expressions.

even-more-arithmetic-expression-starter.rkt
even-more-arithmetic-expression-solution.rkt

BSL P10strs-imgs

Triangles

Write an expression that operates on images using image primitives.

triangle-starter.rkt
triangle-solution.rkt

BSL P12strs-imgs

Debug Expression

Fix the error(s) in a call to an image primitive.

debug-rectangle-starter.rkt
debug-rectangle-solution.rkt

BSL P13exprs

Arithmetic Expression

Write an arithmetic expression.

arithmetic-expression-starter.rkt
arithmetic-expression-solution.rkt

BSL P14strs-imgs

Overlay

Write an expression that operates on images using image primitives.

overlay-starter.rkt
overlay-solution.rkt

BSL P15fun-def

Function Writing

Write a function that produces the larger of two given numbers.

function-writing-starter.rkt
function-writing-solution.rkt

HtDF NV1yell

Yell

Design a function to yell!

yell-starter.rkt
yell-solution.rkt

HtDF NV2area

Area

Design a function to calculate the area of a square.

area-starter.rkt
area-solution.rkt

HtDF NV3img-area

Image Area

Design a function to calculate the area of an image.

image-area-starter.rkt
image-area-solution.rkt

HtDF NV4tall

Tall

Design a function to determine if an image is tall.

tall-starter.rkt
tall-solution.rkt

HtDF P1full

Summon

Design a function to summon items.

summon-starter.rkt
summon-solution.rkt

HtDF P2full

Less Than 5

Design a function to check if length of a string is less than 5.

less-than-five-starter.rkt
less-than-five-solution.rkt

HtDF P3full

Boxify

Design a function to put a box around a given image.

boxify-starter.rkt
boxify-solution.rkt

HtDF P4full

Pluralize Stubs

Write more than one stub for a function given its signature and purpose.

pluralize-stubs-starter.rkt
pluralize-stubs-solution.rkt

HtDF P5full

Blue Triangle

Design a function to produce a blue solid triangle of a given size.

blue-triangle-starter.rkt
blue-triangle-solution.rkt

HtDF P6full

Double Error

Fix the error(s) in a function that doubles a given number.

double-error-starter.rkt
double-error-solution.rkt

HtDF P7full

Make Box

Design a function to create a square based on the given colour.

make-box-starter.rkt
make-box-solution.rkt

HtDF P8full

Ensure Question

Design a function to produce a question by adding ? to the end of a given string.

ensure-question-starter.rkt
ensure-question-solution.rkt

HtDF P9full

Cartesian

Design a function to calculate the distance between two points.

cartesian-starter.rkt
cartesian-solution.rkt

HtDD NV1atomic

City name

Design a data definition for all the citys in the world.

city-name-starter.rkt
city-name-solution.rkt

HtDD NV2atomic-htdf

Best

Given the data definition for City, design a function that checks if a given city is the best city in the world.

best-starter.rkt
best-solution.rkt

HtDD NV3interv

Seat number

Design a data definition for seat numbers in a theatre.

seat-num-starter.rkt
seat-num-solution.rkt

HtDD NV4enum

Letter grade

Design a data definition to represent a student"s grade.

letter-grade-starter.rkt
letter-grade-solution.rkt

HtDD NV5itemz

Countdown

Design a data definition to represent the current state of a New Year"s Eve countdown.

countdown-starter.rkt
countdown-solution.rkt

HtDD NV6interv-htdf

Aisle

Given the data definition for SeatNum, design a function that determines if the seat number is on the aisle.

aisle-starter.rkt
aisle-solution.rkt

HtDD NV7enum-htdf

Bump up

Given the data definition for LetterGrade, design a function that produces the next highest grade.

bump-up-starter.rkt
bump-up-solution.rkt

HtDD NV8itemz-htdf

Countdown to display

Given the data definition for Countdown, design a function that produces an image of the current state.

countdown-to-display-starter.rkt
countdown-to-display-solution.rkt

HtDD P1interv-htdf

Employees

Design a data definition and a function for a program to track a ski lodge"s payroll.

employees-starter.rkt
employees-solution.rkt

HtDD P2enum-htdf

Demolish

Design a data definition and a function for a program to classify buildings in downtown Vancouver.

demolish-starter.rkt
demolish-solution.rkt

HtDD P3itemz-htdf

Rocket

Design a data definition and a function for a program to track a rocket"s return to Earth.

rocket-starter.rkt
rocket-solution.rkt

HtDD P4enum

LetterGrade Error

Fix error(s) in the revised data definition for LetterGrade.

letter-grade-error-starter.rkt
letter-grade-error-solution.rkt

HtDD P5interv

Style Rules

Discuss the importance of following style rules and fix a given data definition to follow them.

style-rules-starter.rkt
style-rules-solution.rkt

HtDD P7itemz-htdf

Rocket Error

Fix the error(s) in a function we have developed for the Rocket program.

rocket-error-starter.rkt
rocket-error-solution.rkt

HtDD P8enum-htdf

Direction

Design a function based on a given data definition for compass directions.

direction-starter.rkt
direction-solution.rkt

HtDD P9enum-htdf

Dinner

Design a data definition to represent airline dinners, and a function to let flight attendants know a passenger"s choice.

dinner-starter.rkt
dinner-solution.rkt

HtDW NV1da, main, wish-list

Cat

A cat that moves across the screen.

cat-starter.rkt
cat-v3.rkt

HtDW NV2add-key

Add mouse-handler to cat

Given an existing world program, add a mouse handler to reset the position of the moving cat.

add-mouse-handler-starter.rkt
cat-v4.rkt

HtDW P1da, main, wish-list

Countdown Animation

Design an animation of a countdown.

countdown-animation-starter.rkt
countdown-animation-solution.rkt

HtDW P2da, main, wish-list

Traffic Light Animation

Design an animation of a traffic light.

traffic-light-starter.rkt
traffic-light-solution.rkt

Compound NV3htdw

Cowabunga

A cow that wanders back and forth across the screen.

cowabunga-starter.rkt
cowabunga-v0.rkt
cowabunga-v1.rkt
cowabunga-v2.rkt
cowabunga-v3.rkt
cowabunga-v4.rkt
cowabunga-v5.rkt
cowabunga-v6.rkt

Compound P1dd

Movie

Design a compound data definition to represent movies, and a function to compare their release dates.

movie-starter.rkt
movie-solution.rkt

Compound P2htdw

Spinning

Design a world to represent a growing and rotating red box.

spinning-starter.rkt
spinning-solution.rkt

Compound P3dd

Student

Design a compound data definition to represent students, and a function to monitor their allergies.

student-starter.rkt
student-solution.rkt

Compound P4dd

Trip

Design a compound data definition to represent trips, and a function to compare their lengths.

trip-starter.rkt
trip-solution.rkt

Compound P5htdw

Growing Grass

Design a world to represent grass that grows and is replanted.

growing-grass-starter.rkt
growing-grass-solution.rkt

Compound P6htdw

Mouse Tracker

Design a world where the mouse position is displayed at the mouse cursor.

tracker-starter.rkt
tracker-solution.rkt

Compound P7htdw

Rolling Lambda

Design a world where a lambda rolls back and forth across the screen.

rolling-lambda-starter.rkt
rolling-lambda-solution.rkt

Compound P8

Has Grader
dd

Compound Evaluation Starter

Step by step evaluation of code involving compound data.

compound-evaluation-starter.rkt
compound-evaluation-solution.rkt

Compound P9htdw

Water Balloon

Design an animation of throwing a water balloon.

water-balloon-starter.rkt
water-balloon-solution.rkt

Self-Ref P1list-fun

Total String Length

Design a function to calculate the total number of individual characters in a list of strings.

total-string-length-starter.rkt
total-string-length-solution.rkt

Self-Ref P2des-w-list

Double All

Design a function to double every number in a list.

double-all-starter.rkt
double-all-solution.rkt

Self-Ref P3des-w-list

Boolean List

Design a data definition to represent a list of booleans, and a function to determine if all values in a given list are true.

boolean-list-starter.rkt
boolean-list-solution.rkt

Self-Ref P4list-fun

Yell All

Design a function to add "!" to each string in a list of strings.

yell-all-starter.rkt
yell-all-solution.rkt

Self-Ref P5des-w-list

Largest

Design a function to find the largest number in a list of numbers.

largest-starter.rkt
largest-solution.rkt

Self-Ref P6des-w-list

Image List

Design a data definition to represent a list of images, and a function to find the sum of areas from a list of images.

image-list-starter.rkt
image-list-solution.rkt

Ref NV1part-1-2-3

Tuition

A tuition graphing program and intermediate solutions.

tuition-graph-starter.rkt
tuition-graph-v1.rkt
tuition-graph-v2.rkt
tuition-graph-v3.rkt
tuition-graph-v4.rkt
tuition-graph-v5.rkt
tuition-graph-v6.rkt

Ref P1part-3

Alternative Tuition Graph

Design the tuition graph bar chart function based on an alternative data definition for School.

alternative-tuition-graph-starter.rkt
alternative-tuition-graph-solution.rkt

Ref P2part-3

Spinning Bears

Design a world program that has an arbitrary number of spinning bears.

spinning-bears-starter.rkt
spinning-bears-solution.rkt

Ref P3part-3

Tuition Graph

Design a function to find the lowest tuition, and a function to produce a list of school names.

tuition-graph-c-starter.rkt
tuition-graph-c-solution.rkt

Naturals NV1nat nums

Naturals

Design functions that operate on the Natural data definition.

naturals-starter.rkt
naturals-solution.rkt

Naturals NV2parlor

New numerals

Design functions that does arithmetic operations on the NATURAL data definition.

new-numerals-starter.rkt
new-numerals-solution.rkt

Naturals P1nat nums

Sum to n

Design a function that computes the sum of all natural numbers from zero to n.

sum-to-n-starter.rkt
sum-to-n-solution.rkt

Naturals P2nat nums

Decreasing Image

Design a function that produces an image of the numbers from n to zero, side by side.

decreasing-image-starter.rkt
decreasing-image-solution.rkt

Naturals P3nat nums

Odd from n

Design a function that produces a list of all the odd numbers from n to zero.

odd-from-n-starter.rkt
odd-from-n-solution.rkt

Naturals P4nat nums

Concentric Circles

Design a function that produces an image of n concentric circles of a given colour.

concentric-circles-starter.rkt
concentric-circles-solution.rkt

Helpers NV1all

Arrange Images

Creating a program to sort a list of images and lay them out next to each other, as demonstrated in lecture, with all intermediate solutions.

arrange-images-starter.rkt
arrange-images-v1.rkt
arrange-images-v2.rkt
arrange-images-v3.rkt
arrange-images-v4.rkt
arrange-images-v5.rkt
arrange-images-v6.rkt

Helpers P1all

Render Roster

Design a program to render a dodgeball game roster.

render-roster-starter.rkt
render-roster-solution.rkt

Helpers P2all

Making Rain Filtered

Design a world program to make it rain where you want it to. In this version of the program you should remove drops that have already fallen off the screen from the world state. Be sure to use all appropriate helper function rules. There are a total of 9 functions in our solution, so this problem takes some time.

making-rain-filtered-starter.rkt
making-rain-filtered-solution.rkt

BSTs NV1loa

Lookup in List

Creating a program to find an account in a list of account given its account number.

lookup-in-list-starter.rkt
lookup-in-list-solution.rkt

BSTs NV2dd

BST Data Definition

Creating a data definition for a Binary Search Tree.

bst-dd-starter.rkt
bst-dd-solution.rkt

BSTs NV3lookup

Lookup in BST

Creating a function that searches through a BST.

lookup-in-bst-starter.rkt
lookup-in-bst-solution.rkt

BSTs NV4render

Render BST

Creating a function that renders a BST

render-bst-starter.rkt
render-bst-solution.rkt

BSTs P1lookup

Count Nodes

Design a function to count the number of nodes in a BST.

count-nodes-starter.rkt
count-nodes-solution.rkt

BSTs P2lookup

Sum Keys

Design a function that sums the keys in a BST.

sum-keys-starter.rkt
sum-keys-solution.rkt

BSTs P3lookup

Height

Design a function to determine the height of a BST.

height-starter.rkt
height-solution.rkt

BSTs P4lookup

Insert

Design a function that inserts a node in the proper place in a BST.

insert-starter.rkt
insert-solution.rkt

BSTs P5lookup

Balance Factor

Design functions to determine whether a BST is balanced.

balance-factor-starter.rkt
balance-factor-solution.rkt

BSTs P6render

Render BST with Lines

Design a function that renders a BST with lines.

render-bst-w-lines-starter.rkt
render-bst-w-lines-solution.rkt

Mutual-Ref P1fun-part-2

Image Organizer

Several function design problems for arbitrary-arity trees.

image-organizer-starter.rkt
image-organizer-solution.rkt

Mutual-Ref P2fun-part-2

Find Person

Design a function to find a person in a person tree.

find-person-starter.rkt
find-person-solution.rkt

Mutual-Ref P3fun-part-2

Harry Potter Family Tree

Represent information about descendant family trees from Harry Potter and design functions that operate on them.

hp-family-tree-starter.rkt
hp-family-tree-solution.rkt

2-One-Of P1

Has Grader
code

Concat

Design a function that concatenates two lists.

concat-starter.rkt
concat-solution.rkt

2-One-Of P2

Has Grader
code

Merge

Design a function that merges two sorted lists into a single sorted list.

merge-starter.rkt
merge-solution.rkt

2-One-Of P3

Has Grader
code

Zip

Design a function that produces a list of the corresponding elements of the given two lists.

zip-starter.rkt
zip-solution.rkt

2-One-Of P4

Has Grader
code

Pattern Match

Design a function that determines if a sequence of characters matches a given pattern.

pattern-match-starter.rkt
pattern-match-solution.rkt

Local NV1all

File System

An implementation of a file system, as demonstrated in lecture, with all intermediate solutions.

fs-starter.rkt
fs-v1.rkt
fs-v2.rkt
fs-v3.rkt
fs-v4.rkt

Local NV1encap, recomp

File System 2

Refactoring of file system developed in Mutual-Ref.

fs-v4.rkt
fs-v5.rkt
fs-v6.rkt
fs-v7.rkt

Local P2avoid-recomp

Faster Render BST with Lines

Improve the performance of a function that produces a simple rendering of a bst with lines.

render-bst-w-lines-faster-starter.rkt
render-bst-w-lines-faster-solution.rkt

Local P3

Has Grader
eval

Evaluate local

Step by step evaluation of code including local expressions.

evaluate-local-1-starter.rkt
evaluate-local-1-solution.rkt

Local P4

Has Grader
eval

Evaluate local 2

Evaluation of code including local expressions.

evaluate-local-2-starter.rkt
evaluate-local-2-solution.rkt

Local P4

Has Grader
eval

Evaluate local 3

Evaluation of code including local expressions.

evaluate-local-3-starter.rkt
evaluate-local-3-solution.rkt

Local P5encap

Encapsulate total area

Encapsulate the total-area function into local.

encapsulate-total-area-starter.rkt
encapsulate-total-area-solution.rkt

Local P6encap, avoid-recomp

Championship Bracket Improved

Improve a function that determines which team knocked a given team out of the tournament.

championship-bracket-improved-starter.rkt
championship-bracket-improved-solution.rkt

Abstraction NV1from-ex

Parameterization

Introduction to abstracting functions, as demonstrated in lecture, with intermediate solutions.

parameterization-starter.rkt
parameterization-v2.rkt
parameterization-v3.rkt
parameterization-solution.rkt

Abstraction NV2built-in

Using built ins

Design functions that use built-in abstract list functions.

using-built-ins-starter.rkt
using-built-ins-solution.rkt

Abstraction NV3closures

Closures

Design functions that use built-in abstract list functions with closure.

closures-starter.rkt
closures-solution.rkt

Abstraction P1built-in

Wide only

Design a function to produce only wide images from a list of images.

wide-only-starter.rkt
wide-only-solution.rkt

Abstraction P2built-in

Photos

Design a function to produce all the favourited photos in the given album.

photos-starter.rkt
photos-solution.rkt

Abstraction P3from-ex-3

Abstract sum

Design an abstract function to simplify the sum-of functions.

abstract-sum-starter.rkt
abstract-sum-solution.rkt

Abstraction P4from-ex-3

Abstract some

Design an abstract function to simplify the some functions.

abstract-some-starter.rkt
abstract-some-solution.rkt

Abstraction P5built-in

Ellipses

Write expressions that uses abstract functions to produce a list of ellipses and images of ellipses.

ellipses-starter.rkt
ellipses-solution.rkt

Abstraction P6built-in

Bag

Design a function to produce the linear lengths of a list of bags.

bag-starter.rkt
bag-solution.rkt

Abstraction P7built-in

Sum n

Design a function to produce the sum of the first n odd numbers.

sum-n-starter.rkt
sum-n-solution.rkt

Abstraction P8

Has Grader
built-in

Sum n

Design a function to produce the largest of each sublists smallest numbers.

max-of-mins-starter.rkt
max-of-mins-solution.rkt

Abstraction P9fold

Fold dir

Design an abstract fold function for Dir and some functions that uses this abstract function.

fold-dir-starter.rkt
fold-dir-solution.rkt

Abstraction P10

Has Grader
from-ex-3

Accounts

Design abstract functions to simplify given functions.

accounts-starter.rkt
accounts-solution.rkt

Abstraction P11built-in

Weather

Use built-in abstract functions to design a function that produces the sum total of rainfall on warm days.

weather-starter.rkt
weather.ss
weather-solution.rkt

Genrec NV1fractals

Fractals

Design of a few basic fractals, as demonstrated in lecture, with intermediate solutions.

fractals-starter.rkt
fractals-v1.rkt
fractals-v2.rkt

Genrec NV2term-arg

Termination

Design three part termination argument for generative recursions.

termination-starter.rkt
termination-solution.rkt

Genrec P2term-arg

Van Koch

Design a function to draw a Van Koch fractal line. The GEOMETRY of this problem is much more difficult than the triangle and the carpet. If you feel confident with cartesian geometry then this function may not be too difficult. If you feel less confident then you may find this problem to be too difficult.

van-koch-starter.rkt
van-koch-solution.rkt

Genrec P3term-arg

Cantor

Design a world program to create the cantor set.

cantor-starter.rkt
cantor-solution.rkt

Search NV1sudoku

Sudoku

Design a program that solves a sudoku board, as demonstrated in lecture, with intermediate solutions.

sudoku-starter.rkt
sudoku-v1.rkt
sudoku-v2.rkt
sudoku-v3.rkt
sudoku-v4.rkt
sudoku-solution.rkt
sudoku-constraints.rkt

Search P1sudoku

2 Way Maze

Design a program that tries to find the path through a maze.

maze-2w-starter.rkt
maze-2w-v1.rkt
maze-2w-solution.rkt

Search P2sudoku

Triangle Solitaire

Design a program that solves triangle solitaire puzzles.

triangle-solitaire-starter.rkt
triangle-solitaire-v2.rkt
triangle-solitaire-v3.rkt
triangle-solitaire-v4.rkt

Search P3sudoku

N Queens

Design a program that solves the n queens problem.

nqueens-starter.rkt
nqueens-v1.rkt
nqueens-v2.rkt
nqueens-solution.rkt

Search P4sudoku

Programming Contest

Design a program to help your team plan what problems to solve in a programming contest.

programming-contest-starter.rkt
programming-contest-v1.rkt
programming-contest-solution.rkt

Accumulators P1context-preserv-acc

Drop N

Design a function that drops every nth element from a list.

dropn-starter.rkt
dropn-solution.rkt

Accumulators P2context-preserv-acc

Replicate Element

Design a function that replicates elements in a list.

replicate-elm-starter.rkt
replicate-elm-solution.rkt

Accumulators P3context-preserv-acc

Strictly Decreasing

Design a function that produces true if numbers in a list are strictly decreasing.

strictly-decreasing-starter.rkt
strictly-decreasing-solution.rkt

Accumulators P4

Has Grader
tail-rec

Average

Design a tail-recursive function that produces the average of numbers in a list.

average-tr-starter.rkt
average-tr-solution.rkt

Accumulators P5tail-rec

Product

Design a tail-recursive version of a function that produces the product of numbers in a list.

product-tr-starter.rkt
product-tr-solution.rkt

Accumulators P6tail-rec

Sum N

Design a tail-recursive version of a function that produces the sum of naturals in [0, n].

sum-n-tr-starter.rkt
sum-n-tr-solution.rkt

Accumulators P7tail-rec

Sum Odds

Design a tail-recursive version of a function that produces the sum of odd numbers in a list.

sum-odds-tr-starter.rkt
sum-odds-tr-solution.rkt

Accumulators P8tail-rec

To list

Design a tail-recursive version of a function that produces a list of naturals from 1 to n.

to-list-tr-starter.rkt
to-list-tr-solution.rkt

Accumulators P9tail-rec

Count Evens and Odds

Design a tail-recursive function that produces separate counts of odd and even numbers in a list.

count-odd-even-tr-starter.rkt
count-odd-even-tr-solution.rkt

Accumulators P10tail-rec

Reverse

Design a tail-recursive function that produces a list of the same elements in the opposite order.

rev-tr-starter.rkt
rev-tr-solution.rkt

Accumulators P11worklist-acc

House Path

Design functions that operate on house paths.

house-path-starter.rkt
house-path-solution.rkt

Accumulators P12worklist-acc

Contains Key

Design a tail-recursive function that determines whether a binary tree contains a given key.

contains-key-tr-starter.rkt
contains-key-tr-solution.rkt

Accumulators P13

Has Grader
worklist-acc

Arbitrary-Arity Tree TR

Design tail-recursive functions that operate on arbitrary arity trees. First file is from a structurally recursive template; second file is from a tail-recursive template.

arbitrary-arity-tree-tr-starter.rkt
arbitrary-arity-tree-template-tr-starter.rkt

Accumulators NV1context-preserv-acc

Context Preserving Accumulators

Problems where an accumulator is needed to preserve information lost in the structural recursion template.

skip1-starter.rkt
skip1-solution.rkt
skip1-v1.rkt
skipn-starter.rkt
skipn-solution.rkt
skipn-v1.rkt

Accumulators NV2tail-rec

Tail Recursion

Using accumulators to make functions tail recursive.

sum-tr-starter.rkt
sum-tr-solution.rkt

Accumulators NV3worklist-acc

Worklist Accumulators

Making functions operating on an arbitrary-arity tree tail recursive using context preserving and worklist accumulators.

same-house-as-parent-v1.rkt
same-house-as-parent-v2.rkt
same-house-as-parent-v3.rkt
same-house-as-parent-v4.rkt
same-house-as-parent-v5.rkt
same-house-as-parent-v6.rkt
same-house-as-parent-v7.rkt
same-house-as-parent-solution.rkt

Graphs P1graphs-reachable

All Reachable

Design a function that produces rooms reachable from a given room.

all-reachable-starter.rkt
all-reachable-solution.rkt

Graphs P2graphs-reachable

Count Rooms

Design a function that produces the number of rooms reachable from a given room.

count-rooms-starter.rkt
count-rooms-solution.rkt

Graphs P3graphs-reachable

Find Room

Design a function that produces a room with the given name.

find-room-starter.rkt
find-room-solution.rkt

Graphs P4graphs-reachable

Max Exits From

Design a function that produces the room with the most exits.

max-exits-from-starter.rkt
max-exits-from-solution.rkt

Graphs P5graphs-reachable

Max Exits to

Design a function that produces a room to which the greatest number of other rooms have exits.

max-exits-to-starter.rkt
max-exits-to-solution.rkt

Graphs NV1cyclic-data, templating, reachable

Graphs

Walking through the design of a data definition for representing graphs, and a simple function that operates on those graphs.

graphs-v1.rkt
graphs-v2.rkt
graphs-v3.rkt
graphs-v4.rkt
graphs-v5.rkt

Graphs NV2cyclic-data, templating, reachable

Graphs

Design a tail-recursive function with additional accumulators that operates on a simple graph.

skipn-tr-order-starter.rkt
skipn-tr-order-solution.rkt