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

本文介绍了一个使用Ruby编写的随机账号生成器,该程序能够创建包含特定字符集的账号和密码。通过对字符集进行筛选,确保了账号名称不包含元音字母,并且密码符合一定的复杂度要求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

演示代码:
  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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值