QONULFERLZKG7E3NSJQBYUH6A224KY3WZ4KICUWDZ2D45OK24YFQC package mainimport ("bufio""fmt""log""os""strconv")const PIVOT = 25func main() {if err := realMain(); err != nil {log.Println(err)}}func realMain() error {data, err := parseInput()if err != nil {return err}p1, err := SolveFirst(data)if err != nil {return err}log.Println("Part1:", p1)return nil}func SolveFirst(data []int) (int, error) {for i, d := range data {if i < PIVOT+2 {continue}if !sum(data, i, d) {return d, nil}}return 0, fmt.Errorf("invalid not found")}// XXX sort!func sum(data []int, idx int, val int) bool {for i := idx - PIVOT - 1; i <= idx; i++ {for j := idx - PIVOT - 2; j <= idx; j++ {if data[i]+data[j] == val {return true}}}return false}func parseInput() ([]int, error) {fd, err := os.Open("input.txt")if err != nil {return nil, err}defer fd.Close()var ret []intbuf := bufio.NewScanner(fd)for buf.Scan() {tmp, err := strconv.Atoi(buf.Text())if err != nil {return nil, err}ret = append(ret, tmp)}return ret, nil}
1164219232026423635411838281485171032154650243768688323111643697812291325421484101715182819212022352445306750234027263138332542293234574170434446657547488949516160525456998690721047778848595871091321269610810112923310310617215311012817514915015516516118122218024242223840320425820920721352821663530326025930448229969334232636143538446742960784442084247442276255847547656451962066062511006416688377457818049031167851895894158795010348979511039994122110831285124514291472130920611413169519332423169821721745198532422738184718481891223919452328207723042368253034903170326030043108311133934313387634433592359336953738373939683793383669014249438144455476489855347871644761126836621910428713270359857762971857288747792727532776180421596286308694927915391119811301111646123311630414124134041325415049141671529314473220341917816756161072251516391210254121217324354981797320925236272397724657249006611227571274212665827727294602864029766305803249833147328633529734364373163824938898448954160041950445525715548634495571004766102260590540795438589653581006262967227748137046367511102190835501240171181778049817256211206391507991051084649819112919810363616012711217918116011248511701412072912532713014022466416632013797425498817200516404819514317868919256136705118969819061219729629816231587221581524234122919339450435482655212225086926330125546726811430429485641652683141434633605334273738575536930142648938031038699446541044816574058158507845815664842448006250633651876851898351417052358155976157240864034767879070535472973112127557120387496117562959059779990451275063906321962335110406193821896449298639899423210660971037751103315313841441083342163850512844461319137183963714417691461649146833320961821787362203058921210932024149184453918708131900553250148619027102248938198063020273854054738329976723175992845793252511126035832726215406523229034183717271292998244386923631901365817537153524051534442782140080154276323388118369005313883340597577453271524552496565619748427108257134660955551286945329798699521472063057357803754151513604769759869217236670918022875965351065695077645232426171981575061267020984358361602165793952069681190988229499714041727772510458492123250121233499912536103279346752171633117240097151380501764681715195227200895351536105816991741178386961755271240470778165933422229641630163708190763961936661019563484224183973870807224861115227835045569981327473049344374543033327754069130304991083274793930556285317885693195440032352799335850833414605435669738388897583595995238443006439375113863988071456011560034804520190150256553476446195311678157806326579721576083238560889562641413686105539370231575775296386374296994640476939321098913941269815792838417817440295811616951877082886102781248862844999284652010561677612007234597901172144897174111088938115778483118861719121721947166922616194475303179912487191833281162662312133558761144218750146898678151485844158244739189065747358755897163367385169929406231181673329584928295690970203517948208990110288791125229950657232810885331398331240583666255280708277777511285044605307586135280457439291117428291803500442589648298384522328174145321612124433468605491541530569581011504681080847358522473394551649786269653010455764201772462761542470534323488091593741054740118364438853305821956282211675557892857157486757226093959018802261341562462655866796148614478437366612167466898962301471040115334933295865936156093943928874950853135198094846195862591610333564391211589063217307520715084170321189380783196801805411530101381134396983114383580611849904911720529759207055307618694519581410932333188414900017176695311847083282182952601218772247391880084967188700922818947820091909479051298253615019919823553712512114227823278926003131164155457528193074588322874071212296845944558973685323288262972595922824312860186432580156153240458345329508133335471955433789564018370961097937748669764158317756708464535137817912377877143974384022493460064569233922728238420897867242181530044227591827425957218045266687074584253065655309694861690512317504060005572452468871631865837098240549653553967876975952148366893641749140221680413634171016477467976220161717704519475880240606910938465483104582679169933503360132285846931226895524484457448311106220838587862408879110921772103087777531189357591913873570706122600643661282276523713633780227141575558491607141311615113418387155327656331519592169115326535646160677610021615026430616490760362172481509001723198571817556666603178971626591875452258429701541229194196995252779133607627089497610250828296033036433106824153640285600658722972801868692828960315873325621734782927097423655108184538303093400783052245733734904786890337069309093339841520649121240754337227460803478865232148261493727354538292623665168524343837352187435733398105823129010949236469888929585929415217232721353113956158626672467826386510276356979002801145130920154628715135566297790514560831797415840251222096392087254379291181449112998112358176983715150685113984011044051372259488297535272105514505137139078367802250250539307382207510624058659210746775999710140879710111300412462816738304237011009295895911781080021625014320299511985051635716707238400712584941870112689877768828998783977813243227094419747895930015139669595414061691290614873642345416517933658015233053955819322914968117329884712827470764422918163382215419448261917631229341939227304918385021150175606026646633160722790375917522994347531623766131657332012792736929761160752425274819638925828168964531657603253428116869439842610434018330013311940837611644133028935333636034681315873438023429873346280251655235493266928236778146630464670063034039313557821440598437523643940551523544144523137658487614459851883001097145784723449146760479188949040951296255841480905368438602982857052203075874720057085158130181380665728513572877376584154058948645576863616649509486564316970570174582801673516696801585819097926672271413558679911995345083254109344983458080959010288919710031028369265249126603058182294825674745392545202638014138429072559580143048511048824322015132055252492215393161186571371333463109177609254185412934516308221225652950862158835730529116606189943951501809664799142445996360215809051148521457881103601152183408903615552552290351724571979830255063398681422514659356731997081069468187370877383318834663312311906271052304197427634839520068386268662183667255713234227595283730570648938343496110437431427520596664426835340544633405300420267265011291446440573760295462926269628401288234106720329462940526383305477094682307708931807148672013101763857742679626359828075366357405989482973757175105064377997982613738805474006996187818161885391310967917039811149752616362541988516452594320855053336469689276507855594090553245398166758286351198415565875121666557638254286510354578328391713446534761758086106956045959430385274602338337070963825664127537637722505763840649060924910420965273260735545585872782831183136147894224654431766052722683677936570798691274510840126992467566480971010232575141598595901774771054932657925910866100950594142425486988881109832910333317740048257178234893053469851398287315211411831994066313133788392294362883837736051111982813755983143065016843231882745588250924791875278147151491129385962072569112807117904782437986154541843067051765324725734616907283874933170404137279662065165233067419106346825574228489147065772759963843465521964430053927407918859364362293032316964623081142859316238148078222962521083329574940665017602454253616529854192628931544030627131926694579290232274839492945561462291932802360195942306032972453013305389537658234693660985312323614681816383249459803467133947697602899360136307005075816401318136152385937792565410707768795014481334476050444894753223573559842185462287017499774592362509509999501468959506816125057248628116852342759990328516509684257255481726760833853421242134885
module maingo 1.17