def main(): parser = optparse.OptionParser("usage: %prog algoritmo [options]") parser.prog= __file__ parser.add_option('-l', '--listita', dest='listita', default=False, action='store_true', help='ejecuta tu algoritmo con una lista chiquita') parser.add_option('-L', '--listota', dest='listota', default=False, action='store_true', help='ejecuta tu algoritmo con una lista grandota') parser.add_option('-g', '--grupo', dest='group_name', help='En caso de ambiguedad, el nombre del grupo') parser.add_option('-e', '--estimar-constantes', default=False, action='store_true', dest='estimate_constants', help='Si tu algoritmo es n*log(n) o n^2, trata de estimar la constante') available_algorithms= find_sorting_algorithms() options, args = parser.parse_args(sys.argv[1:]) fail= len(args) == 0 matches= 0 selected_sorting_algorithm= None if not fail: selected_algorithm= args[0] for group_name, algorithms in available_algorithms.iteritems(): if options.group_name is not None and options.group_name != group_name: continue for name, sorting_algorithm in algorithms: if name == selected_algorithm: matches+= 1 selected_sorting_algorithm= sorting_algorithm fail= fail or matches != 1 if matches == 0: print print "Falta el nombre del algoritmo (o pifiaste escribiendo)!" elif matches > 1: print print "Hay muchos grupos con ese algoritmo, usa -g" if fail: print "Estan definidos estos:\n" for group_name, algorithms in available_algorithms.iteritems(): print "\tGrupo: %s" % group_name for name, sorting_algorithm in algorithms: print "\t\t%s" % name print parser.print_help() return if not any([options.listita, options.listota, options.estimate_constants]): parser.error("te falta elegir la opcion!") parser.print_help() if options.listita: l= range(10); shuffle(l) l= List(l) apply(l, selected_sorting_algorithm) elif options.listota: l= range(5000); shuffle(l) l= List(l) apply(l, selected_sorting_algorithm) elif options.estimate_constants: print print "Bueno, parece que tu algoritmo es O(%s) con constante %.02f" % estimate_constants(selected_sorting_algorithm) print
def main(): parser = optparse.OptionParser("usage: %prog algoritmo [options]") parser.prog = __file__ parser.add_option('-l', '--listita', dest='listita', default=False, action='store_true', help='ejecuta tu algoritmo con una lista chiquita') parser.add_option('-L', '--listota', dest='listota', default=False, action='store_true', help='ejecuta tu algoritmo con una lista grandota') parser.add_option('-g', '--grupo', dest='group_name', help='En caso de ambiguedad, el nombre del grupo') parser.add_option( '-e', '--estimar-constantes', default=False, action='store_true', dest='estimate_constants', help='Si tu algoritmo es n*log(n) o n^2, trata de estimar la constante' ) #### agregado por partu ## parser.add_option( '-c', '--lcustom', dest='lcustom', default=False, action='store', type="string", help= 'ejecuta tu algoritmo con una lista arbitraria pasada por parametro') ########################## available_algorithms = find_sorting_algorithms() options, args = parser.parse_args(sys.argv[1:]) fail = len(args) == 0 matches = 0 selected_sorting_algorithm = None if not fail: selected_algorithm = args[0] for group_name, algorithms in list(available_algorithms.items()): if options.group_name is not None and options.group_name != group_name: continue for name, sorting_algorithm in algorithms: if name == selected_algorithm: matches += 1 selected_sorting_algorithm = sorting_algorithm fail = fail or matches != 1 if matches == 0: print() print("Falta el nombre del algoritmo (o pifiaste escribiendo)!") elif matches > 1: print() print("Hay muchos grupos con ese algoritmo, usa -g") if fail: print("Estan definidos estos:\n") for group_name, algorithms in list(available_algorithms.items()): print("\tGrupo: %s" % group_name) for name, sorting_algorithm in algorithms: print("\t\t%s" % name) print() parser.print_help() return if not any([ options.listita, options.listota, options.lcustom, options.estimate_constants ]): parser.error("te falta elegir la opcion!") parser.print_help() if options.listita: l = list(range(10)) shuffle(l) l = List(l) apply(l, selected_sorting_algorithm) elif options.listota: l = list(range(5000)) shuffle(l) l = List(l) apply(l, selected_sorting_algorithm) ### Agregado por partu #### elif options.lcustom: l = strToList(options.lcustom) print(l) apply(l, selected_sorting_algorithm) ###################################### elif options.estimate_constants: print() print("Bueno, parece que tu algoritmo es O(%s) con constante %.02f" % estimate_constants(selected_sorting_algorithm)) print()
def main(): parser = optparse.OptionParser("usage: %prog algoritmo [options]") parser.prog= __file__ parser.add_option('-l', '--listita', dest='listita', default=False, action='store_true', help='ejecuta tu algoritmo con una lista chiquita') parser.add_option('-L', '--listota', dest='listota', default=False, action='store_true', help='ejecuta tu algoritmo con una lista grandota') parser.add_option('-g', '--grupo', dest='group_name', help='En caso de ambiguedad, el nombre del grupo') parser.add_option('-e', '--estimar-constantes', default=False, action='store_true', dest='estimate_constants', help='Si tu algoritmo es n*log(n) o n^2, trata de estimar la constante') parser.add_option('-t', '--todos', default=False, action='store_true', dest='all', help='Prueba todos los algoritmos') available_algorithms= find_sorting_algorithms() options, args = parser.parse_args(sys.argv[1:]) selected_sorting_algorithms= [] if len(args) > 0: selected_algorithm= args[0] for group_name, algorithms in available_algorithms.iteritems(): if options.group_name is not None and options.group_name != group_name: continue for name, sorting_algorithm in algorithms: if options.all or name == selected_algorithm: selected_sorting_algorithms.append((group_name, name, sorting_algorithm)) matches= len(selected_sorting_algorithms) fail= matches == 0 or (matches > 1 and not options.all) if matches == 0: print print "Falta el nombre del algoritmo (o pifiaste escribiendo)!" elif matches > 1 and not options.all: print print "Hay muchos grupos con ese algoritmo, usa -g" print "Si queres probar todos los algoritmos proba con -a" if fail: print "Estan definidos estos:\n" for group_name, algorithms in available_algorithms.iteritems(): print "\tGrupo: %s" % group_name for name, sorting_algorithm in algorithms: print "\t\t%s" % name print parser.print_help() return if not any([options.listita, options.listota, options.estimate_constants]): parser.error("te falta elegir la opcion (-l, -L, -e)!") parser.print_help() print_result= len(selected_sorting_algorithms) == 1 for group_name, name, selected_sorting_algorithm in selected_sorting_algorithms: if options.listita: l= range(10); shuffle(l) l= List(l) succesfull= apply(l, selected_sorting_algorithm, print_result=print_result) elif options.listota: l= range(5000); shuffle(l) l= List(l) succesfull= apply(l, selected_sorting_algorithm, print_result=print_result) elif options.estimate_constants: print print "Bueno, parece que tu algoritmo es O(%s) con constante %.02f" % estimate_constants(selected_sorting_algorithm) print if (options.listota or options.listita) and not print_result: print group_name, name, succesfull