ซอฟต์แวร์สำหรับการแข่งขันทดลองใช้เวลา


11

ฉันกำลังมองหาซอฟต์แวร์ชิ้นหนึ่งเพื่อดำเนินการแข่งขันการทดสอบตามเวลาท้องถิ่น จะมีนักปั่นประมาณ 50 คน: ใหญ่พอที่จะทำให้การเตรียมผลการแข่งขันด้วยปากกาเปล่าและกระดาษค่อนข้างยากและเสียเวลา แต่เล็กเกินไปที่จะใช้ระบบชิปการแข่งขันเต็มรูปแบบ

ผู้ขับขี่จะเริ่มต้นด้วยช่วงเวลาหนึ่งนาทีและเมื่อถึงเส้นชัยจะมีชายคนหนึ่งประกาศเวลาให้ผู้ปฏิบัติงานทราบ ดังนั้นผู้ประกอบการจะต้องป้อนเวลาของผู้ขับขี่ไปยังโปรแกรม โปรแกรมควรจะสามารถสร้างตารางผลลัพธ์ในขณะที่ผู้ขับขี่ข้ามเส้น

ฉันเข้าใจว่าการสร้างซอฟต์แวร์ประเภทนี้ไม่ใช่เรื่องยาก แต่ฉันแค่หวังว่าจะมีโซลูชันฟรีแวร์ที่พร้อมใช้งานที่ฉันสามารถใช้สำหรับกิจกรรมของฉันได้ กรุณาแจ้งให้เราทราบหากคุณเคยได้ยินใด ๆ


ใน 1 ชั่วโมงฉันจะทำหนึ่งในงูหลาม :)
ทิม

ใช่ฉันรู้ว่ามันค่อนข้างง่ายในการเขียนด้วยตนเอง แต่เมื่อฉันเริ่มคิดเกี่ยวกับคุณสมบัติที่มีประโยชน์ทั้งหมดที่ฉันต้องการมีเช่นตารางการแก้ไขพร้อมผลลัพธ์ (รายการที่เคลื่อนไหวโดยอัตโนมัติถ้าจำเป็น) สร้างผลลัพธ์ที่เป็นมิตรกับเครื่องพิมพ์ส่งออกไปยัง excel กรองผลลัพธ์ตามประเภทจักรยาน (road-bike vs aero) หรือกลุ่มอายุ ฯลฯ ฉันรู้ว่ามันอาจจะง่ายกว่าที่จะลงทุนใน googling แทน :-)
krakovjak

4
ทำไมไม่ใช้สเปรดชีตล่ะ?
200_success

1
ฉันลงคะแนนให้ปิดคำถามนี้เป็นนอกหัวข้อเนื่องจากซอฟต์แวร์เกี่ยวกับการขี่จักรยานปิดหัวข้อ โปรดถามsoftwarerecs.stackexchange.comและใช้แท็กสำหรับการขี่จักรยาน
Criggie

คำตอบ:


7

สิ่งนี้จะทำงานใน python (เฉพาะ 3.X ไม่ใช่ 2.7) ซึ่งเป็นภาษาที่สามารถติดตั้งได้ฟรี เพียงบันทึกต่อไปนี้เป็นไฟล์ที่ลงท้ายด้วย.py- timetrials.pyเช่น จากนั้นเปิด IDLE3 (เมนูเริ่ม) และเปิดไฟล์ ( Ctrl+ O) ในที่สุดกดF5เพื่อเริ่ม

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()

เมื่อทุกคนเสร็จสิ้นแล้วมันจะมีลักษณะดังนี้:

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

3
ทุกอย่างดีและดี แต่การซื้อแพ็คเกจเชิงพาณิชย์อย่างน้อยก็ช่วยให้คุณมีคนคร่ำครวญเมื่อคุณพบข้อบกพร่อง
PeteH

3
อย่าลังเลที่จะส่งเสียงครวญครางถึงฉันที่นี่ฉันเสียใจพอที่จะอยู่ใน SE เสมอ!
ทิม

2
เยี่ยมมาก! คุณควรลองใช้codereview.stackexchange.com ที่ผ่านมานี้- คุณไม่ได้ปฏิบัติตามคู่มือแนะนำอย่างครบถ้วนและมีการทำซ้ำหลายครั้ง (เช่นลองเพิ่มฟังก์ชั่นdef get_int_input(prompt, min_=None, max_=None):) นอกจากนี้strftimeจะช่วยให้คุณทำงานบางอย่าง
jonrsharpe

@ จอนเพิ่งทำอย่างนั้นในตอนนี้ ... มันเป็นเรื่องยากเพราะความแปรปรวน ... 15 นาที;)
ทิม

@jon อันที่จริงแล้ว 13 นาทีต่อมา ... การแก้ไข ;-)
ทิม

3

ทางเลือกหนึ่งคือRaceSplitter นี่คือแอป iOS ราคา $ 35 คุณจะต้องใช้ iPad, iPhone หรือ iPod Touch ที่เหมาะสมเพื่อเปิดใช้งาน

คุณสามารถป้อนรายการเริ่มต้นล่วงหน้า จากนั้นในระหว่างการแข่งขันคุณเพียงแค่ใส่หมายเลขผู้ขับขี่ขณะที่พวกเขาข้ามเส้นชัยและมันจะบันทึกเวลาของพวกเขา จากนั้นคุณสามารถเผยแพร่ผลลัพธ์บนเว็บไซต์และส่งออกไปยัง Excel เป็นต้น

ฉันไม่ได้ลองตัวเอง แต่ฉันได้เห็นมันใช้ในการแข่งขันท้องถิ่น ดูเหมือนว่าจะทำงานได้ดีตามกำหนดเวลาและพวกเขาได้รับผลลัพธ์ทางออนไลน์หลังจากการแข่งขัน


ดูเหมือนว่าสิ่งที่ฉันต้องการ! ขอบคุณ!
krakovjak

1

เราได้ใช้แอพสำหรับโทรศัพท์ Android ที่ผลิตโดย Liuto มันยอดเยี่ยมง่ายต่อการเรียนรู้ / ใช้งานและราคาถูกเพียงแค่ $ 1.11 โดยทั่วไปเมื่อผู้ขับขี่แต่ละคนออกไปด้วยหมายเลขเริ่มต้นคุณแตะหมายเลขที่สอดคล้องกันในการกลับมาและการคำนวณเวลาของพวกเขากับเวลาที่ผ่านไปโดยรวมเสร็จสมบูรณ์ จัง!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.