使用Ruby进行文件信息输出一例

演示代码:
  1. #!/usr/bin/env ruby
  2. COUNT = 10
  3. require 'benchmark'
  4. $account_chars  = ('A'..'Z').to_a.delete_if {|c| c =~ /[AEIOUY]/ }
  5. #$password_chars = ('0'..'9').to_a
  6. $password_chars         = Array.new
  7. $password_chars[0..9]   = ('0'..'9').to_a
  8. $password_chars[10..36] = ('A'..'Z').to_a
  9. def account_char
  10.   $account_chars[rand($account_chars.length)]
  11. end
  12. def password_char
  13.   $password_chars[rand($password_chars.length)]
  14. end
  15. def account_chars
  16.   account_chars = []
  17.   6.times {|c| account_chars << account_char }
  18.   account_chars
  19. end
  20. def password
  21.   begin
  22.     begin
  23.       password = ''
  24.       password << password_char
  25.     end while password == '0'
  26.     4.times { password << password_char }
  27.   end while password =~ /^(.)/1/1/1/1$/
  28.   password
  29. end
  30. accounts = {}
  31. lines = []
  32. puts Benchmark::CAPTION
  33. puts Benchmark.measure {
  34.   COUNT.times do
  35.     i = 0
  36.     account_chars.inject(accounts) do |a, c|
  37.       i += 1
  38.       i == 6 ? a[c] = password : a[c] ||= {}
  39.     end
  40.   end
  41. }
  42. puts Benchmark.measure {
  43.   accounts.each do |char, chars|
  44.     account = [char]
  45.     chars.each do |char, chars|
  46.       account << char
  47.       chars.each do |char, chars|
  48.         account << char
  49.         chars.each do |char, chars|
  50.           account << char
  51.           chars.each do |char, chars|
  52.             account << char
  53.             chars.each do |char, password|
  54.               account << char
  55.               lines << "#{account.join}/t#{password}/r/n"
  56.               account.pop
  57.             end
  58.             account.pop
  59.           end
  60.           account.pop
  61.         end
  62.         account.pop
  63.       end
  64.       account.pop
  65.     end
  66.   end
  67. }
  68. puts Benchmark.measure {
  69.   open 'account.txt''wb' do |f|
  70.     f.print lines.delete_at(rand(lines.length)) until lines.empty?
  71.   end
  72. }
运行后输出到: account.txt文件中。
输出信息格式如下:
数据是随机的,所以每次的记录都会不同。
  1. SZQGMC  XC6KP
  2. HLVGTZ  HCU30
  3. KTSNNF  LSNVS
  4. KWMHRQ  3SM07
  5. BTTZCZ  DYMUH
  6. DMKPVN  GMJHL
  7. KCFKDR  X8X8V
  8. VMMJHB  X1D65
  9. SRCPGZ  T2IP6
  10. WLRMBT  7YA2Y
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值