「ターミナルウィンドウに雪を降らせよう! - Macの手書き説明書」で紹介されているワンライナーがどんな風に動いているのか調べてみました。
ワンライナーだと難しく感じますが、以下のように書き直すと案外分かりやすくなりますね。エスケープシーケンスの勉強にもなりました。
snow.rb
# -*- coding: utf-8 -*- C = `stty size`.scan(/\d+/)[1].to_i # 画面 横のサイズ S = ["2743".to_i(16)].pack("U*") # 雪の形をつくる a = {} # それぞれの雪の座標を管理 puts "\033[2J" # 画面のクリア loop { a[rand(C)] = 0 a.each{|x,o| a[x] += 1 # 雪のy座標をひとつ下へ降ろす # 直前の繰り返しで描画した雪を消去し、新たに雪を描く。 # 雪が降っているように見せる。 print "\033[#{o};#{x}H \033[#{a[x]};#{x}H#{S} \033[0;0H" } $stdout.flush sleep 0.1 }