ulvis.paste.net

Paste Search Dynamic
Recent pastes
Осторожно, плохо
  1. =begin
  2. Скрипт проверяет наличие в файле определенного текста (начало фрагмента и конец заданы), затем копирует его в файл-результат.
  3. =end
  4. require 'iconv'
  5. require 'fileutils'
  6. $KCODE = "WINDOWS-1251"
  7.  
  8. def check_file( filepath )
  9.         filename = file.basename(filepath)
  10.         directory = file.dirname(filepath)
  11.         tempdir = file.join(directory+'/passed')
  12.         current_file = io.read(filepath)
  13.         be=current_file.scan(%r{<b>378(.*)<b>379.8}m)
  14.         if be.size<100
  15.                 be=current_file.scan(%r{<b>378(.*)<b>391/395}m)
  16.         end
  17.         be ='<h1>'+filename.to_s+'</h1>'+be.to_s+'<h1>End of '+filename.to_s+'</h1>'
  18.         fileutils.mv(filepath, tempdir) if be.size.to_i<100
  19.         output = file.join(directory, '55.html')
  20.         file.open(output, 'a'){ |out| out.puts be } if be.size>100
  21.         return be.size
  22. end
  23. d = dir.new(ARGV[0])
  24. dir.mkdir(file.join(ARGV[0], '/passed')) unless d.entries.find_all{|elem| elem == 'passed'}.any?
  25. d.entries.find_all{|elem| elem[-4..-1] == '.htm'}.sort.each do |e|  
  26.   result = check_file(file.join(d.path, e))
  27.   if result>100
  28.         puts 'file '+e+' viewed, ' + result.to_s + ' total symbols copied'
  29.   else
  30.         puts 'file '+e+' passed, no match found'
  31.   end
  32. end
  33.  
  34. =begin
  35. программа конвертирует число в компьютерное его представление
  36. =end
  37. class string
  38.         def back_part(n) #преобразование десятичной части с ограничением количества символов
  39.                 r = '';  be = ('0.'+self).to_f
  40.         while be!=0
  41.                         be *= 2;
  42.                         if be.floor == 1
  43.                                 r += '1'; be -= 1;
  44.                         else
  45.                                 r += '0';
  46.                         end
  47.                         if r.length==n then break end
  48.                 end            
  49.                 return r
  50.     end #end def back
  51.         def fil
  52.             if (self.length%8!=0) then return self + '0' * (8 - self.length % 8) else return self end
  53.     end
  54.         def zero_count(i)
  55.         while self[i..i]=='0' do
  56.             i += (i.to_s.sub(i.abs.to_s, '1')).to_i
  57.         end
  58.         return i
  59.     end
  60.     def print
  61.         return self[self.zero_count(0)..self.zero_count(-1)]
  62.     end
  63.         def to_binary
  64.                 sign = (self[0..0]=='-'? '-' : '')
  65.                 num = self.split('-').join.split('.').push('')
  66.                 po = num[0].to_i.to_s(2)
  67.                 tr = num[1].back_part(18) #кому надо больше n чисел после запятой, меняйте
  68.                 len = (tr.size>0 ? 1 : 0)
  69.                 return sign + po + '.'*len + tr
  70.         end
  71.         def comp
  72.                 sign = (self[0..0]=='-'? '1' : '0')
  73.                 num = self.split(/\D/).push('')
  74.                 e = (num[0].print == '0' ? -1 : num[0].length-1)
  75.                 norm = num.join[1..-1].fil
  76.                 sub = (e+127).to_s(2)
  77.                 return a = [sign, sub, norm]
  78.         end
  79.         def convert_to(p)
  80.         res = self.clone.split.join.split(//).reverse; dec = 0;
  81.                 0.upto(self.length){|i| dec += res[i].to_i * 2 ** i}#to decimal
  82.                 dec.to_s(p).upcase.print#to whatever you want
  83.     end
  84. end
  85. input = gets
  86. puts 'Source :      ' + input
  87. puts 'Converted :   ' + (binary = input.to_binary)
  88. puts 'Binary :      ' + (pred = binary.comp.join(' '))
  89. puts 'Octal :       ' + pred.convert_to(8)
  90. puts 'Hexadecimal : ' + pred.convert_to(16)
  91. gets
Parsed in 0.036 seconds