palindrome: use slices in the concurrent version too. The single thread version is so fast now, that using channels makes this one slower

[?]
Dec 21, 2020, 10:01 PM
2P4Y7M5RO5NW4WTDKB4TSWSJKP6YVKXR6ZJYXJWK6WKB2SNGHQHQC

Dependencies

  • [2] L5UJYVXW palindrome: Use string slice instead of concatenating, this makes the code WAY faster
  • [3] ZQFONDI4 Add simple version
  • [4] O64GEJAP palindrome: do not report one char long palindromes
  • [5] AUM6AXH7 It is enough to check only half of the string because of symmetry
  • [6] VUXCDW3L palindrome: move to palindrome package
  • [7] MCHVA5DY Palindrome initial import

Change contents

  • replacement in snippets/palindrome/palindrome.go at line 35
    [3.264][3.534:549](),[2.242][3.534:549](),[3.727][3.534:549](),[3.534][3.534:549]()
    longest := ""
    [2.242]
    [3.549]
    var longest string
  • replacement in snippets/palindrome/palindrome.go at line 40
    [3.628][3.628:662]()
    go pal_worker(str, k, results)
    [3.628]
    [3.662]
    go palWorker(str, k, results)
  • replacement in snippets/palindrome/palindrome.go at line 59
    [3.876][3.876:1091]()
    func pal_worker(str string, k int, result chan<- string) {
    longest := string(str[k])
    for i := 1; true; i++ {
    // avoid overrun or underrun
    if k-i < 0 || k+i > len(str)-1 {
    break
    }
    // two identical bytes
    [3.876]
    [3.1091]
    func palWorker(str string, k int, result chan<- string) {
    var longest string
    for i := 1; k-i > -1 && k+i < len(str); i++ {
  • replacement in snippets/palindrome/palindrome.go at line 63
    [3.1119][3.1119:1178]()
    longest = string(str[k-i]) + longest + string(str[k+i])
    [3.1119]
    [3.1178]
    longest = str[k-i : k+i+1]
  • edit in snippets/palindrome/palindrome.go at line 67
    [3.1202][3.1202:1270](),[3.1270][3.55:123]()
    }
    //fmt.Fprintf(os.Stderr, "Worker(%d) result: %s\n", k, longest)
    if len(longest) > 1 {
    result <- longest
    } else {
    result <- ""
  • edit in snippets/palindrome/palindrome.go at line 68
    [3.126]
    [3.1289]
    result <- longest