diff --git a/main.go b/main.go
index b3f2728..4803a02 100644
--- a/main.go
+++ b/main.go
@@ -4,12 +4,20 @@ import (
"os"
"fmt"
"strings"
+ "math/bits"
)
func main() {
- var seed uint64
- fmt.Sscanf(os.Args[1], "%llu", seed)
- fmt.Println(maleAvatar(seed))
+ fmt.Println(makeAvatar(os.Args[1]))
+}
+
+func makeAvatar (seed_string string) string {
+ var seed uint64 = 0
+ for _, c := range []byte(seed_string) {
+ seed = bits.RotateLeft64(seed, 8)
+ seed ^= uint64(c)
+ }
+ return femaleAvatar(seed)
}
@@ -267,3 +275,167 @@ func maleAvatar (seed uint64) string {
return strings.NewReplacer(m...).Replace(s)
}
+func femaleAvatar (seed uint64) string {
+ var g = LinearCongruentialGenerator(seed)
+
+ var skinColor = g.pickone([]string { "#FFDBAC", "#F5CFA0", "#EAC393", "#E0B687", "#CB9E6E", "#B68655", "#A26D3D", "#8D5524" })
+ var hairColor = Color(g.pickone([]string { "#090806", "#2c222b", "#71635a", "#b7a69e", "#d6c4c2", "#cabfb1", "#dcd0ba", "#fff5e1",
+ "#e6cea8", "#e5c8a8", "#debc99", "#b89778", "#a56b46", "#b55239", "#8d4a43", "#91553d",
+ "#533d32", "#3b3024", "#554838", "#4e433f", "#504444", "#6a4e42", "#a7856a", "#977961" })).brighterOrDarkerThan(*Color(skinColor), 17)
+ var eyesColor = g.pickone([]string { "#76778b", "#697b94", "#647b90", "#5b7c8b", "#588387" })
+ var eyebrowsColor = Color(Color(hairColor).darkerThan(*Color(skinColor), 7)).darkerThan(*Color(hairColor), 10)
+ var accessoriesColor = g.pickone([]string { "#daa520", "#ffd700", "#eee8aa", "#fafad2", "#d3d3d3", "#a9a9a9" })
+ var mouthColor = Color(g.pickone([]string { "#dbac98", "#d29985", "#c98276", "#e35d6a", "#e32153", "#de0f0d" })).brighterOrDarkerThan(*Color(skinColor), 10)
+ var glassesColor = g.pickone([]string { "#5f705c", "#43677d", "#5e172d", "#ffb67a", "#a04b5d", "#191919", "#323232", "#4b4b4b" });
+ var clothesColor = g.pickone([]string { "#d11141", "#00b159", "#00aedb", "#f37735", "#ffc425", "#740001", "#ae0001", "#eeba30",
+ "#96ceb4", "#ffeead", "#ff6f69", "#ffcc5c", "#88d8b0" })
+ var hatColor = g.pickone([]string { "#cc6192", "#2663a3", "#a62116", "#3d8a6b", "#614f8a" })
+
+ var mood = ""
+ if mood == "" {
+ mood = g.pickone([]string { "sad", "happy", "surprised" })
+ }
+ var mouth string
+ if mood == "sad" {
+ mouth = "" +
+ "" +
+ "" +
+ ""
+ } else if mood == "happy" {
+ mouth = "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ ""
+ } else if mood == "surprised" {
+ mouth = "" +
+ ""
+ }
+
+ var s = strings.Join([]string {
+ "",
+ }, "")
+
+ m := []string{
+ "${skinColor}", skinColor,
+ "${hairColor}", hairColor,
+ "${eyesColor}", eyesColor,
+ "${eyebrowsColor}", eyebrowsColor,
+ "${accessoriesColor}", accessoriesColor,
+ "${mouthColor}", mouthColor,
+ "${glassesColor}", glassesColor,
+ "${clothesColor}", clothesColor,
+ "${hatColor}", hatColor,
+ }
+ return strings.NewReplacer(m...).Replace(s)
+}
+