First commit of partial RosettaCode contents.
Pushing this for testing purposes. Lots of work still needed.
This commit is contained in:
commit
1e05ecd7ee
781 changed files with 9080 additions and 0 deletions
5
Task/Anagrams/Go/anagrams-2.go
Normal file
5
Task/Anagrams/Go/anagrams-2.go
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
def words = new URL('http://www.puzzlers.org/pub/wordlists/unixdict.txt').text.readLines()
|
||||
def groups = words.groupBy{ it.toList().sort() }
|
||||
def bigGroupSize = groups.collect{ it.value.size() }.max()
|
||||
def isBigAnagram = { it.value.size() == bigGroupSize }
|
||||
println groups.findAll(isBigAnagram).collect{ it.value }.collect{ it.join(' ') }.join('\n')
|
||||
10
Task/Anagrams/Go/anagrams-3.go
Normal file
10
Task/Anagrams/Go/anagrams-3.go
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
import Data.List
|
||||
|
||||
groupon f x y = f x == f y
|
||||
|
||||
main = do
|
||||
f <- readFile "./../Puzzels/Rosetta/unixdict.txt"
|
||||
let words = lines f
|
||||
wix = groupBy (groupon fst) . sort $ zip (map sort words) words
|
||||
mxl = maximum $ map length wix
|
||||
mapM_ (print . map snd) . filter ((==mxl).length) $ wix
|
||||
7
Task/Anagrams/Go/anagrams-4.go
Normal file
7
Task/Anagrams/Go/anagrams-4.go
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
*Main> main
|
||||
["abel","able","bale","bela","elba"]
|
||||
["caret","carte","cater","crate","trace"]
|
||||
["angel","angle","galen","glean","lange"]
|
||||
["alger","glare","lager","large","regal"]
|
||||
["elan","lane","lean","lena","neal"]
|
||||
["evil","levi","live","veil","vile"]
|
||||
39
Task/Anagrams/Go/anagrams.go
Normal file
39
Task/Anagrams/Go/anagrams.go
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"sort"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func main() {
|
||||
b, err := ioutil.ReadFile("unixdict.txt")
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return
|
||||
}
|
||||
var ma int
|
||||
m := make(map[string][]string)
|
||||
for _, word := range strings.Split(string(b), "\n") {
|
||||
bs := byteSlice(word)
|
||||
sort.Sort(bs)
|
||||
k := string(bs)
|
||||
a := append(m[k], word)
|
||||
if len(a) > ma {
|
||||
ma = len(a)
|
||||
}
|
||||
m[k] = a
|
||||
}
|
||||
for _, a := range m {
|
||||
if len(a) == ma {
|
||||
fmt.Println(a)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
type byteSlice []byte
|
||||
|
||||
func (b byteSlice) Len() int { return len(b) }
|
||||
func (b byteSlice) Swap(i, j int) { b[i], b[j] = b[j], b[i] }
|
||||
func (b byteSlice) Less(i, j int) bool { return b[i] < b[j] }
|
||||
Loading…
Add table
Add a link
Reference in a new issue