Test and solution for day 1 of advent calendar.

This commit is contained in:
Bill Thiede 2017-12-10 15:48:18 -08:00
commit 05c5fff28d
2 changed files with 48 additions and 0 deletions

29
2017/1/1.go Normal file
View File

@ -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"

19
2017/1/1_test.go Normal file
View File

@ -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)
}
}
}