You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.2 KiB
64 lines
1.2 KiB
// Copyright 2012 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package main
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"regexp"
|
|
)
|
|
|
|
func AppendByte(slice []byte, data ...byte) []byte {
|
|
m := len(slice)
|
|
n := m + len(data)
|
|
if n > cap(slice) { // if necessary, reallocate
|
|
// allocate double what's needed, for future growth.
|
|
newSlice := make([]byte, (n+1)*2)
|
|
copy(newSlice, slice)
|
|
slice = newSlice
|
|
}
|
|
slice = slice[0:n]
|
|
copy(slice[m:n], data)
|
|
return slice
|
|
}
|
|
|
|
// STOP OMIT
|
|
|
|
// Filter returns a new slice holding only
|
|
// the elements of s that satisfy fn.
|
|
func Filter(s []int, fn func(int) bool) []int {
|
|
var p []int // == nil
|
|
for _, i := range s {
|
|
if fn(i) {
|
|
p = append(p, i)
|
|
}
|
|
}
|
|
return p
|
|
}
|
|
|
|
// STOP OMIT
|
|
|
|
var digitRegexp = regexp.MustCompile("[0-9]+")
|
|
|
|
func FindDigits(filename string) []byte {
|
|
b, _ := ioutil.ReadFile(filename)
|
|
return digitRegexp.Find(b)
|
|
}
|
|
|
|
// STOP OMIT
|
|
|
|
func CopyDigits(filename string) []byte {
|
|
b, _ := ioutil.ReadFile(filename)
|
|
b = digitRegexp.Find(b)
|
|
c := make([]byte, len(b))
|
|
copy(c, b)
|
|
return c
|
|
}
|
|
|
|
// STOP OMIT
|
|
|
|
func main() {
|
|
// place holder; no need to run
|
|
}
|