Last active
July 27, 2019 13:17
-
-
Save tompng/7e15397aba472c136aa8bf7fdcf3f63b to your computer and use it in GitHub Desktop.
自己紹介用コード(moved to https://github.com/tompng/tompng)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
######################################################################################################################################################################################## | |
######################################################################################################################################################################################## | |
######################################################################################################################################################################################## | |
########### ######################################################################################################################################################################## | |
########### ######################################################################################################################################################################## | |
########### ######################################################################################################################################################################## | |
########### ######################################################################################################################################################################## | |
##### ######### ########## ### ###### ######### ## ########## #### ############## ## ##### | |
##### ####### ######## # ## ####### ######## ## ########## ##### | |
##### ##### ##### ###### ## ### ###### #### ###### ### ####### ##### ##### | |
########### ########## ########## ##### ####### ####### ###### ########## ###### ######## ###### ######### ##### | |
########### ######### ############ ##### ######### ########## ###### ############ ##### ########## ##### ########### ##### | |
########### ######### ############# #### ########## ########## ###### ############## ##### ########### #### ############# ##### | |
########### ######### ############## #### ########## ########## ###### ############## ##### ############ #### ############# ##### | |
########### ######### ############## #### ########## ########## ###### ############## ##### ############ #### ############# ##### | |
########### ######### ############## #### ########## ########## ###### ############## ##### ############ #### ############# ##### | |
########### ######### ############# ##### ########## ########## ###### ############# ##### ############ ##### ############ ##### | |
########### ########## ############ ##### ########## ########## ###### ########### ##### ############ ##### ########## ##### | |
########### ########## ######## ###### ########## ########## ###### ####### ###### ############ ###### #### ##### | |
########### ##### ####### ########## ########## ###### ####### ############ ######## ##### | |
########### ####### ######### ########## ########## ###### # ######### ############ ########## ### ##### | |
############# ########## ############ ########## ########## ###### ##### ############# ############ ####################### ###### | |
################################################################################################# ##################################################################### ###### | |
################################################################################################# ##################################################### ######### ####### | |
################################################################################################# ##################################################### ######## | |
################################################################################################# ####################################################### ########## | |
################################################################################################# ############################################################ ################ | |
######################################################################################################################################################################################## | |
######################################################################################################################################################################################## |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require'io/console';cx,w,h,m=cy=0.5;zm=2;R=->{l='';h,w=IO.console&.winsize||[48]*2;h*=2;m=1.0*[w,h].min;m*zm<=w&&cx=0.5;m*zm<=h&&cy=0.5;g=(0...h).map{[0]*w};[[524,489,%(H9zR0b8H/R4EJlT | |
y5fyPUDVdSVeyIiuzaChOoHiIwhiK9wfZpEuoHKGEBkHQcBv9EWmH28FWXMf0kHDYhi0R3AYdgxEYgYNDGZiGKZ3zOTeC52RWRdv5Zr414suo7ujuEpZHeZyNUsMMEE5a0e41OvXu5/b3wvf/z299+f/lX6H4wQY)],[509,22,%(FVAgpVA59Dv | |
dSraTKmVyJoeGk6FkaGhSNB1JDwE0SZK1gWKgHNjP98f1x9a2uGluWnANC7Igx8wwS1+Tv+Qv/EiKpBD6iiAGPoFiME5G04EkHxpGEyxBOYmQiI2wMA1HEjEYg8Pq0Ua0jt8ggYR3yGADHbfcjOnkTc4M4RmZFpFWop6oD/wT+h/6D76Doi+pv67 | |
velZAD31yUD ATzJBJ4WGhoZERsVwsmx8ZtCGHv7iCL3b/9H73/rR/1n82fn170yv3y7Tbr/cb9Xq5Wqo9rxQrxXL7T7PZbPQ6DVHvV0wZBA)],[628,111,%(APz70G6321JUVFU/w/+DhWA13My2cnqsHmvGssVuuBthciZt0/0oiMF4cD | |
CDDMT+E4GFN qRP+0N/R0VURHQIhkEqDgAArBnqBDvj3/MO7wJBNDHEU8tsBFBJBfmvOqpT7tV1Xf/0Xdqh3QgMgdDIJGSQaWawRlIppHE/4ailkFpooe5rYIAhhhrqsxop3LdaaeUbsA7r9HuoEqpEa8lmspVr5EzODOPpYCo4aDgAAQ)], | |
[639,115,%( EMzODowPTIweFIlH4zSNKGKYeOihMsoo06y3ZUfUZNu3XZF74AEEHnjQLOqe7jth+65vasBDDwD0AQ)],[417,358,%(DndGi+FieHu5nqQmu6lwOBxOJ2KCCULYYUc/4P/4H/pACrjA/pI+6TOBIQImCcIwApMkQsIszhGH | |
UUn7tK++gC7 seoc7uJv/Bhqw0a44bbX10EGXYTEQhymYU1k5/Veyl+xREVERFZEhGIbhMCUUA0oQhiGNIIIeAwyIjeEgDobCjDLGHeWUw6kYIEAkklCaouu6nukBAzQyCCCQHhnKh3LB0cHBwcHB4eFMOJMbAgAA1U+yLuq9/0ADDSwCCGS | |
HAgCA /NAviGLje 6fUKdWLqqM 6so 088rFI MBgMZoYhD 4H umb7pV78YY QSQ1 jtngUUG9kOWOgo pp JBy5q | |
mnimu kUccbbX WoZvu2L3 t 9I 0wLtmmb VjPNcCPc Cj bCzXA9Wg/W g6VgG | |
7VRxw sjjOl qq50B BhjomA EG iJ4 DFgBoc Q)], [733,+ 435 ,%(HkcZ pJAoC imgLE | |
QghtRhi60X2 CATdMggA6S z1gpvoYWAW mhBp2 +AARYDF A)],[33 +400,+ 624,%(AITH hrKhTH ZSiIUYBS Ef8sl+ UAd1SALnn fUGGN | |
iJCtRHfdzTX V0rdmudWu 0NAAE)],[673 ,622, %(AOTaMRW XQzvcBm0QA A+cshp o0GA90iVd2ud 93kgB EA)],[513, +803, %(APzLi3g/r lImZZ | |
JmIIyjOMtgj DEE1BOfas RBHIwZzBBDEBG HHfl CO6zDu9RQz RDWyNi2FU5 4KYUSb dEUrf67MgAB)], [689, 683,%(7Wh9O QiBI KIEURSRHHLIWJ AFaTQ | |
RJBxTxC03kT 9cBRVzHHA fYdQTgD1yyAHlt TfeS inFhVs1W7V 90okG)],[8 *60-1, 766,%(DoORMARD hALqq WUAAJBAERAGO Rd2Y R+zAACgpdVOmb bt275 | |
qeesN9M4716 J92Ac1a6E BHngc)],[659,+ 765, %(ANAulVTF ekxyiRTXTA dVCIVg OBvmERbDYRzBWQ wAAEZ ZbXSv2ev2u/W mErJ vrBVO4LrXTnur nfbFU | |
Ae3cY1opJAD DjnsMCCQB BnmhJMY4JB74rh lvZA LuiCLQwoYY AAE)],[600 ,72,%( ANTKbdmSdVUGZf AxVIl UI+1UP96P27B N2RQ Z6AeCvJqJEEZI UkB8l | |
FFMMWYEEgAt c8xN6BBPH PIAQvA9I7jkDu ugCvY yhltmqccee QwhBLF2UIV UTIdNW HMYkVE5pBRpRV qgHu6 Gu3nJFVfUQgm lbIh+ X1Rk27VcDfVx n0jus | |
CMQIYLp0CTE kBjkkEPWW2 yxjymmWItJJJ G0Ghn kmSGGyLCEE vW9VkrZIqy havw7b /Em0cFOsB0p xPrRX tzFXcJmQBwn8 KA4AA E)],[16*31 ,205, | |
%(FkpmiSWGQ QgR99hjRxy y2BLlHXD GWRA)] ,[375,5*68 ,%(DqiYCZt IbyCIw mg4hSGG 0GGLbe Qn6ZIubgAAQC dtnPX4 j7fe eOtB) | |
],[645,130, %(AJA 8D/NwPB jncT4IxVmc JYKMMEIZ8B C0S33R 77dkx3R 0FWmrjVXQQZu j0AJb6HR 0V5c1 | |
AAE)],[433, 379,%(D lrosMMo7a IuIqM6oZO9 jB6kB5lZIO mTIIkh g thigzQqox ZsggpuozZpY4 klNVAj7QS0 0AI LPQQE | |
QgyRZT7ouU2iC IzQFCGEEkQ 89ayLFZFIAgm lllBAEWwTQ SR1uI/65oe RRkprv fUOeO QgCjvkkAXWWSe KzjnngQMB)], [843,387,%(ANR+9tv9Vqvk nPXeO+ | |
ghisAQCsIwi7PEyHkIYwIRAtBD5a231jvjtO2avul3/gMAwMAhGGGEEPQB)]].map{|x,y,c|n=[];c=c.unpack('m')[0]. unpack('b*')[0].chars;[]while'1'!=c.pop;n<<(c.shift==?0?(v=c.shift(4) .join. | |
to_i(2))>7?v-=16:v:(v=(c.shift(5+2*a=c.shift.to_i)*l).to_i(2))>15+a*48?v-40-a*112:v+7+a*15)while( c[0]);c=[];n.each_slice(6){|q,r,s,t,u,v,p=(zm*m/1024) |u+=s+=q; v+=t+=r | |
;(0...n=1+(u.abs+v.abs)*p).map{|i|a=3*(1-z=i/n)**2*z;c<<[(x+a*q+z**3*u+s*b=3*z*z*(1-z))*p+(w-m*zm )*cx,(y+a*r+z**3*v+t*b)*p+(h-m*zm)*cy]};x+=u;y+=v};c} .zip([1, | |
2,*([3]*8),4,4,*([5]*6)]){|c,a|s={};c.size.times{|i|u,v=c[i-2];x,y=c[i-1];p,q=[u,x].sort;([p.ceil ,0].max..[q.floor,w-1].min).each{|j|j!=u&&(j!=x||(x-u)* (-c[i][0]+ | |
x)<0)&&(s[j]||=[])<<v+(y-v)*(j-u)/(x-u)}};s.map{|i,t|t.sort.each_slice(2){|u,v|([u.ceil,0].max... [v,h].min).map{|j|g[j][i]=a}}}};$><<("\e[1;1H\e[J");$>.write g.each_slice(2). | |
map{|a,b|(a.zip(b).map{|i,j|%(\x20`''"^.:]TYY,;IEPPcjL8RRxLJ&WWxLJ&##)[i+6*j]}*l)}*"\r\n"};R[];trap(:WINCH){R[]};STDIN.raw{loop{s=$<.getc;s.ord==3&&exit;s=="\e"&&s<<$<.gets(2);zm=[2**( | |
('-m+p'.index(s)||1.0)/2*2-1)*zm,16,1].sort[1];cx=[0,cx+(s=~/[ahD]/?1:s=~/[dlC]/?-1:0)*w/(w-m*zm+1)/2,1].sort[1];cy=[0,cy+(s=~/[wkA]/?1:s=~/[sjB]/?-1:0)*h/(h-m*zm+1)/2,1].sort[1];R[]}} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
data = File.read 'tompng.svg' | |
colors = data.scan(/<path fill="#(.{6})"/).map do |(color)| | |
rgb = color.scan(/../).map { |c| c.to_i(16) } | |
1 - rgb.sum.fdiv(0xff*3) | |
end | |
colors = colors.map { |c| (c - colors.min) / (colors.max - colors.min) * 0.9 + 0.1 } | |
starts = [] | |
curves_base = data.scan(/d="[^"]+"/).map do |s| | |
x, y, *other = s.scan(/-?\d+/).map(&:to_i) | |
starts.push [x, y] | |
other.each_slice(6).map { |a,b,c,d,e,f| [a, b, c - a, d - b, e - c, f - d] }.flatten | |
end | |
packed = curves_base.zip(starts).map do |numbers,(sx,sy)| | |
bits = numbers.map do |v| | |
next [0, 4.times.map{|i|(v>>i)&1}.reverse] if -8 <= v && v < 8 | |
v -= v > 0 ? 8-1 : -8 | |
next [1, 0, 5.times.map{|i|(v>>i)&1}.reverse] if -16 <= v && v < 16 | |
v -= v > 0 ? 16-1 : -16 | |
next [1, 1, 7.times.map{|i|(v>>i)&1}.reverse] | |
end | |
[sx,sy,[[bits.join+'1'].pack('b*')].pack('m').delete("\n=")] | |
end | |
code = File.read(__FILE__).split(/\nexit\n/).last | |
packed_rb = '[' + packed.map { |x,y,s| "[#{x},#{y},%(#{s})]" }.join(",\n") + ']' | |
code = code.gsub('packed', packed_rb) | |
File.write('tmp.rb', code) unless File.exist? 'tmp.rb' | |
tmp = File.read('tmp.rb').delete "\n " | |
unless File.exist? 'template.txt' | |
require 'chunky_png' | |
png = ChunkyPNG::Image.from_file 'template.png' | |
ratio = (png.width*png.height).times.count{|xy|(png[xy%png.width,xy/png.width]&0xff00)<0xff00/2}.fdiv(png.width*png.height) | |
w = 184 | |
h = (tmp.size / (1-ratio) / w).round | |
p tmp.size, w, h | |
shape = h.times.map{|y| | |
w.times.map{|x| | |
(png[x*png.width/w,y*png.height/h]&0xff00)<0xff00/2 ? ' ' : '#' | |
}.join | |
}.join("\n") | |
File.write 'template.txt', shape | |
end | |
shape = File.read 'template.txt' | |
idx=0 | |
out='' | |
shape.chars.map{|c| | |
if c=='#' | |
out << (tmp[idx] || ';') | |
idx+=1 | |
else | |
out << c | |
end | |
} | |
out << (tmp[idx..-1]||';') | |
File.write('out.rb', out) | |
code.delete!("\n ") | |
eval code | |
exit | |
require'io/console'; | |
cx,w,h,m=cy=0.5; | |
zm=2; | |
R=->{ | |
l=''; | |
h,w=IO.console&.winsize||[48]*2; | |
h*=2;m=1.0*[w,h].min; | |
m*zm<=w&&cx=0.5; | |
m*zm<=h&&cy=0.5; | |
g=(0...h).map{[0]*w}; | |
packed.map{|x,y,c| | |
c=c.unpack(?m)[0].unpack('b*')[0].chars; | |
[]while'1'!=c.pop; | |
n=[]; | |
n<<( | |
c.shift==?0 ? | |
(v=(c.shift(4)*l).to_i(2))>7?v-=16:v : | |
(v=(c.shift(5+2*a=c.shift.to_i)*l).to_i(2))>15+a*48?v-40-a*112:v+7+a*15 | |
)while(c[0]); | |
c=[]; | |
n.each_slice(6){|q,r,s,t,u,v,p=(m*zm/1024.0)| | |
u+=s+=q; | |
v+=t+=r; | |
(0...n=1+(u.abs+v.abs)*p).each{|i| | |
a=3*(1-z=i/n)**2*z; | |
c<<[ | |
(x+a*q+z**3*u+s*b=3*z*z*(1-z))*p+(w-m*zm)*cx, | |
(y+a*r+z**3*v+t*b)*p+(h-m*zm)*cy | |
] | |
}; | |
x+=u; | |
y+=v | |
}; | |
c | |
}.zip([1,2,*([3]*8),4,4,*([5]*6)]){|c,a| | |
s={}; | |
c.size.times{|i| | |
u,v=c[i-2]; | |
x,y=c[i-1]; | |
p,q=[u,x].sort; | |
([p.ceil,0].max..[q.floor,w-1].min).each{|j| | |
j!=u&&(j!=x||(u-x)*(c[i][0]-x)<0)&&(s[j]||=[])<<v+(y-v)*(j-u)/(x-u) | |
} | |
}; | |
s.map{|i,t| | |
t.sort.each_slice(2){|u,v| | |
([u.ceil,0].max...[v,h].min).map{|j|g[j][i]=a} | |
} | |
} | |
}; | |
$> << "\e[1;1H\e[J"+g.each_slice(2).map{|a,b|(a.zip(b).map{|i,j|%(\x20`''"^.:]TYY,;IEPPcjL8RRxLJ&WWxLJ&##)[i+6*j]}*l)}*"\r\n" | |
}; | |
R[]; | |
trap(:WINCH){R[]}; | |
STDIN.raw{ | |
loop{ | |
s=$<.getc; | |
s.ord==3&&exit; | |
s=="\e"&&s<<$<.gets(2); | |
zm=[1,16,zm*2**(('-m+p'.index(s)||1.0)/2*2-1)].sort[1]; | |
cx=[0,cx+(s=~/[ahD]/?1:s=~/[dlC]/?-1:0)*w/(w-m*zm+1)/2,1].sort[1]; | |
cy=[0,cy+(s=~/[wkA]/?1:s=~/[sjB]/?-1:0)*h/(h-m*zm+1)/2,1].sort[1]; | |
R[] | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'chunky_png' | |
def load_shape(name, w) | |
img = ChunkyPNG::Image.from_file "#{name}.png" | |
h = (w * img.height / img.width).round | |
lines = h.times.map do |y| | |
chars = w.times.map do |x| | |
color = img[img.width * x / w, img.height * y / h] | |
color & 0xff00 < 0xff00 / 2 ? '#' : ' ' | |
end | |
chars.join | |
end | |
a=lines.map{|a|a.scan(/^ */).first.size}.min | |
b=lines.map{|a|a.scan(/ *$/).first.size}.min | |
p [a, b] | |
lines.map!{|l|l[a...-b]} | |
lines.shift while lines.first.count('#')==0 | |
lines.pop while lines.last.count('#')==0 | |
lines=lines.each_slice(2).map(&:first)+lines.each_slice(2).map(&:last) | |
[lines[0].size,lines.size, lines.join("\n")] | |
end | |
# w,h,shape = load_shape('template2', 40) | |
w, h = [34, 56] | |
shape = %( | |
| ##### | | |
| ############ | | |
| ############### | | |
|################### | | |
|####################### | | |
|######################### | | |
| ######################### | | |
| ########################## | | |
| ########################### | | |
| ############################ | | |
|### ########################## | | |
|## ######################## ### | | |
| ######################### #### | | |
| ######################### #### | | |
| ########################## ####| | |
| ######################### ####| | |
|### ##################### ###| | |
|### ################## #| | |
|### ########## ##### | | |
|### ####### ###### | | |
|## ###### ######### | | |
| ##### ########## | | |
| ##### #### | | |
| #### | | |
| ######## | | |
| ########## | | |
| ######## | | |
| ######## | | |
| ########## | | |
| ############## | | |
| ################ | | |
|##################### | | |
|######################## | | |
| ######################### | | |
| ########################## | | |
| ########################## | | |
| ########################### | | |
| ############################ | | |
|## ############################ | | |
|########################### #### | | |
| ######################### #### | | |
| ########################## #### | | |
| ########################## ####| | |
|### ###################### ###| | |
|### ################### ##| | |
|### ################## | | |
|### ######## ##### | | |
|## ####### ####### | | |
|## ##### ########## | | |
| #### ######## # | | |
| ##### ## | | |
| ###### | | |
| ######## | | |
| ########## | | |
| ######## | | |
| ## | | |
).lines.map{|l|l.split('|')[1]}.compact.join("\n") | |
segments = shape.delete("\n").scan(/( +)(#+)/).flatten.map(&:size) | |
s=segments.map{|a|(a+32).chr}.join | |
s+='@tompng'.reverse | |
quote = '%q~'+s.gsub('\\','\\\\\\')+'~' | |
code, template = DATA.read.split(/\n{2,}/) | |
chars = code.delete(" \n").gsub('QUOTE', quote).chars | |
eval chars.join | |
formatted = template.lines.map{|l| | |
chars.shift if chars.first==';' | |
l.gsub('#') { chars.shift } | |
}.join | |
File.write 'tompng_simple.rb', formatted | |
puts formatted | |
__END__ | |
i=0;s=%w`a=(q=QUOTE).chars.map{|c|[i=1-i]*(c.ord-32)}*'';952.times{|i| | |
$><<(q[1127-i]||('#".%c'%32)[(a[i]+a[i+952]).to_i(2)])<<$/[~i%34] | |
}`*'';eval(s) | |
### | |
######### ######## ######## ###### ######### ### ##### ######### | |
######### ########## ################ ########### ########## ########### | |
### ### ### ### #### ### ### ### #### ### #### #### | |
### ### ### ### #### ### ### ### ### ### #### #### | |
###### ########## ### #### ### ########### ### ### ########## | |
###### ######## ### #### ### ######### ### ### ######## | |
### ### #### | |
### ########## |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
,cxJJJJJxc | |
,cJ&###RRRPPPRRJ | |
,I8####REEIIIIIIIIE, | |
IL####PIIIIIIIIIIIIII, | |
II####EIIIILJJJJJLIIIIE&&xc | |
II###EIIIII########8IIIR###R8c | |
II##8IIIIIIIP#######IIII8RRR##&xc | |
'I##8IIIIIJ8#####RPEIIIIIIIIIIEPR& | |
I##8IILJ&&####R8IIIIIIIIIIIIIIIIE8 | |
'RR&JJ#R#####REIIIIIIIIIIIILLIIIII, | |
88888&####REIIIIIIIIIIIL88888LIL88 | |
c888&###RR8EIIIIIIIIIL888EEE88EII&E8 | |
&88&REIIIEIIIIIIIIL888EIIIIIIEE88##IE, | |
#88'8L8LIIIIIILL888EIIIIIIIIIII888#RJI, | |
### 88#8&8EE888EEEIIIIIIIIIIIIIIIE8,#8LI, | |
##'L88####8IIIIIIIIIIIIIIIIIIIIIIII8 P8LII | |
88######IIIIIIIIIIIIIIIIIIIE8L8IE 88LI, | |
L8#R####EIIIIIIIIIIIIIIIIIIIIE8III I88II, | |
,8###EIIIIIIIIIIIIIIIIIIIIIIIIII E88II | |
I8#8I###IIIIIIIIIIIIIIIIIIIIIIIIII' 'LEIII | |
88#I]##RIIIIIIIIIIIIIIIIIIIIIIIII' ILIII | |
I8##::888IIIIIIIIIIIIIIIIIIIIIILL' 'LIII | |
:I8#P::IEEIIIIIIIIIIIIIIIIIILEEI' 'LI' | |
::I8#I::IIIIIIIIIIIIIIIIIIJJJJWWW ' | |
..:::I88I:::IIIIIIIIIIII]]]:YWWWWWWW | |
.:::::::I88::::EIIIIIIIII::::::::WWWWWWWx. | |
.:::::::::I88:::::ELIIIIIII::::::::WWWRRWWWWL:.. | |
:::::::::::I8E::::::ELIIILL]:::::::WWR8888RRWWW:::. | |
:::::::::::::]:::::::IIEEEI]::::::::R888888888888j`` | |
::::::::::::::::::::::WWWWW::::::::`'''888888''''' | |
::::::::::::::::::::::WWWWWW::::` '888' | |
:::::::::::`:::::::::WWWWWWL`` | |
::::`` ``` c888888888c | |
.::: 88888888888 | |
::` 888888888888' | |
`` 8888888888' | |
8888888888 | |
' ''8' | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
i=0 | |
s=%w`a=(q =%q~'%9, 4/23/7+9 *9):(; '<%#!:$"! 8!# %9!$$ 9"$":#$!9 | |
$'!5&&"2* $"*#%+##'& &)"%&%).%&*-%)$1 $=(9*8(:(8* 6.3015-8+9 ):(:(;'<%"! | |
<#; !$$ 9"$ ":" $":# '!6 %&" 3(% "2+# "(& %*"$ '&'( | |
"%% &*- $'( !!- %*"2 &;( 9*8 (?" gnp mot @~). char | |
s.map{ |c|[i=1-i] *(c .ord -32 )}*'';952.t ime s{| i|$><<(q[1 | |
127-i] ||('#".% c'% 32)[ (a[ i]+a[i+95 2]) .to _i(2)])< | |
<$/ [~i %34] | |
}`* '';eval(s) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
...#####.. | |
.############. | |
###############. | |
###################.. | |
#######################. | |
"########################. | |
#########################. | |
########################## | |
########################### | |
############################ | |
##".##########################. | |
##.######################## ###. | |
######################### "###. | |
.######################### #### | |
########################## #### | |
.##"###################### "### | |
### "###################" "## | |
### ################## " | |
### ########"" "####. | |
##" ####### ######. | |
## #####" #########. | |
####" ########"# | |
##### "##" | |
####.. | |
######## | |
########## | |
######## | |
"""""##" @tompng |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require'io/console';h,w=IO.console&.winsize||[0,0];g=(0...m=[[h,w/2].min*2,48].max).map{[0]*m};[[524,489,%w(H9zR0b8H/R4EJlTy5fyPUDVdSVeyIiuzaChOoHiIwhiK9wfZpEuoHKGEBkHQcBv9EWmH28FW | |
XMf0kHDYhi0R3AYdgxEYgYNDGZiGKZ3zOTeC52RWRdv5Zr414suo7ujuEpZHeZyNUsMMEE5a0e41OvXu5/b3wvf/z299+f/lX6H4wQY)*l=''],[509,22,%w(FVAgpVA59DvdSraTKmVyJoeGk6FkaGhSNB1JDwE0SZK1gWKgHNjP98f1x9 | |
a2uGluWnANC7Igx8wwS1+Tv+Qv/EiKpBD6iiAGPoFiME5G04EkHxpGEyxBOYmQiI2wMA1HEjEYg8Pq0Ua0jt8ggYR3yGADHbfcjOnkTc4M4RmZFpFWop6oD/wT+h/6D76Doi+pv67velZAD31yUDATzJBJ4WGhoZERsVwsmx8ZtCGHv7iCL3 | |
b/9H73/rR/1n82fn170yv3y7Tbr/cb9Xq5Wqo9rxQrxXL7T7PZbPQ6DVHvV0wZBA)*l],[628,111,%w(APz70G6321JUVFU/w/+DhWA13My2cnqsHmvGssVuuBthciZt0/0oiMF4cDCDDMT+E4GFNqRP+0N/R0VURHQIhkEqDgAArBnqBDv | |
j3/MO7wJBNDHE U8tsBFBJBfmvOqpT7tV1Xf/0Xdqh3QgMgdDIJGSQaWawRlIppHE/4ailkFpooe5rYIAhhhrqsxop3LdaaeUbsA7r9HuoEqpEa8lmspVr5EzODOPpYCo4aDgAAQ)*l],[639,115,%w(EMzODowPTIweFIlH4zSNKG | |
KYeOihMsoo06y 3ZUfUZNu3XZF74AEEHnjQLOqe7jth+65vasBDDwD0AQ)*l],[417,358,%w(DndGi+FieHu5nqQmu6lwOBxOJ2KCCULYYUc/4P/4H/pACrjA/pI+6TOBIQImCcIwApMkQsIszhGHUUn7tK++gC7seoc7uJv/Bhqw0 | |
a44bbX10EGXYT EQhymYU1k5/Veyl+xREVERFZEhGIbhMCUUA0oQhiGNIIIeAwyIjeEgDobCjDLGHeWUw6kYIEAkklCaouu6nukBAzQyCCCQHhnKh3LB0cHBwcHB4eFMOJMbAgAA1U+yLuq9/0ADDSwCCGSHAgCA/NAviGLje6fUKdW | |
LqqM6so0 88rFIMBgMZ oYhD4Humb7p V78 YYQSQ1jt ngUUG9kOW Ogo ppJBy5qmni mukU ccbbXWoZvu2L3t9I 0wLt mmbVjPNc | |
CPcCjbCz XA9Wg/ Wg6VgG7 V Rxwsjj Olqq50B B hjomAEGi J4DFgBoc | |
Q)*l],[9 +733 ,435,%w( HkcZp JAoC imgL EQght Rhi60 X2CAT dMggA 6Sz1gp voYWAW mhBp2+AA | |
RYDFA)*l],[33 +400,624 ,%w(AITHhrKh THZS iIUYBSEf 8sl+UAd 1SALn nfUGGNiJCt RHfd zTXV0rdm udWu0 NAAE)*l],[ 673,622, | |
%w(AOTaMRWXQz vcBm0QAA +cshpo0GA90iV d2ud 93kgBEA)* l],[513,3 +800, %w(APzLi3g/rl ImZZ JmIIyjOMtgj DEE1 BOfasRBHIwZz BBDEBGHH | |
flCO6zDu9RQzR DWyNi2FU 54KYUSbdEUrf6 7Mg AB)*l],[9 +680,683, %w(7W h9OQiBIKIEURS RHH LIWJAFaTQRJ BxTx C03kT9cBRVzHH AfYdQTgD | |
1yyAHltTfeSin FhVs1W7V 90okG)*l],[9+ 470, 766,%w(Do ORMARDhAL qqWUA AJBAERAGORd2Y R+z AACgpdVOmbb t275 qeesN9M4716J 92Ac1a6E | |
BHngc)*l],[9+ 650,765, %w(ANAulVTFe kxyi RTXTAdVCI VgOBvmERb DYRzB WQwAAEZZbXS v2ev 2u/WmErJvrB VO4L rXTnurnfbFU Ae3cY1op | |
JADDjnsMCCQBB nmhJMY4JB 74rhlvZAL uiCLQ woYYAAE)* l],[600,2 +7*10 ,%w(ANTKb dmSd VUGZfAxVIlU I+1UP 96P27BN 2RQZ6AeC | |
vJqJEEZIUkB8l FFMMW YEE gAtc8x N6BBPHPIA QvA9I7jkD uugCv Yyhlt mqcceeQwhBL F2UIVU TIdNWHMY | |
kVE5pBRpRVqgHu 6Gu3nJ FVfUQgml bIh+X1Rk2 7VcDfVxn0 jusCM Q IYLp0CTE kBjkkEPWW2y xjymmWItJJ JG0 GhnkmSGG | |
yLCEEvW9VkrZIqyhavw 7b/Em0cFOsB0pxP rRXtzFXcJmQBwn8KA4AAE)*l],[496,205,%w(FkpmiSWGQQgR99h jRxyy2BLlHXDGWRA)*l],[375,340,%w(DqiYCZtIbyCIwmg4hSGG0GGLbeQn6ZIu bgAAQCdtn | |
PX4j7feeOtB)*l],[645,130,%w(AJA8D/NwPBjncT4IxVmcJYKMMEIZ8BC0S33R77dkx3R0FWmrjVXQQZuj0AJb6HR0V5 c1AAE)*l],[433,379,%w(DlrosMMo7aIuIqM6oZO9jB6kB5lZ IOmTIIkh gthigzQqox | |
ZsggpuozZpY4klNVAj7QS00AILPQQEQgyRZT7ouU2iCIzQFCGEEkQ89ayLFZFIAgmlllBAEWwTQSR1uI/65oeRRkprvfUO eOQgCjvkkAXWWSeKzjnngQMB)*l],[843,387,%w(ANR+9tv9V qvknPXeO+gh | |
isAQCsIwi7PEyHkIYwIRAtBD5a231jvjtO2avul3/gMAwMAhGGGEEPQB)*l]].map{|x,y,c|c=c.unpack('m');c=c[0 ].unpack('b*')[0].chars;[]while'1'!=c.pop;n=[];n<<(c .shift==?0?(v=( | |
c.shift(4)*l).to_i(2))>7?v-=16:v:(v=(c.shift(5+2*a=c.shift.to_i)*l).to_i(2))>15+a*48?v-40-a*112:v+7+a*15)while(c[0]);c=[];n.each_slice(6).map{|q,r,s,t,u,v|u+=s+=q;v+=t+=r;n=(u.abs+ | |
v.abs)*(w=m/1024.0)+1;n.to_i.times{|i|a=3*(1-z=i/n)**2*z;c<<[(x+a*q+z**3*u+s*b=3*z*z*(1-z))*w,(y+a*r+z**3*v+t*b)*w]};x+=u;y+=v};c}.zip([1,2,*([3]*8),4,4,*([5]*6)]){|c,a|s={};(0...( | |
c.size)).each{|i|u,v=c[i-2];x,y=c[i-1];([u,x].min.ceil..[u,x].max.floor).each{|j|j!=u&&(j!=x||(u-x)*(c[i][0]-x)<0)&&(s[j]||=[])<<v+(y-v)*(j-u)/(x-u)}};s.each{|i,t|t.sort_by(&:to_f) | |
.each_slice(2){|u,v|(u.ceil...v).each{|j|g[j][i]=a}}}};puts(g.each_slice(2).map{|a,b|(a.zip(b).map{|i,j|(%Q(\x20`''"^.:]TYY,;IEPPcjL8RRxLJ&WWxLJ&)+?#*2)[i+6*j]}*l).gsub(/\s+$/,l)}) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment