[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Merry Christmas!

Christian Neukirchen

12/24/2006 3:40:00 PM

# In the spirit of ruby-talk:172428 and ruby-talk:124391...

eval "IyBUaGFua3MgZm9yIGxvb2tpbmcgYXQgbXkgY29kZS4KIwojIENvcHlyaWdodCAoQy
kgMjAwMiwgMjAwNCwgMjAwNiAgQ2hyaXN0aWFuIE5ldWtpcmNoZW4gPGNobmV1a2lyY2hlbk
Bn bW
Fp bC5jb20+Ci MK
Iy BUaGlzIHByb2d yY
W0 gaXMgZn JlZSBzb2Z0d2FyZ Tsg eW
91 IGNhbiByZWR pc3RyaWJ1dGUgaXQ gYW5k L2
9y CiMgbW9kaWZ5IGl0IHVuZGVyIHRo ZSB0ZXJtcyB vZ
iB 0aGUgR05VIEdlbmVyYWwgUHVibGl jIExpY2Vuc2U uC
gp TVERPVVQuc3luYyA9IHRydWUKCmNs YXNzIFhNYXN IY
WN rMjAwNgogIFdJRFRIID0gKEVOVlsi Q09MVU1OUyJ dI
Hx 8IDgwKS50b19pCgogI GRlZiBpbm l0aWFsaXplC iA
gI CBAbWV zc2FnZSA9ICIgTUVSUlk uQ0hSSVNUTU FT
Lk FORC5BLkhBUFBZLk5FV y5ZRUFSISAgICAgICA gI
CA gIgogICAgQHBvcyA9ID AKICBlbmQKCiAgZ GV
mI HJ1bgogICAgY2xlYXIKCiAgICBpdGVyY XR
lI DguNCBkbwogICAgICByZXNldAogICAgICB zZ
XQ gMC4wMCwgMAogICAgICBzZXQgLTAuM jU
sI DIwCiAgICAgIHNldCAgMC41MCwgNDAKCi Ag
IC AgIHNob3cKICAgICA gc2xlZXAg MC4xCiAgICBlbmQKCiA gI
CB jbGVhciAzCiAgICB0aWNrZXIgImJyb3Vn aHQgdG8geW91IGJ5 IG
No cmlzMiIKICAgIGNsZWFyIDIKICBl bmQKCiA gZGVmIGl0ZXJh dG
Uo bikKICAgICgwLi5uKk1hdGg6OlBJKS 5zdGVwK DAuMDkpIHs gf
EB pfAogICAgICB5aWVsZAogICAgICBAcG 9zID0gK EBwb3Mg Ky
Ax KSAlIEB tZXNzYWdlLnNpemUKICAgIH0KICBlbmQK CiAgZGVmIH Jl
c2 V0CiAgICBAbGluZ SA9ICIgIiAqIFdJRFR ICiAgZW5kCgogIGRlZi Bz
ZX QodHJpZ29mZnNldCwgb XNnb2Zmc2V0KQog ICAgQGxpbmVbK E1
hd Gguc2luKEBpICsgTWF0aDo6 UEkqdHJpZ29mZ nNld Ck
gK iAoV0lEVEgvMi0xKSArIFdJRFRILzIpLnRvX2 ld
ID 0KICAgICAgQG1lc3NhZ2VbKEBwb3MgKyBtc2d vZ
mZ zZXQpICUgKEBtZXNzYWdlLnNpemU tMSldC iA
gZ W5kCi AgCiAgZGVmIHNob3cKICAgI HB1d HM
gQ GxpbmUKICBlbmQKICAKICBkZWYgY2x lY XI
ob j01MCkK ICAgIHByaW50ICJcbiIq bg
og IGVuZAoKICBkZWYgdGlja2VyKG1 lc
3N hZ 2UpCiAgICBwcmludCAiI CI
qK ChXSURUSC1tZXNzY Wd
lL nNpemU pL
zI pC
iAgICBtZXNzYWdlLmVhY2hfYnl0ZSB7IHxifCBwdXRjIGI7IHNsZWVwIDAuMiB9CiAgICBwd
XRzCiAgZW5kCmVuZAoKWE1hc0hhY2syMDA2Lm5ldy5ydW4K**".delete(" \n").unpack(
"m*").first # Copyright (C) 2006 Christian Neukirchen / chneukirchen.org

__END__
--
Christian Neukirchen <chneukirchen@gmail.com> http://chneuk...

1 Answer

William James

12/25/2006 2:35:00 AM

0

