There's been heavy discussion of the various options surrounding the pages for the Sponge wiki. At the time of writing, the current contenders for implementation are:
- MediaWiki
- DokuWiki
- GitHub Wiki
- GitHub Pages/Jekyll
- A homebrew option
from __future__ import print_function, division | |
import argparse | |
from datetime import timedelta | |
from math import ceil, floor | |
def parse_time(x): | |
hours, minutes = x.split(':') | |
return timedelta(hours=int(hours), minutes=int(minutes)) | |
parser = argparse.ArgumentParser(description='Calculate statistics about matches for an SR competition') |
7 SpawningPool | |
10 Extractor | |
10 Overlord | |
10 Zergling | |
11 Queen | |
13 +1 Drone on gas | |
16 +1 Drone on gas | |
16 +1 Drone on gas | |
18 EvolutionChamber | |
18 Overlord |
from xmlrpc.client import ServerProxy as TracAPI | |
from xmlrpc.client import Fault as TracFault | |
from urllib.parse import quote | |
from getpass import getpass | |
from pathlib import Path | |
import sys | |
import time | |
username = input('SR Username: ') | |
password = getpass('SR Password: ') |
#!/bin/bash | |
GERRIT=https://www.studentrobotics.org/gerrit | |
function getgit { | |
PROJECT=$1 | |
URL=$GERRIT/comp/$PROJECT | |
PATCH=$2 | |
git clone $URL $PROJECT | |
cd $PROJECT | |
git fetch $URL $PATCH |
from itertools import permutations | |
import yaml | |
import sys | |
#votes = {'a': ['cheese', 'hats', 'faces'], | |
# 'b': ['hats', 'cheese', 'faces'], | |
# 'c': ['hats', 'faces', 'cheese']} | |
votes = {'a': 'CHWESK', | |
'b': 'CESWHK', |
from copy import copy | |
from collections import defaultdict | |
from fractions import Fraction | |
def stv(candidates, ballots, seats=1): | |
if seats > len(candidates): | |
raise ValueError('Not enough candidates for election') | |
rounds = {} |
There's been heavy discussion of the various options surrounding the pages for the Sponge wiki. At the time of writing, the current contenders for implementation are:
import itertools | |
def tail(seq): | |
return itertools.islice(seq, 1, None) | |
def fibs(): | |
yield 0 | |
yield 1 | |
yield from (x + y for x, y in zip(fibs(), tail(fibs()))) |
from collections import namedtuple | |
import cgi | |
import sys | |
import yaml | |
DATA = """ | |
- type: checkbox | |
description: Did the robot move? | |
key: robot_moved | |
- type: natural |
from __future__ import print_function | |
from collections import namedtuple, defaultdict | |
Check = namedtuple('Check', 'description check') | |
Condition = namedtuple('Condition', 'severity format') | |
Failure = namedtuple('Failure', 'type severity message data') | |
class Validator(object): | |
def __init__(self): | |
self.checks = [] |