Data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 7387c8f97b
commit cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions

View 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, " "))
}

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