Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
35
Task/Phrase-reversals/Go/phrase-reversals-1.go
Normal file
35
Task/Phrase-reversals/Go/phrase-reversals-1.go
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
const phrase = "rosetta code phrase reversal"
|
||||
|
||||
func revStr(s string) string {
|
||||
rs := make([]rune, len(s))
|
||||
i := len(s)
|
||||
for _, r := range s {
|
||||
i--
|
||||
rs[i] = r
|
||||
}
|
||||
return string(rs[i:])
|
||||
}
|
||||
|
||||
func main() {
|
||||
fmt.Println("Reversed: ", revStr(phrase))
|
||||
|
||||
ws := strings.Fields(phrase)
|
||||
for i, w := range ws {
|
||||
ws[i] = revStr(w)
|
||||
}
|
||||
fmt.Println("Words reversed: ", strings.Join(ws, " "))
|
||||
|
||||
ws = strings.Fields(phrase)
|
||||
last := len(ws) - 1
|
||||
for i, w := range ws[:len(ws)/2] {
|
||||
ws[i], ws[last-i] = ws[last-i], w
|
||||
}
|
||||
fmt.Println("Word order reversed:", strings.Join(ws, " "))
|
||||
}
|
||||
54
Task/Phrase-reversals/Go/phrase-reversals-2.go
Normal file
54
Task/Phrase-reversals/Go/phrase-reversals-2.go
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"regexp"
|
||||
"sort"
|
||||
"strings"
|
||||
)
|
||||
|
||||
const phrase = "rosetta code phrase reversal"
|
||||
|
||||
type reversible interface {
|
||||
Len() int
|
||||
Swap(i, j int)
|
||||
}
|
||||
|
||||
func reverse(p reversible) {
|
||||
mid := p.Len() / 2
|
||||
last := p.Len() - 1
|
||||
for i := 0; i < mid; i++ {
|
||||
p.Swap(i, last-i)
|
||||
}
|
||||
}
|
||||
|
||||
type runeSlice []rune
|
||||
|
||||
func (p runeSlice) Len() int { return len(p) }
|
||||
func (p runeSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
|
||||
|
||||
func reverseString(s string) string {
|
||||
r := runeSlice(s)
|
||||
reverse(r)
|
||||
return string(r)
|
||||
}
|
||||
|
||||
var rx = regexp.MustCompile(`\S*`)
|
||||
|
||||
func reverseWords(s string) string {
|
||||
return rx.ReplaceAllStringFunc(s, func(m string) string {
|
||||
return reverseString(m)
|
||||
})
|
||||
}
|
||||
|
||||
func reverseWordOrder(s string) string {
|
||||
l := sort.StringSlice(strings.Fields(s))
|
||||
reverse(l)
|
||||
return strings.Join(l, " ")
|
||||
}
|
||||
|
||||
func main() {
|
||||
fmt.Println("Reversed: ", reverseString(phrase))
|
||||
fmt.Println("Words reversed: ", reverseWords(phrase))
|
||||
fmt.Println("Word order reversed:", reverseWordOrder(phrase))
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue