2016-04-04 15 views
-1

AZ (Üst ve Küçük Harf) karakterlerini kullanarak her olası karakter kombinasyonunu (8 ile 16 arasında) çıkarmak hakkında nasıl bir çıkış yapılır? 0-9 arası rakamlar, alt çizgi ve dolar işaretleri gibi birkaç özel karakter kullanılır.Ruby 8 ile 16 karakter arasında her olası karakteri (AZ, az, 0-9) çıktı

+7

Bu programı kaç yıl çalıştırmak zorundasınız? Burada 62^16 olasılık var. Saniyede milyar iterasyonla yaklaşık 1.5 trilyon yıl. – tadman

+0

Yığın Taşması'na Hoş Geldiniz. Buraya sormanın yanı sıra buna ne tür bir çaba harcadınız? Bu bir ödev mi? –

cevap

1

@tadman bu bizim güneş sistemimizin ömrü içinde tamamlamak olmaz, ancak teoride, bunu şöyle başarabileceğimizi, dediği gibi:

chars = [*:A..:Z, *:a..:z, *0..9, ?$, ?_] 

(8..16).each do |n| 
    chars.permutation(n) do |a| 
    puts a.join 
    end 
end 

Eğer çıktı satır sayısını hesaplamak isterseniz

(8..16).reduce(0) {|sum,n| sum + chars.permutation(n).size } 

Not: başlamadan önce permutation, combination, repeated_permutation ve repeated_combination: karakter "kombinasyonlarını" almak için dört Array yöntem vardır. Doğru "kombinasyonlar" grubunu aldığınızdan emin olmak için dokümanları kontrol etmeli veya deney yapmalısınız.