Skip to content

Commit ec424f5

Browse files
committed
Better kamoulox
Signed-off-by: Jean-Laurent de Morlhon <jeanlaurent@morlhon.net>
1 parent 71cb596 commit ec424f5

File tree

6 files changed

+109
-16
lines changed

6 files changed

+109
-16
lines changed

Dockerfile

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
1-
FROM golang:1.23.1 AS gobuilder
2-
WORKDIR /go/src/github.com/jeanlaurent/kamoulox
3-
COPY . ./
4-
RUN go build .
1+
FROM golang:1.23.4-alpine AS gobuilder
2+
WORKDIR /src
3+
COPY go.mod ./
4+
RUN --mount=type=cache,target=/go/pkg/mod \
5+
go mod download
6+
COPY . /src/
7+
RUN --mount=type=cache,target=/root/.cache \
8+
--mount=type=cache,target=/go/pkg/mod \
9+
go build -o kamoulox cmd/kamoulox/*.go
510

611
FROM scratch
712
WORKDIR /app
8-
COPY --from=gobuilder /go/src/github.com/jeanlaurent/kamoulox /app/
9-
ENTRYPOINT ["./kamoulox"]
13+
COPY --from=gobuilder /src/kamoulox /app/
14+
ENTRYPOINT ["./kamoulox"]

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
module github.com/jeanlaurent/kamoulox
22

3-
go 1.23
3+
go 1.23.4

main

2.2 MB
Binary file not shown.

pkg/kamoulox/kamoulox.go

Lines changed: 37 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,36 @@ package kamoulox
22

33
import (
44
"fmt"
5+
"strings"
56
"unicode"
67

78
"math/rand"
89
)
910

1011
func GenerateKamoulox() string {
11-
firstVerb := randomElementFrom(verbs)
12-
firstObject := randomElementFrom(objects)
13-
return fmt.Sprintf("%s %s et %s %s.", capitalizeFirst(firstVerb), firstObject, randomElementFromExcluding(verbs, firstVerb), randomElementFromExcluding(objects, firstObject))
12+
numPairs := rand.Intn(3) + 2 // Generate between 2 and 4 pairs
13+
usedVerbs := make([]string, 0, numPairs)
14+
usedObjects := make([]string, 0, numPairs)
15+
pairs := make([]string, 0, numPairs)
16+
17+
for i := 0; i < numPairs; i++ {
18+
verb := randomElementFromExcluding(verbs, usedVerbs...)
19+
object := randomElementFromExcluding(objects, usedObjects...)
20+
usedVerbs = append(usedVerbs, verb)
21+
usedObjects = append(usedObjects, object)
22+
if i == 0 {
23+
verb = capitalizeFirst(verb)
24+
} else {
25+
verb = strings.TrimPrefix(verb, "je ")
26+
verb = strings.TrimPrefix(verb, "j'")
27+
}
28+
pair := fmt.Sprintf("%s %s", verb, object)
29+
pairs = append(pairs, pair)
30+
}
31+
32+
sentence := strings.Join(pairs[:len(pairs)-1], ", ")
33+
sentence += " et " + pairs[len(pairs)-1] + "."
34+
return sentence
1435
}
1536

1637
func randomElementFrom(array []string) string {
@@ -23,11 +44,18 @@ func capitalizeFirst(str string) string {
2344
}
2445
return ""
2546
}
26-
27-
func randomElementFromExcluding(array []string, toExclude string) string {
28-
found := array[rand.Intn(len(array))]
29-
if found != toExclude {
30-
return found
47+
func randomElementFromExcluding(array []string, toExclude ...string) string {
48+
for {
49+
found := array[rand.Intn(len(array))]
50+
exclude := false
51+
for _, ex := range toExclude {
52+
if found == ex {
53+
exclude = true
54+
break
55+
}
56+
}
57+
if !exclude {
58+
return found
59+
}
3160
}
32-
return randomElementFromExcluding(array, toExclude)
3361
}

pkg/kamoulox/objects.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,34 @@ var objects = []string{
5555
"Clint Eastwood",
5656
"Danny Boon",
5757
"Donald Trump",
58+
"un marteau",
59+
"une enclume",
60+
"une boîte à outils",
61+
"un dragon",
62+
"une lampe torche",
63+
"une tarte aux pommes",
64+
"un pingouin",
65+
"un panda",
66+
"un yaourt",
67+
"une cuillère",
68+
"une peluche",
69+
"un frisbee",
70+
"un ballon de foot",
71+
"une raquette de tennis",
72+
"un parasol",
73+
"une chaise longue",
74+
"un extincteur",
75+
"un thermos",
76+
"un sac à dos",
77+
"une boussole",
78+
"un vélo",
79+
"un parapluie",
80+
"une machine à écrire",
81+
"un robot",
82+
"un hologramme",
83+
"une éponge",
84+
"un coussin",
85+
"un tapis volant",
86+
"un chapeau melon",
87+
"un fauteuil roulant",
5888
}

pkg/kamoulox/verbs.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,34 @@ var verbs = []string{
5050
"je dessine",
5151
"je teleporte",
5252
"j'observe",
53+
"je grimpe sur",
54+
"je nage dans",
55+
"je m'accroche à",
56+
"je collectionne",
57+
"je jongle avec",
58+
"je lance",
59+
"je détruis",
60+
"je fabrique",
61+
"je peins",
62+
"je sculpte",
63+
"je rampe sous",
64+
"je médite sur",
65+
"je capture",
66+
"je délivre",
67+
"je rends hommage à",
68+
"je déplace",
69+
"je souffle sur",
70+
"je contemple",
71+
"je secoue",
72+
"je ralentis",
73+
"je répare",
74+
"je rassemble",
75+
"je déterre",
76+
"je construis",
77+
"je m'envole avec",
78+
"je réchauffe",
79+
"je refroidis",
80+
"je protège",
81+
"je remixe",
82+
"je réinvente",
5383
}

0 commit comments

Comments
 (0)