Skip to content

Instantly share code, notes, and snippets.

@joebo
Last active December 24, 2015 14:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save joebo/6813083 to your computer and use it in GitHub Desktop.
Save joebo/6813083 to your computer and use it in GitHub Desktop.
(de makeRacer (Race Line)
(let
(Parts (mapcar 'pack (split (chop Line) " "))
Place (format (car Parts))
Racer (car (nth Parts 3))
IsRacerID (= (chop "RUS") (head 3 (chop Racer)))
Fname (car (nth Parts 4))
LName (car (nth Parts 5))
Name (uppc (pack Fname " " LName) ))
(if (and Place IsRacerID)
(link (list Race Place Name)) ) ) )
(de makeRaces ()
(let (Race 0 Line NIL)
(make
(in "c:/temp/2013.txt"
(until (eof)
(setq Line (line t))
(if (= (car (chop Line)) "-")
(inc 'Race)
(makeRacer Race Line) ) ) ) ) ) )
(setq Points '(
(5 (3 2 1))
(11 (7 5 4 3 2 1))
(21 (8 6 5 4 3 2 1))
(50 (10 8 7 6 5 4 3 2 1) ) ))
(de race-num (Racer) (car Racer))
(de race-racer (Racer) (car (nth Racer 3)))
(de race-placement (Racer) (car (nth Racer 2)))
(de points-for-race (RacerCount)
(car (cdr (car (reverse (filter '((X) (<= (car X) RacerCount)) Points ))))) )
(de racers-for-race (RaceNum)
(filter '((X) (= (car X) RaceNum)) Races) )
(de races-for-racer (Racer)
(filter '((X) (= (race-racer X) Racer)) Races) )
(de score-race (RacePoints Placement)
(car (nth RacePoints Placement)) )
(de scoreRaces ()
(make
(for RaceCount CountByRace
(let (RaceNum (car RaceCount)
RacerCount (cdr RaceCount)
RacePoints (points-for-race RacerCount)
Racers (racers-for-race RaceNum) )
(for Racer Racers
(let
(Placement (race-placement Racer)
Points (score-race RacePoints Placement))
(link (list RaceNum (if Points Points 0) (race-racer Racer) RacerCount Racer))) ) ) ) ) )
(de category (RacePoints)
(let (Points (apply + RacePoints)
Category (cond
((>= Points 35) 1)
((>= Points 30) 2)
((>= Points 20) 3)
((>= (length RacePoints) 10) 4)
(T 0)) )
(list Category Points) ) )
(de scores-for-racer (RacerName)
(let Scores (filter '((X) (= (race-racer X) RacerName)) Scores)
(mapcar '((X) (car (cdr X))) Scores) ) )
(de categorizeRacers ()
(make
(for Racers CountByRacer
(let (RacerName (car Racers)
ScoresForRacer (scores-for-racer RacerName)
Category (category ScoresForRacer))
(if (> (car Category) 0)
(link (list (car Category) RacerName (car (cdr Category)))) ) ) ) ) )
(de report ()
(let Sorted (by car sort RacerCategories)
(for Racer Sorted
(println (pack (get Racer 1) "," (get Racer 2) "," (get Racer 3))) )
(for Race (filter '((X) (= (race-racer X) (get (get Sorted 2) 2))) Scores)
(println Race) ) ) )
(setq Races (makeRaces))
(setq CountByRacer NIL)
(setq CountByRace NIL)
(mapc '((Racer) (accu 'CountByRacer (race-racer Racer) 1)) Races)
(mapc '((Racer) (accu 'CountByRace (race-num Racer) 1)) Races)
(setq Scores (scoreRaces))
(setq RacerCategories (categorizeRacers))
(report)
Category, Name, Total Points
"1,ПОПОВ АНТОН,47"
"1,СТЕПАНОВ АЛЕКСАНДР,42"
"1,СУХОВ МАКСИМ,41"
"2,ВЕРНИДУБ ДМИТРИЙ,31"
"2,НЕЧАЕВ ВЛАДИСЛАВ,31"
"2,ПЕТРОВ ИЛЬЯ,31"
"2,РИКУНОВ ПЕТР,34"
"3,БОРОВИК ДЕНИС,20"
"3,ВАСЛЯЕВ АЛЕКСЕЙ,24"
"3,ВАСЮХНО АЛЕКСАНДР,20"
"3,ГРИШИН МАКСИМ,29"
"3,ДЕНИСОВ ЮРИЙ,26"
"3,ЖУЙКОВ ДЕНИС,20"
"3,КОНДРАШОВ МАКСИМ,21"
"3,КУЛИКОВСКИЙ АЛЕКСАНДР,28"
"3,ЛОБАНОВ АЛЕКСАНДР,20"
"3,ПИСКУНОВ МАКСИМ,25"
"3,ПЛАТОНОВ ВАДИМ,21"
"3,ПОКИДОВ МАКСИМ,20"
"3,ПЫХАЛОВ ЕГОР,22"
"3,РОЗИН СЕРГЕЙ,24"
"3,САВИН ПЕТР,26"
"3,САМОХВАЛОВ ДМИТРИЙ,21"
"3,ШАКОТЬКО АЛЕКСАНДР,22"
"4,ЖЕЛТОБРЮХОВ ЕВГЕНИЙ,11"
"4,ЗОТОВ ЕВГЕНИЙ,7"
"4,КОВАЛЕНКО АЛЕКСАНДР,16"
"4,РОМАНОВ ВЛАДИМИР,5"
"4,САРАЕВ ДМИТРИЙ,5"
"4,СИДОРОЧЕВ ПАВЕЛ,3"
"4,СИЛЬВАСТ АЛЕКСАНДР,18"
"4,СУЛИНОВ ДМИТРИЙ,12"
"4,ФРОЛОВ ИВАН,17"
"4,ЧЕРЕПНЕНКОВ АЛЕКСАНДР,17"
.. detail for first person
Race #, Points, Name, Race Num, Placement, Name
(44 7 "ПОПОВ АНТОН" (44 1 "ПОПОВ АНТОН"))
(41 10 "ПОПОВ АНТОН" (41 1 "ПОПОВ АНТОН"))
(39 10 "ПОПОВ АНТОН" (39 1 "ПОПОВ АНТОН"))
(37 10 "ПОПОВ АНТОН" (37 1 "ПОПОВ АНТОН"))
(27 10 "ПОПОВ АНТОН" (27 1 "ПОПОВ АНТОН"))
(25 0 "ПОПОВ АНТОН" (25 24 "ПОПОВ АНТОН"))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment