From 05c5fff28dd6c05ced71e0cd566a1e8aba8453de Mon Sep 17 00:00:00 2001 From: Bill Thiede Date: Sun, 10 Dec 2017 15:48:18 -0800 Subject: [PATCH] Test and solution for day 1 of advent calendar. --- 2017/1/1.go | 29 +++++++++++++++++++++++++++++ 2017/1/1_test.go | 19 +++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 2017/1/1.go create mode 100644 2017/1/1_test.go diff --git a/2017/1/1.go b/2017/1/1.go new file mode 100644 index 0000000..80164a1 --- /dev/null +++ b/2017/1/1.go @@ -0,0 +1,29 @@ +package main + +import "fmt" + +func isnumber(b byte) bool { + return '0' <= b && b <= '9' +} + +func sum(in string) int { + var s int + var last byte + + for _, c := range append([]byte(in), in[0]) { + if !isnumber(c) { + panic(fmt.Sprintf("got non-number rune %q", c)) + } + if c == last { + s += int(byte(c) - '0') + } + last = c + } + return s +} + +func main() { + fmt.Println(sum(captcha)) +} + +var captcha = "34997744892914653296827871613388552993634935173733597474997393431324121718942484674492133736486619515246829248477836544451943938832848157199224116563715646126431493563772112714741546635764665586452858349326658345524573681224829221829772728531278893357146638772291782796744812479595172578555931968285326741191558735491923682586844185476584124677856856612582263263124715916498254659761312225295947328671873729594182695425852559718922816832816341259695766322357565252335851264933471555351536363944572763621761489944217787785564355131756948331413652646811626742168857634856234347432698931371757454156396432993421795675147273229642441888776517165375965288923515378871773449714189311167849788519479274172617334378412661574885156988171532483385528342851358599792154331889342985168528186562873736117113242271863318873917355428393173152783223727362282169982597123525671895452937118687191281382949335937173323862618172284254741935865963877359477126188879481911148827453781546789437317581568931445259912541273353345254171252588344612386649134562638758915336976347291218848744548755462493981871543949697331735577243658722111371552363179584543521149944247848176793571855164329415143753479297879926959141597695174674386467854776481689314612324534729187335368471697738925271618243312864656442299938886755679996568297498965651652337961837876468596749433454633975722561971935459554979713344313292511447288939379369279487299557326137798219646395436241742751581363752896833892713543627966633788455384129347637693559713174477262914916598991823983686226378396341554219544683439536933338185723832743964258335163993324191589246399535845434167819135413916443764931668386817282279877264296262823999224943974974489892778799656723453849139194948368998995531261224669478559359689167934624681622834931223728318247832134758581882736415334187562342375144693398771223127132562692525629392889723242374746911936313136382354858767169452656224519128287899264831463597663461857119132312578648894815417348364532372836621644176295776978942783714778954864719541832176633892147845693752248565147794357864859961462918847471158244516279178346514129117328285132341339595664283" diff --git a/2017/1/1_test.go b/2017/1/1_test.go new file mode 100644 index 0000000..e5cdf4c --- /dev/null +++ b/2017/1/1_test.go @@ -0,0 +1,19 @@ +package main + +import "testing" + +func TestOne(t *testing.T) { + for _, ts := range []struct { + in string + want int + }{ + {in: "1122", want: 3}, + {in: "1111", want: 4}, + {in: "1234", want: 0}, + // {in:"91212129 produces + } { + if got := sum(ts.in); got != ts.want { + t.Errorf("sum(%q) = %d, want %d", ts.in, got, ts.want) + } + } +}