Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pascals-triangle: split into instructions and introduction #2449

Merged
merged 11 commits into from
Jun 25, 2024
14 changes: 0 additions & 14 deletions exercises/pascals-triangle/description.md

This file was deleted.

35 changes: 35 additions & 0 deletions exercises/pascals-triangle/instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Instructions

Your task is to output the first N rows of Pascal's triangle.

[Pascal's triangle][wikipedia] is a triangular array of positive integers.

In Pascal's triangle, the number of values in a row is equal to its row number (which starts at one).
Therefore, the first row has one value, the second row has two values, and so on.

The first (topmost) row has a single value: `1`.
Subsequent rows' values are computed by adding the numbers directly to the right and left of the current position in the previous row.

If the previous row does _not_ have a value to the left or right of the current position (which only happens for the leftmost and rightmost positions), treat that position's value as zero (effectively "ignoring" it in the summation).

## Example

Let's look at the first 5 rows of Pascal's Triangle:

```text
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
```

The topmost row has one value, which is `1`.

The leftmost and rightmost values have only one preceding position to consider, which is the position to its right respectively to its left.
With the topmost value being `1`, it follows from this that all the leftmost and rightmost values are also `1`.

The other values all have two positions to consider.
For example, the fifth row's (`1 4 6 4 1`) middle value is `6`, as the values to its left and right in the preceding row are `3` and `3`:

[wikipedia]: https://en.wikipedia.org/wiki/Pascal%27s_triangle
23 changes: 23 additions & 0 deletions exercises/pascals-triangle/introduction.md
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I couldn't come up with a story here. I'm open to suggestions :)

Copy link
Contributor

@jiegillet jiegillet May 30, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

uh, I didn't even know you could comment on files, TIL.

Pascal's Triangle is a classic: here are some stuff you can do with it, maybe inspiration will strike:

  • You can draw a Sierpinski triangle by coloring the even/odd numbers
  • the sum of each row is a power of 2
  • each element is a combination, entry k in row n tells you how many ways you can pick k elements from n
  • squishing all the numbers in a row gives you a power of 11 (1331 = 11^3, 14641 = 11^4)

It's all a bit nerdy, but that can be a good thing :)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the third one is most suitable for a story. Thanks

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I had no idea there were so many things you could do with it!

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, there's more, there are so many patterns in these numbers. Fibonacci numbers are also hiding in there.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Much more!

  • An especially accessible list of patterns: Pascal's Triangle @ MathIsFun. Possibly interesting exercise: spot the duplicates. Most of the patterns listed here are really the very same pattern, just phrased in different ways.

  • Skim the images in the Wikipedia article for hints at more patterns, elaborated on in the text.

Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Introduction

With the weather being great, you're not looking forward to spending an hour in a classroom doing math.
ErikSchierboom marked this conversation as resolved.
Show resolved Hide resolved
Annoyed, you enter the class room, where you notice a strangely satisfying triangle shape on the blackboard.
Whilst waiting for your math teacher to arrive, you can't help but notice some patterns in the triangle: the outer values are all ones, each subsequent row has one more value than its previous row and the triangle is symmetrical.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Whilst waiting for your math teacher to arrive, you can't help but notice some patterns in the triangle: the outer values are all ones, each subsequent row has one more value than its previous row and the triangle is symmetrical.
Whilst waiting for your math teacher to arrive, you can't help but notice some patterns in the triangle:
the outer values are all ones, each subsequent row has one more value than its previous row and the triangle is symmetrical.

Weird!

Not long after you sit down, your teacher enters the room and explains that this triangle is the famous
[Pascal's triangle][wikipedia].
ErikSchierboom marked this conversation as resolved.
Show resolved Hide resolved

Over the next hour, your teacher reveals some amazing things hidden in this triangle:

- It can be used to compute how many ways you can pick K elements from N values.
- It contains the Fibonacci sequence.
- If you color odd and even numbers differently, you get a beautiful pattern called the [Sierpiński triangle][wikipedia-sierpinski-triangle].

The teacher implores you and your classmates to lookup other uses, and assures you that there are lots more!
At that moment, the school bell rings.
You realize that for the past hour, you were completely absorbed in learning about Pascal's triangle.
You quickly grab your laptop from your bag and go outside, ready to enjoy both the sunshine _and_ the wonders of Pascal's triangle.

[wikipedia]: https://en.wikipedia.org/wiki/Pascal%27s_triangle
[wikipedia-sierpinski-triangle]: https://en.wikipedia.org/wiki/Sierpi%C5%84ski_triangle