Christian Neukirchen wrote:
> # In the spirit of ruby-talk:172428 and ruby-talk:124391...
>
> eval "IyBUaGFua3MgZm9yIGxvb2tpbmcgYXQgbXkgY29kZS4KIwojIENvcHlyaWdodCAoQy
> kgMjAwMiwgMjAwNCwgMjAwNiAgQ2hyaXN0aWFuIE5ldWtpcmNoZW4gPGNobmV1a2lyY2hlbk
> Bn bW
> Fp bC5jb20+Ci MK
> Iy BUaGlzIHByb2d yY
> W0 gaXMgZn JlZSBzb2Z0d2FyZ Tsg eW
> 91 IGNhbiByZWR pc3RyaWJ1dGUgaXQ gYW5k L2
> 9y CiMgbW9kaWZ5IGl0IHVuZGVyIHRo ZSB0ZXJtcyB vZ
> iB 0aGUgR05VIEdlbmVyYWwgUHVibGl jIExpY2Vuc2U uC
> gp TVERPVVQuc3luYyA9IHRydWUKCmNs YXNzIFhNYXN IY
> WN rMjAwNgogIFdJRFRIID0gKEVOVlsi Q09MVU1OUyJ dI
> Hx 8IDgwKS50b19pCgogI GRlZiBpbm l0aWFsaXplC iA
> gI CBAbWV zc2FnZSA9ICIgTUVSUlk uQ0hSSVNUTU FT
> Lk FORC5BLkhBUFBZLk5FV y5ZRUFSISAgICAgICA gI
> CA gIgogICAgQHBvcyA9ID AKICBlbmQKCiAgZ GV
> mI HJ1bgogICAgY2xlYXIKCiAgICBpdGVyY XR
> lI DguNCBkbwogICAgICByZXNldAogICAgICB zZ
> XQ gMC4wMCwgMAogICAgICBzZXQgLTAuM jU
> sI DIwCiAgICAgIHNldCAgMC41MCwgNDAKCi Ag
> IC AgIHNob3cKICAgICA gc2xlZXAg MC4xCiAgICBlbmQKCiA gI
> CB jbGVhciAzCiAgICB0aWNrZXIgImJyb3Vn aHQgdG8geW91IGJ5 IG
> No cmlzMiIKICAgIGNsZWFyIDIKICBl bmQKCiA gZGVmIGl0ZXJh dG
> Uo bikKICAgICgwLi5uKk1hdGg6OlBJKS 5zdGVwK DAuMDkpIHs gf
> EB pfAogICAgICB5aWVsZAogICAgICBAcG 9zID0gK EBwb3Mg Ky
> Ax KSAlIEB tZXNzYWdlLnNpemUKICAgIH0KICBlbmQK CiAgZGVmIH Jl
> c2 V0CiAgICBAbGluZ SA9ICIgIiAqIFdJRFR ICiAgZW5kCgogIGRlZi Bz
> ZX QodHJpZ29mZnNldCwgb XNnb2Zmc2V0KQog ICAgQGxpbmVbK E1
> hd Gguc2luKEBpICsgTWF0aDo6 UEkqdHJpZ29mZ nNld Ck
> gK iAoV0lEVEgvMi0xKSArIFdJRFRILzIpLnRvX2 ld
> ID 0KICAgICAgQG1lc3NhZ2VbKEBwb3MgKyBtc2d vZ
> mZ zZXQpICUgKEBtZXNzYWdlLnNpemU tMSldC iA
> gZ W5kCi AgCiAgZGVmIHNob3cKICAgI HB1d HM
> gQ GxpbmUKICBlbmQKICAKICBkZWYgY2x lY XI
> ob j01MCkK ICAgIHByaW50ICJcbiIq bg
> og IGVuZAoKICBkZWYgdGlja2VyKG1 lc
> 3N hZ 2UpCiAgICBwcmludCAiI CI
> qK ChXSURUSC1tZXNzY Wd
> lL nNpemU pL
> zI pC
> iAgICBtZXNzYWdlLmVhY2hfYnl0ZSB7IHxifCBwdXRjIGI7IHNsZWVwIDAuMiB9CiAgICBwd
> XRzCiAgZW5kCmVuZAoKWE1hc0hhY2syMDA2Lm5ldy5ydW4K**".delete(" \n").unpack(
> "m*").first # Copyright (C) 2006 Christian Neukirchen / chneukirchen.org
>
> __END__
> --
> Christian Neukirchen <chneukirchen@gmail.com> http://chneuk...


require 'Win32/Console'
$console = Win32::Console.new(STD_OUTPUT_HANDLE)
$console.Cls()

def at_xy( x, y )
$console.Cursor(x.to_i, y.to_i)
end

STDOUT.sync = 8

width = 80
height = 25 - 1

def collide( deltas, loc, string )
x,y = loc.zip(deltas).map{|a,b| (a+b).to_i}
(x ... x+string.size).zip([y]*string.size).any?{|a| $board_hash[a]}
end

def rectangle( loc, dims )
(loc[1] ... loc[1]+dims[1]).each{|y|
(loc[0] ... loc[0]+dims[0]).each{|x|
$board[y][x] = "*"
$board_hash[[x,y]] = true }}
end

def draw( x,y,str, show=true)
at_xy( x,y)
print (show ? str : " " * str.size)
end

$board = Array.new(height){ " " * width}
$board_hash = {}

[ [0,0,width,1],
[0,1,1,height-2],
[width-1,1,1,height-2],
[0,height-1,width,1]
].each{|a| rectangle( a[0,2], a[2,2] ) }
(1..8).each{|yy| rectangle([9-yy,yy], [1,1] )
rectangle([yy+22,yy],[1,1]) }
rectangle( [9,17], [23,3] )
rectangle( [40,5], [30,1] )
rectangle( [30,1], [1,7] )
rectangle( [60,10],[1,7] )
rectangle( [49,6], [1,1] )
12.step(20,2){|yy| rectangle([yy*4-18,yy], [1,1]) }
print $board

thing = "Yule"
y = height - 2
x = width - 1 - thing.size
dx,dy = 1,1

while 3 do

count = nil
[[dx,0],[0,dy],[dx,dy]].each{|a|
if collide(a,[x,y],thing)
count = a.select{|n| n.nonzero?}.size
x_ok,y_ok = [[1,1],[1,nil],[nil,1]][count>1 ? rand(3) : 0]
dx = -dx if x_ok && a[0].nonzero?
dy = -dy if y_ok && a[1].nonzero?
end
break if count && a[1].nonzero?
}
print "\a" if 2 == count
draw( x,y,thing, nil )
x += dx ; y += dy
draw( x,y,thing )
sleep 0.05

end