icfpc2010 / purepurecode++

24
ICFPC 2010 PurePureCode++

Upload: nya3jp

Post on 26-Jun-2015

1.320 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ICFPC2010 / PurePureCode++

ICFPC 2010PurePureCode++

Page 2: ICFPC2010 / PurePureCode++

Short talk about ICFP Contest 2010

What's ICFPC This year's task Our team: PurePureCode++

About this talk

Page 3: ICFPC2010 / PurePureCode++

What's ICFPC?

Page 4: ICFPC2010 / PurePureCode++

ICFP

Page 5: ICFPC2010 / PurePureCode++

Annual contest held by ICFP organizer No limit to eligibility No limit to programming languages used No limit to team size 72 hours!

ICFP Contest

Page 6: ICFPC2010 / PurePureCode++

Organizer praise the programming language of winner's choice

1st place: "the programming language of choice for discriminating hackers"

2nd place: "a fine tool for many applications"

lightning: "very suitable for rapid prototyping"

Prize

Page 7: ICFPC2010 / PurePureCode++

2006: UMIX

Past Contests

2008: Mars Rover

2007: Endo

2009: Satellite

Page 8: ICFPC2010 / PurePureCode++

This Year's Task

Page 9: ICFPC2010 / PurePureCode++

International Car and Fuel Production

This Year's Task

Page 10: ICFPC2010 / PurePureCode++

Cars & Fuels

Company A

Company B

Company C

fuel

fuel

fuel

fuel

fuel

Cars: Open-sourcedFuels: Proprietary

Page 11: ICFPC2010 / PurePureCode++

Car: Non-linear system of inequalities, e.g. ABC >= BAAC BBA > ACBA

Fuel: Assignment of square matrices with◦ arbitrary dimension◦ non-negative integer components

(top-left component should be positive)

Background:google:///kinaba dyd string rewriting

Core Problem

Page 12: ICFPC2010 / PurePureCode++

Cars and Fuels are coded by ternary coding◦ 012020210001200102002010021212102001...

Fuels are produced by ternary logical circuits◦ Smaller circuit is better

Coding specification is not given...guess it!

Golf & Guess

Page 13: ICFPC2010 / PurePureCode++

Our TeamIntroducing PurePureCode++

Page 14: ICFPC2010 / PurePureCode++

ぴゅあぴゅあこーど++ (pure pure code ++)

@phoenixstarhiro @izumi_yusuke @chunjp @gusmachine @nya3jp @tanakh

Our Team

Page 15: ICFPC2010 / PurePureCode++

Day1: spec analysis, simple solver

Day2: SA solver, Car design

Day3: specialized solvers

Summary

Page 16: ICFPC2010 / PurePureCode++

Ternary circuit gate guess Analysis of ternary codings Organizing submissions Simple brute-force solver First SA solver

Day1

Page 17: ICFPC2010 / PurePureCode++

Improved SA solver Shipping Cars Auto-solver infrastructure

Day2

Page 18: ICFPC2010 / PurePureCode++

FrontendServer

DB

Scraper

ICFPCServer

TritEncoderDecoder

CircuitGenerator

AutoSolver

TrivialSolver

Members

ScalarSolver

BFSolver

SASolver

Spec.Solver

AutoSolver

AutoSolver

Haskell

Python

PlainText

Python+CronPython

Bash

C++ / Python

Solver Cluster

Master Server

Page 19: ICFPC2010 / PurePureCode++
Page 20: ICFPC2010 / PurePureCode++

purepure.cgi

Page 21: ICFPC2010 / PurePureCode++

Better solver scheduling Analysis of "hard" Cars Specialized solvers

Day3

Page 22: ICFPC2010 / PurePureCode++

Scoring scheme:◦ 1/N, 1/(N+1), ..., 1/(2N-1) pts for N-user Car

Circuit golf yields upto x2 revenue◦ Difficult and require resubmission

1user Car vs. 20user Car?◦ Popular Cars have very small revenue

Strategy

Page 23: ICFPC2010 / PurePureCode++

Judge's Prize?

Page 24: ICFPC2010 / PurePureCode++

Within Top5! (out of 874 teams) To be announced in ICFP2010

Result