refactor random

This commit is contained in:
boyska 2020-10-03 16:18:07 +02:00
parent be5ebcfd5a
commit 9881d09fc5
2 changed files with 24 additions and 40 deletions

View file

@ -1,4 +1,5 @@
"""Main module."""
import random
class Codec:
@ -60,6 +61,21 @@ class Codec:
return True
def random(self, minlength=6):
numdict = len(self.dictionary)
word = ""
curr_dict = (numdict - 1 + self.dictstart + self.shiftend) % numdict
final_dict = (numdict - 1 + self.dictstart) % numdict
print("final", final_dict)
while curr_dict != final_dict or len(word) < minlength:
word = random.choice(self.dictionary[curr_dict]) + word
curr_dict = (curr_dict - 1) % numdict
print("curr", curr_dict)
return word
class BananaCodec(Codec):
def __init__(self):
@ -81,26 +97,5 @@ class AvocadoCodec(Codec):
super().__init__(1, 1)
def bananarandom(dictstart=0, shiftend=0, minlength=6, dictionary=None):
import random
# defaults
if dictionary is None:
dictionary = [list("bcdfglmnprstvz"), list("aeiou")]
numdict = len(dictionary)
st = ""
length = 0
i = (numdict - 1 + dictstart + shiftend) % numdict
while not (i == (numdict - 1 + dictstart) % numdict and length >= minlength):
r = random.randint(0, len(dictionary[i]) - 1)
st = dictionary[i][r] + st
i = (i - 1) % numdict
length += 1
return st
if __name__ == "__main__":
print("Ciao sono la libreria banana")

View file

@ -39,6 +39,10 @@ def main_check(args):
sys.exit(1)
def main_random(args):
print(get_codec(args).random(minlength=args.minlength))
def main():
parser = argparse.ArgumentParser(description="Convert dec number to banana")
parser.add_argument("--ananas", action="store_true")
@ -66,6 +70,10 @@ def main():
check.add_argument("--quiet", "-q", action="store_true")
check.set_defaults(func=main_check)
rand = sub.add_parser("random", help="Generate random banana")
rand.add_argument("--minlength", help="Set minimum length", type=int, default=6)
rand.set_defaults(func=main_random)
args = parser.parse_args()
if not hasattr(args, "func"):
print("You need to select one subcommand. \nUse --help", file=sys.stderr)
@ -74,25 +82,6 @@ def main():
args.func(args)
def bananarandom():
parser = argparse.ArgumentParser(description="Generate random banana")
parser.add_argument("--dictionary", help="Set dictionary", type=list, nargs="+")
parser.add_argument(
"--dictstart", help="Set starting dictionary", type=int, default=0
)
parser.add_argument(
"--shiftend", help="Set shift for ending dictionary", type=int, default=0
)
parser.add_argument("--minlength", help="Set minimum length", type=int, default=6)
args = parser.parse_args()
print(
banana.bananarandom(
args.dictstart, args.shiftend, args.minlength, args.dictionary
)
)
if __name__ == "__main__":
# pragma: no cover
main()