Software para corrida de contra-relógio


11

Estou procurando um software para conduzir uma corrida de contra-relógio local. Haverá cerca de 50 pilotos: grandes o suficiente para preparar os resultados das corridas com caneta e papel nus bastante demorados e demorados, mas muito pequenos para usar sistemas de chips de corrida completos.

Os pilotos vão começar com um minuto de intervalo e na linha de chegada haverá um homem anunciando o horário para o operador. Portanto, o operador terá apenas que inserir a hora do piloto no programa. O programa deve ser capaz de produzir a tabela de resultados em tempo real conforme os pilotos cruzam a linha.

Entendo que criar esse tipo de software não é tão difícil, mas eu esperava que houvesse soluções freeware prontamente disponíveis que eu pudesse usar para o meu evento. Entre em contato se você já ouviu falar de alguma.


Em 1 hora, eu vou ter feito um em python :)
Tim

Sim, certo, eu sei que é relativamente fácil escrever sozinho. Mas quando começo a pensar em todos os recursos úteis que gostaria de ter lá, como editar tabela com resultados (mover automaticamente as entradas, se necessário), criar impressões amigáveis, exportar para o excel, filtrar resultados de acordo com o tipo de bicicleta (road-bike vs aero) ou idade grupos, etc eu percebo que pode ser mais fácil investir em googling em vez :-)
krakovjak

4
Por que não usar apenas uma planilha?
200_success 02/09

1
Estou votando para encerrar esta questão como fora de tópico, porque o software sobre ciclismo está fora de tópico. Por favor, pergunte no softwarerecs.stackexchange.com e use a tag para andar de bicicleta.
Criggie

Respostas:


7

Isso será executado em python (apenas 3.X, não 2.7), uma linguagem de programação gratuita para instalar. Basta salvar o seguinte como um arquivo final .py- por exemplo timetrials.py. Em seguida, abra IDLE3 (menu Iniciar) e abra o arquivo ( Ctrl+ O). Por fim, pressione F5para iniciar.

import datetime
from operator import itemgetter

def get_int_input(prompt, min_=0, max_=None):
    """Get a valid integer input."""
    while True:
        try:
            i = int(input(prompt))
        except ValueError:
            print("Please enter an integer.")
        else:
            if min_ is not None and i < min_:
                print("Must be at least {0}.".format(min_))
                continue
            elif max_ is not None and i > max_:
                print("Must be at most {0}.".format(max_))
                continue
            return i

def get_time():
    """"Get a time input as a datetime.time object."""
    h = get_int_input("Hours (0-23): ", max_=23)
    m = get_int_input("Minutes (0-59): ", max_=59)
    s = get_int_input("Seconds (0-59): ", max_=59)
    ms = get_int_input("Milliseconds (0-999): ", max_=999)
    return datetime.time(h, m, s, ms*1000)

def get_results(competitors):
    """Get a dict of finishing times for all competitors."""
    results = {}
    for _ in range(competitors):
        while True:
            competitor = get_int_input("Enter competitor number: ", min_=1, max_=competitors+1)
            if competitor not in results:
                results[competitor] = get_time()
                break
            print("Time already entered.")
        print_results(results)
    return results

def print_results(results):
    """Display the race results in a table, fastest first."""
    linet = '┌' + "─" * 12 + '┬' + '─' * 17 + '┐'
    linec = '├' + "─" * 12 + '┼' + '─' * 17 + '┤'
    lineb = '└' + "─" * 12 + '┴' + '─' * 17 + '┘'
    print(linet)
    print("│ Competitor │ Time (H:M:S)    │")
    for n, t in sorted(results.items(), key=itemgetter(1)):
        print(linec)
        print("│ {0:<10d} │ {1!s:<15} │".format(n, t))
    print(lineb)

def race():
    """Handle race times for a user-specified number of competitors."""
    n = get_int_input("Enter number of competitors (2-): ", min_=2)
    results = get_results(n)

if __name__ == "__main__":
    race()

Quando todos terminarem, será algo como isto:

┌──────────────┬───────────────┐  
│  Con Num     │ Time H:M:S    │  
├──────────────┼───────────────┤  
│  1           │ 5:4:3.2       │  
├──────────────┼───────────────┤  
│  2           │ 8:7:6.5       │  
├──────────────┼───────────────┤  
│  3           │ 2:2:2.2       │  
└──────────────┴───────────────┘  

3
Tudo bem, mas a compra de um pacote comercial pelo menos dá a você alguém para se lamentar quando você encontra um bug.
PeteH 31/08/14

3
Sinta-se livre para lamentar-me aqui, estou triste o suficiente para estar sempre no SE!
Tim

2
Bom esforço! Você deve considerar executar este codereview.stackexchange.com anterior - você não é totalmente compatível com o guia de estilo e há muitas repetições (por exemplo, considere adicionar uma função def get_int_input(prompt, min_=None, max_=None):). Além disso, strftimepouparia algum trabalho.
precisa saber é o seguinte

@jon apenas fazendo isso agora ... É complicado por causa das variações ... 15 mins;) #
Tim Tim

@ Jon Na verdade, 13 minutos mais tarde ... editar ;-)
Tim

3

Uma opção é o RaceSplitter . Este é um aplicativo para iOS, custa US $ 35. Você precisará de um iPad, iPhone ou iPod Touch adequado para executá-lo.

Você pode inserir uma lista inicial com antecedência. Depois, durante a corrida, basta digitar o número do piloto, que cruza a linha de chegada, e ele registra seu tempo. Você pode publicar os resultados no site e exportar para o Excel etc.

Eu não tentei isso sozinho, mas já o vi em uso em algumas corridas locais. Parece funcionar bem no momento certo e eles obtiveram os resultados on-line logo após a corrida.


Parece exatamente o que eu preciso! Obrigado!
krakovjak

1

Utilizamos um aplicativo para telefones Android fabricado pela Liuto. Foi ótimo, fácil de aprender / usar e barato - apenas US $ 1,11. Basicamente, quando cada ciclista sai pelo número inicial, você toca no número correspondente no retorno e o cálculo do tempo versus o tempo decorrido geral é concluído. Snap!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.