For future info, I’ll be posting the “art” images that I make with processing on tumblr, specifically the recursiveprocessing.tumblr.com. So follow there if interested. If not, then don’t!
Here’s a sample of the stuff going up on that site.
Pulsar (Processing Sketch)
Just playing around with Processing. Inspired by tumblrs like Experiments in Processing and Bees and Bombs.
Code is found here.
Edit:
Pulsar 2:
Code is found here.
Car Talk Gone Fishing Puzzler
TOM: Three guys go out fishing. They decide in advance that whatever they catch, they’re going to divvy it up equally.
So, they finish fishing for the day. They pull back into port, and they’re going to sleep on the boat overnight. They’re going to get up in the morning, divvy up the fish, and go home. In the middle of the night, however, one of the guys has a severe hemorrhoidal flare-up, and he’s got to get to the drugstore right away to buy some stuff.
RAY: Right.
TOM: So, he goes to take his third of the fish, and he notices that the number that they caught is not divisible by three, unless he throws one of the fish overboard. So, he throws one of the fish overboard, takes his third and leaves. A few hours later, in the middle of the night, another guy wakes up with horrible stomach pains. Heโs gotta have the Kaopectate. So he goes to take his third of the fish, and he notices, interestingly, the same thing — he can’t take a third unless he throws one fish overboard. He throws one fish overboard, takes his third, and goes home.
Third guy gets up in the morning and figures the other guys are still sleeping. So he figures, โI’ll just take my third, and I’ll go. When they wake up, they can take their third.โ However, he realizes that he can’t take a third. It’s not divisible by three.
RAY: Sonja Henie’s…! What are the chances of that?
TOM: He throws one fish overboard, takes his third, and leaves. Question: What is the smallest number of fish by which this little scenario could have taken place?
Can this happen with 4 people? 5? 6? n?
How do I start Programming?
These excerpts are from a response to a reader on the wonderful tumblr by Jerome Herr, Experiments In Processing.
Learning to code is like learning a natural language: itโs quite hard and slow at first but if you hold on just a little then suddenly you start seeing all the beauty of it and youโre amazed about how you suddenly understand whatโs going on and how you can create stuff (designs or sentences) on your own!
Start with something that you understand and then, VERY IMPORTANT, play with it! What I often do is that I simply add a new instruction, maybe one from a previous tutorial or sketch, to see how that will look. Or I wonder: what will the animation look like if I use very big ellipses? or very small ones? only 10 of them? or a 1000? What if I make this rectangles rotate a bit? A lot? What if I apply this to only some of them?
So itโs not just about staring at the screen. Itโs also about sketching stuff on paper and about letting yourself be inspired by everything you see in the world around you! Look at all the patterns that you can see in the natural world, day in and day out: in buildings, on the sidewalks, in the behaviour of cars or birds. Try to recreate those patterns. Start with the easy ones, obviously ๐ Look at Muslim art, lots of patterns to be found there. Or the art of Sol Levitt. And go to art museums, they can be very inspiring anyway!
Car Talk Product Placement Puzzler
RAY: There are a lot of our little children who listen to Car Talk who are studying Algebra, so I thought I would ask them to simplify the following polynomial.
TOM: Let me just write this down. OK.
RAY: X plus A in parentheses times X minus B in parentheses times X plus C in parentheses, dot, dot, dot, times X minus Z.
Here’s how it looks: (X+A)(X-B)(X+C) โฆ (X-Z)
TOM: So you want —
RAY: I want the product of all those terms.
Spirographs
Hat tip to Jim Olsen and John Golden:
Best spirograph app ever. http://t.co/lejJ7TQXw9 Thanks for the tip @DrOlsen314!
— John Golden (@mathhombre) November 6, 2014
Great activity for kids (and adults) of many levels:
How many rotations until the loop is closed?
Car Talk Annulus Puzzler
RAY: This puzzler is from a fellow named Jerry Olsen. Ed and his two sons, Biff and Skip, have been hired to paint the floor of a merry-go-round. They want to make sure they measure the floor area exactly, because they don’t want to buy any extra paint. The carousel, of course, is a circle. Here’s the catch: In the middle of the carousel is a smaller circle, which contains all the machinery for the carousel.
TOM: An annulus, in other words.
RAY: Exactly. It’s a ring we’re dealing with. Ed tells Biff, “We need to know the area of the carousel, including the area of the big outer circle that we’re going to paint and the area of the inner circle where there’s nothing but the machinery. “Once we have the areas of both circles we can subtract the inner circle from the other circle and we’ll know how much paint we need.”
Biff goes to the carousel and says to himself, “I can’t do this. All the machinery is in the middle. I can’t get to the center to measure the diameter.” He thinks, “I’ll cheat. The old man will never know!” Biff measures a straight line from one edge of the carousel to the other edge, not going through the center.
TOM: In other words he’s going to make what’s called a chord of the big circle.
RAY: Right. Any line that goes from one edge of the circle to the other that isn’t a diameter is a chord. As luck would have it, the tape measure touches the inner circle, or in geometric terms, is tangent to the inner circle at one point.
Biff returns to his dad and says, “I couldn’t do what you wanted me to do. I got this measurement and it’s 70 feet.” The old man administers a swift dope slap. He says, “How the heck are we going to figure this out. We don’t know either diameter.”
The other brother Skip says “I think I can figure it out. ”
Can he or can’t he?
Skype with Dark Sky
(This is a crosspost from my weekly photo site.)
The Introduction to Computer Programming Class had a Skype Q and A with Jason from Dark Sky (Dark Sky is an iOS weather app, check it out, it’s fantastic. They also make the great weather site forecast.io.) Super nice guy, I just emailed and asked, and it was scheduled a day later. Great experience for these kids.
Here’s some student responses to the prompt: “What blew your socks off? What’d advice/stories/information was surprising?”
- When how he told that if you really want to learn something. you need to be able to do it on your own time
- I think it is motivational that someone who is successful had a hard time and still does sometimes and still does what he wants to do.
- I thought it was really interesting when he talked about “reverse engineering” video games, and that was how he learned trigonometry. But now that I think about it, it isn’t surprising that it was easier for him to learn something difficult while immersing in something he was passionate about.
- The most surprising fact was that he wrote 45,000 lines of code to make the app originally, and then he modified it to do more, but only required 8,000 lines of code. I also really liked how he encouraged people to go on their own and explore other programs by themselves.
- What I guess what surprised me the most was how he compared computer programming to dance or singing or art. Going into this class I perceived computer programming as a very technical and systematic subject…that everything is by the book. While this may be true… talking to the developer brought to my attention that computer programming can be largely reliant on self discovery and self error.
- I was shocked when Jay told us how long it took to create his app and how many lines of code it required (45,000).
Kaprekar’s constant
A student talked about Kaprekar’s constant (6174) during their my favorite presentation.
Really cool.
Steps (from wikipedia):
- Take any four-digit number, using at least two different digits. (Leading zeros are allowed.)
- Arrange the digits in descending and then in ascending order to get two four-digit numbers, adding leading zeros if necessary.
- Subtract the smaller number from the bigger number.
- Go back to step 2.
Here’s an example (also from wikipedia):
For example, choose 3524:
5432 โ 2345 = 3087
8730 โ 0378 = 8352
8532 โ 2358 = 6174
Fun right? Also fun to program, here’s the python code that tries every number from 1000 to 10000, and counts how many steps it takes to get to 6174 and puts the results in a csv file:
def largest(nstr): if (len(nstr) == 0): return "" elif (len(nstr)==4) and (nstr[0] == nstr[1] == nstr[2] == nstr[3]): return "7641" digit = -1 index = 0 for i in range(0,len(nstr)): if (digit < int(nstr[i])): digit = int(nstr[i]) index = i return str(digit) + largest(nstr[0:index]+nstr[index+1:len(nstr)]) def kaprekarSteps(n): count = 0 nstr = str(n) while (n != 6174): l = int(largest(str(nstr))) lstring = str(l) s = int(lstring[::-1]) n = l - s nstr = str(n) while (len(nstr) < 4): nstr = "0" + nstr count += 1 return count f = open('kaprekar.csv','w') c = 1000 while (c < 10000): f.write(str(c)+ "," + str(kaprekarSteps(c)) + "\n") c += 1 f.close()
Euclid GCD
Darker pixel = longer Euclidean algorithm to find GCD(x,y). Here x & y range from 1 to 500. So many questions… pic.twitter.com/k8N6jiGxSd
— Matt Enlow (@CmonMattTHINK) September 24, 2014
I saw this toot by Matt yesterday morning and I loved the visual of the color based on the number of steps of Euclid’s GCD algorithm. The algorithm is pretty straightforward and it’s a nice example for either using recursion or using a loop. The coloring is fun to mess with too. The coding went quickly for me because I already had the code for breaking a 1D pixel array (why processing??) into x and y coordinates.
There’s two variations:
Here’s the link for the GCD steps version.
And here’s the link for the GCD version where the closer the GCD is to the minimum of x and y, the more white the pixel is.
Here’s the recursive algorithm:
int euclidGCD(int x, int y) { if (y == 0) { return x; } else if (x >= y && y > 0) { return euclidGCD(y,(x%y)); } else { return euclidGCD(y,x); } }
Here’s the loop algorithm to count the number of steps:
int euclidGCDsteps(int x, int y) { int t; int steps = 0; if (x >= y) { while (y != 0) { t = y; y = x % y; x += t; steps++; } } else { return euclidGCDsteps(y,x); } return steps; }