Solution (source code)

= Solution

This language is not context-free. If $p$ were a pumping length, apply the lemma to
$$
z=0^p1^p0^p.
$$
Because $|vwx|\leq p$, the pumped region meets at most two adjacent blocks and cannot meet both zero blocks. Pumping with $i=0$ or $i=2$ changes at least one symbol count. If it changes either zero block, that block no longer agrees with the untouched zero block; if it changes only the middle block, the number of ones no longer agrees with the two zero counts. In every case the pumped word leaves the language, contradicting the lemma.