From 35b219dc0c00c3d2511739e1bb9639b074886dbe Mon Sep 17 00:00:00 2001 From: WindomZ Date: Sun, 30 Jul 2017 15:23:01 +0800 Subject: [PATCH 1/3] init issues project --- .travis.yml | 14 ++++++++++++++ README.md | 23 +++++++++++++++++++++-- 2 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..e831d4a --- /dev/null +++ b/.travis.yml @@ -0,0 +1,14 @@ +language: go + +sudo: false + +go: master + +before_install: + - go get github.com/WindomZ/testify/assert + - go get github.com/mattn/goveralls + +script: +# - go test -v ./... -covermode=count -coverprofile=coverage.out + - $(go env GOPATH | awk 'BEGIN{FS=":"} {print $1}')/bin/goveralls -service=travis-ci + - go test -v ./... diff --git a/README.md b/README.md index 3e3215f..f4ca513 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,22 @@ -# leetcode +# leetcode.go -> Just starting +> Issues from my solutions(Golang) of problems in https://leetcode.com/ + +[![Build Status](https://travis-ci.org/WindomZ/leetcode.go.svg?branch=issues)](https://travis-ci.org/WindomZ/leetcode.go) +[![Coverage Status](https://coveralls.io/repos/github/WindomZ/leetcode.go/badge.svg?branch=issues)](https://coveralls.io/github/WindomZ/leetcode.go?branch=issues) + +## Testing + +```bash +git clone -b issues https://github.com/WindomZ/leetcode.go "$YOUR_PROJECT_PATH" +cd "$YOUR_PROJECT_PATH" +go test -v ./... +``` + +## Contributing + +### Discuss +Welcome to discuss on [issues page](https://github.com/WindomZ/leetcode.go/issues). + +### Support +If you like it then you can put a :star: on it. From 65de2f6ca343854a173df28397f59e357f8c5904 Mon Sep 17 00:00:00 2001 From: WindomZ Date: Sun, 30 Jul 2017 15:23:24 +0800 Subject: [PATCH 2/3] issue(algorithms): benchmark of reverse_integer --- issues/reverse_integer/README.md | 62 +++++++++++++++++++ issues/reverse_integer/reverse.go | 39 ++++++++++++ issues/reverse_integer/reverse_test.go | 82 ++++++++++++++++++++++++++ issues/reverse_integer/run.sh | 2 + 4 files changed, 185 insertions(+) create mode 100644 issues/reverse_integer/README.md create mode 100644 issues/reverse_integer/reverse.go create mode 100644 issues/reverse_integer/reverse_test.go create mode 100755 issues/reverse_integer/run.sh diff --git a/issues/reverse_integer/README.md b/issues/reverse_integer/README.md new file mode 100644 index 0000000..bb5210a --- /dev/null +++ b/issues/reverse_integer/README.md @@ -0,0 +1,62 @@ +## Scene + +Run the script: +```bash +./run.sh +``` + +## Question + +1 number of CPUs: +``` +Benchmark_A_reverse_1 100000000 15.0 ns/op +Benchmark_A_reverse_2 100000000 14.9 ns/op +Benchmark_A_reverse_3 100000000 14.2 ns/op +Benchmark_A_reverse_4 100000000 14.1 ns/op +Benchmark_B_reverse_3 100000000 14.1 ns/op +Benchmark_B_reverse_4 100000000 14.1 ns/op +Benchmark_B_reverse_1 100000000 14.9 ns/op +Benchmark_B_reverse_2 100000000 14.9 ns/op +Benchmark_C_reverse_1 100000000 14.9 ns/op +Benchmark_C_reverse_3 100000000 14.1 ns/op +Benchmark_C_reverse_2 100000000 15.0 ns/op +Benchmark_C_reverse_4 100000000 14.2 ns/op +``` + +4 number of CPUs: +``` +Benchmark_A_reverse_1-4 100000000 15.0 ns/op +Benchmark_A_reverse_2-4 100000000 14.9 ns/op +Benchmark_A_reverse_3-4 100000000 14.2 ns/op +Benchmark_A_reverse_4-4 100000000 14.2 ns/op +Benchmark_B_reverse_3-4 100000000 14.2 ns/op +Benchmark_B_reverse_4-4 100000000 14.2 ns/op +Benchmark_B_reverse_1-4 100000000 14.9 ns/op +Benchmark_B_reverse_2-4 100000000 14.9 ns/op +Benchmark_C_reverse_1-4 100000000 15.0 ns/op +Benchmark_C_reverse_3-4 100000000 14.3 ns/op +Benchmark_C_reverse_2-4 100000000 14.9 ns/op +Benchmark_C_reverse_4-4 100000000 14.2 ns/op +``` + +8 number of CPUs: +``` +Benchmark_A_reverse_1-8 100000000 14.9 ns/op +Benchmark_A_reverse_2-8 100000000 14.9 ns/op +Benchmark_A_reverse_3-8 100000000 14.2 ns/op +Benchmark_A_reverse_4-8 100000000 14.1 ns/op +Benchmark_B_reverse_3-8 100000000 14.1 ns/op +Benchmark_B_reverse_4-8 100000000 14.1 ns/op +Benchmark_B_reverse_1-8 100000000 14.9 ns/op +Benchmark_B_reverse_2-8 100000000 14.9 ns/op +Benchmark_C_reverse_1-8 100000000 14.9 ns/op +Benchmark_C_reverse_3-8 100000000 14.2 ns/op +Benchmark_C_reverse_2-8 100000000 15.0 ns/op +Benchmark_C_reverse_4-8 100000000 14.4 ns/op +``` + +> Why `reverse_3` and `reverse_4` are faster than `reverse_1` and `reverse_2`? + +## Answer + +> ? diff --git a/issues/reverse_integer/reverse.go b/issues/reverse_integer/reverse.go new file mode 100644 index 0000000..2f6832f --- /dev/null +++ b/issues/reverse_integer/reverse.go @@ -0,0 +1,39 @@ +package reverse_integer + +//import "runtime" +// +//func init() { +// runtime.GOMAXPROCS(4) +//} + +func reverse_1(x int) (n int) { + for ; x != 0; x = x / 10 { + n = n*10 + x%10 + } + return +} + +func reverse_2(x int) (n int) { + for ; x != 0; x = x / 10 { + n *= 10 + n += x % 10 + } + return +} + +func reverse_3(x int) (n int) { + for t := 0; x != 0; x = x / 10 { + t = x % 10 + n = n*10 + t + } + return +} + +func reverse_4(x int) (n int) { + for t := 0; x != 0; x = x / 10 { + t = x % 10 + n *= 10 + n += t + } + return +} diff --git a/issues/reverse_integer/reverse_test.go b/issues/reverse_integer/reverse_test.go new file mode 100644 index 0000000..3031fb6 --- /dev/null +++ b/issues/reverse_integer/reverse_test.go @@ -0,0 +1,82 @@ +package reverse_integer + +import ( + "testing" + + "github.com/WindomZ/testify/assert" +) + +var test_x int = 1234567890 + +func Test_reverse(t *testing.T) { + assert.Equal(t, 987654321, reverse_1(test_x)) + assert.Equal(t, 987654321, reverse_2(test_x)) + assert.Equal(t, 987654321, reverse_3(test_x)) + assert.Equal(t, 987654321, reverse_4(test_x)) +} + +// Benchmark_A +func Benchmark_A_reverse_1(b *testing.B) { + for i := 0; i < b.N; i++ { + reverse_1(test_x) + } +} +func Benchmark_A_reverse_2(b *testing.B) { + for i := 0; i < b.N; i++ { + reverse_2(test_x) + } +} +func Benchmark_A_reverse_3(b *testing.B) { + for i := 0; i < b.N; i++ { + reverse_3(test_x) + } +} +func Benchmark_A_reverse_4(b *testing.B) { + for i := 0; i < b.N; i++ { + reverse_4(test_x) + } +} + +// Benchmark_B +func Benchmark_B_reverse_3(b *testing.B) { + for i := 0; i < b.N; i++ { + reverse_3(test_x) + } +} +func Benchmark_B_reverse_4(b *testing.B) { + for i := 0; i < b.N; i++ { + reverse_4(test_x) + } +} +func Benchmark_B_reverse_1(b *testing.B) { + for i := 0; i < b.N; i++ { + reverse_1(test_x) + } +} +func Benchmark_B_reverse_2(b *testing.B) { + for i := 0; i < b.N; i++ { + reverse_2(test_x) + } +} + +// Benchmark_C +func Benchmark_C_reverse_1(b *testing.B) { + for i := 0; i < b.N; i++ { + reverse_1(test_x) + } +} +func Benchmark_C_reverse_3(b *testing.B) { + for i := 0; i < b.N; i++ { + reverse_3(test_x) + } +} +func Benchmark_C_reverse_2(b *testing.B) { + for i := 0; i < b.N; i++ { + reverse_2(test_x) + } +} +func Benchmark_C_reverse_4(b *testing.B) { + for i := 0; i < b.N; i++ { + reverse_4(test_x) + } +} diff --git a/issues/reverse_integer/run.sh b/issues/reverse_integer/run.sh new file mode 100755 index 0000000..1fe2d36 --- /dev/null +++ b/issues/reverse_integer/run.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +go test -test.bench=".*" From f34660b2bcdb0980f856e47d9611954e20ade21b Mon Sep 17 00:00:00 2001 From: WindomZ Date: Sun, 30 Jul 2017 15:29:42 +0800 Subject: [PATCH 3/3] update README.md --- issues/reverse_integer/README.md | 2 +- issues/reverse_integer/run.sh | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) delete mode 100755 issues/reverse_integer/run.sh diff --git a/issues/reverse_integer/README.md b/issues/reverse_integer/README.md index bb5210a..e40d855 100644 --- a/issues/reverse_integer/README.md +++ b/issues/reverse_integer/README.md @@ -2,7 +2,7 @@ Run the script: ```bash -./run.sh +go test -test.bench=".*" ``` ## Question diff --git a/issues/reverse_integer/run.sh b/issues/reverse_integer/run.sh deleted file mode 100755 index 1fe2d36..0000000 --- a/issues/reverse_integer/run.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env bash -go test -test.bench=".*"