$letters = shift @ARGV ||"ABC"; @letter = split //,$letters; for $a (1..$#letter) { for $b (1..$#letter) { for $c (1..$#letter) { $scode = $letter[$c].$letter[$b].$letter[$a]; print $scode."\n"; } } } #### import string DEFAULT_CHAR_SET = string.letters + string.digits + string.punctuation class PasswordGenerator(object) : def __init__(self, seeds = DEFAULT_CHAR_SET) : self.seeds = seeds self.Outer = None self.cursor = 0 def next(self) : self.cursor += 1 if self.cursor == len(self.seeds) : self.cursor = 0 if not self.Outer : self.Outer = PasswordGenerator(self.seeds) else : self.Outer.next() def value(self) : if self.Outer : return self.Outer.value() + self.seeds[self.cursor] else : return self.seeds[self.cursor] def __iter__(self) : while 1 : yield self.value() self.next() if __name__ == "__main__" : g = PasswordGenerator() for i in g : print i