示例#1
0
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
示例#2
0
文件: test.py 项目: mnPanic/algo2
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()
示例#3
0
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