記号ゴルファーΩ 解答編

答え合わせです。まずはお題を再確認。

「標準入力から文字列を読み込んで、奇数行目の文字列だけを出力するコードを書け」

以下問題解説。
必要な物は「ループ」「分岐」「出力」の三つです。
まずはループ。標準入力を行ごとに回す場合は、「$>.map{|line| ... }」が恐らく一番短いです。
次は分岐。真と偽を交互に返す式を書くことが出来れば良いわけです。これは多分「(flag ^= true)」が正解。これを利用して「flag ^= (flag || output)」と書くことが出来ます。outputは常にtrueを返し、flagの初期値はfalseまたはnilでなければなりません。
最後に出力。ゴルファーは皆知っていると思いますが(ボクはつい最近まで知りませんでしたが…)基本的に「$> << text」が一番短いようです。putsは罠です。奴はnilを返します。近づいちゃダメ。
上の三つを使うと、大体こんな感じでかけます。

$<.map{|line|$flag ^= ($flag || $> << line)}

$flagはスコープの関係でグローバル変数でなければいけません。悲しいことです。
変数名を変え、スペースといらない括弧を消してやると下のようになります。

$<.map{|_|$_^=$_||$><<_}

これで非記号3Bの24Bになりました。id:kurimuraさんやコメントして頂いたmameさんも同じコードかなと思います。面白くない問題ですみませんでした…