Showing that a zigzag space is contractible I'm trying to solve part (b) of exercise 0.6 in Hatcher's Algebraic Topology:

(b) Let $Y$ be the subspace of $\mathbb{R}^2$ that is the union of an infinite number of copies of $X$ arranged as in the figure below. Show that $Y$ is contractible but does not deformation retract onto any point.


This question has been discussed several times before on this site (and elsewhere). However, the focus was always on proving that the space isn't deformation retractable. What I'm interested in is showing that the space is contractible (identity function is nullhomotopic). There was one question addressing this issue for a similar space, but the answer is beyond my knowledge. I'm convinced there is an easier proof for someone who's only read the first few pages of Hatcher's book.
I found some solutions on the web, but some are wrong and some are missing crucial details.
What I know:

*

*It's sufficient to show that the space deformation retracts in the weak sense to the bold zigzag. By a previous exercise (0.4), there is a homotopy equivalence. The bold zigzag is homeomorphic to $\mathbb{R}$, which makes it contractible.

*We can construct this space as a quotient space of the disjoint union of countably many copies of one triangle, by identifying common edges. It's easy to show that this union is contractible. I'm having a hard time showing that the homotopy transfers to the quotient space.

This is self-study. Any help would be appreciated. Thanks.
 A: You've correctly identified the fact that each individual triangle is contractible, and strong deformation retracts to its "base".
The key thing here is that if you just do the retraction on each triangle, the result isn't continuous, because the sequence of "bristles" on each triangle approach the base of another triangle, so if you start sliding down the bristles without also moving the base, you're essentially "ripping" the structure.  I'll leave it as an exercise for you to prove this rigorously.
Fortunately, there's a solution: Slide the base as well!  Simply move every point in the base along the zigzag to the right at the same speed you're contracting the triangles.  As points in the bristles reach the base, have them turn the corner and start sliding along the zigzag as well, and as points reach the end of one base have them turn the corner on the zigzag and continue to the right at the same speed.
Now there's no "ripping" happening, since each base is going in the same direction as the parallel bristles near it.  One characterization I like of this homotopy is: "Each point has a preferred path out to infinity, just tell them to all start to marching."
Once you've moved everything a distance of 1, all the bristles will have been retracted into the zigzag and you've got yourself a "weak deformation retraction" from the full space to the zigzag, and you're done.  Note that this isn't a true deformation retraction, since we only got it working by moving points in the zigzag itself, so the base wasn't fixed.
Proving this whole thing is continuous is pretty elementary, and can be done straight from the definitions of homotopy and continuous map, so I'll leave it to you to formalize.  I'd recommend breaking it into cases:  First show it's continuous for points along the bristles, then show it's continuous for points in the interior of the bases, and finally show it's continuous for points on the corners of the zigzag.
