207 lines
3.7 KiB
Markdown
207 lines
3.7 KiB
Markdown
# xmasTwelve
|
|
|
|
A Christmas challenge: write a program to generate the lyrics to The Twelve
|
|
Days of Christmas.
|
|
|
|
This is the most stupidly Haskell way I could think of: it makes a product of
|
|
all the combinations of "$NUMBER $WORD $WORD" and then filters them. Filtering
|
|
on word length alone wasn't enough, so the signature for each gift also includes
|
|
the offset into the following lists:
|
|
|
|
```
|
|
two turtle doves
|
|
two turtle birds
|
|
two turtle rings
|
|
two French doves
|
|
two French birds
|
|
two French rings
|
|
two ladies doves
|
|
two ladies birds
|
|
two ladies rings
|
|
two pipers doves
|
|
two pipers birds
|
|
two pipers rings
|
|
six turtle doves
|
|
six turtle birds
|
|
six turtle rings
|
|
six French doves
|
|
six French birds
|
|
six French rings
|
|
six ladies doves
|
|
six ladies birds
|
|
six ladies rings
|
|
six pipers doves
|
|
six pipers birds
|
|
six pipers rings
|
|
ten turtle doves
|
|
ten turtle birds
|
|
ten turtle rings
|
|
ten French doves
|
|
ten French birds
|
|
ten French rings
|
|
ten ladies doves
|
|
ten ladies birds
|
|
ten ladies rings
|
|
ten pipers doves
|
|
ten pipers birds
|
|
ten pipers rings
|
|
|
|
|
|
three turtle hens
|
|
three French hens
|
|
three ladies hens
|
|
three pipers hens
|
|
seven turtle hens
|
|
seven French hens
|
|
seven ladies hens
|
|
seven pipers hens
|
|
eight turtle hens
|
|
eight French hens
|
|
eight ladies hens
|
|
eight pipers hens
|
|
|
|
|
|
four calling doves
|
|
four calling birds
|
|
four calling rings
|
|
five calling doves
|
|
five calling birds
|
|
five calling rings
|
|
nine calling doves
|
|
nine calling birds
|
|
nine calling rings
|
|
|
|
|
|
four gold doves
|
|
four gold birds
|
|
four gold rings
|
|
five gold doves
|
|
five gold birds
|
|
five gold rings
|
|
nine gold doves
|
|
nine gold birds
|
|
nine gold rings
|
|
|
|
|
|
two geese a-laying
|
|
two geese drumming
|
|
two swans a-laying
|
|
two swans drumming
|
|
two maids a-laying
|
|
two maids drumming
|
|
two lords a-laying
|
|
two lords drumming
|
|
six geese a-laying
|
|
six geese drumming
|
|
six swans a-laying
|
|
six swans drumming
|
|
six maids a-laying
|
|
six maids drumming
|
|
six lords a-laying
|
|
six lords drumming
|
|
ten geese a-laying
|
|
ten geese drumming
|
|
ten swans a-laying
|
|
ten swans drumming
|
|
ten maids a-laying
|
|
ten maids drumming
|
|
ten lords a-laying
|
|
ten lords drumming
|
|
|
|
|
|
three geese a-swimming
|
|
three swans a-swimming
|
|
three maids a-swimming
|
|
three lords a-swimming
|
|
seven geese a-swimming
|
|
seven swans a-swimming
|
|
seven maids a-swimming
|
|
seven lords a-swimming
|
|
eight geese a-swimming
|
|
eight swans a-swimming
|
|
eight maids a-swimming
|
|
eight lords a-swimming
|
|
|
|
|
|
three geese a-milking
|
|
three geese a-leaping
|
|
three swans a-milking
|
|
three swans a-leaping
|
|
three maids a-milking
|
|
three maids a-leaping
|
|
three lords a-milking
|
|
three lords a-leaping
|
|
seven geese a-milking
|
|
seven geese a-leaping
|
|
seven swans a-milking
|
|
seven swans a-leaping
|
|
seven maids a-milking
|
|
seven maids a-leaping
|
|
seven lords a-milking
|
|
seven lords a-leaping
|
|
eight geese a-milking
|
|
eight geese a-leaping
|
|
eight swans a-milking
|
|
eight swans a-leaping
|
|
eight maids a-milking
|
|
eight maids a-leaping
|
|
eight lords a-milking
|
|
eight lords a-leaping
|
|
|
|
|
|
four turtle dancing
|
|
four French dancing
|
|
four ladies dancing
|
|
four pipers dancing
|
|
five turtle dancing
|
|
five French dancing
|
|
five ladies dancing
|
|
five pipers dancing
|
|
nine turtle dancing
|
|
nine French dancing
|
|
nine ladies dancing
|
|
nine pipers dancing
|
|
|
|
|
|
two geese a-milking
|
|
two geese a-leaping
|
|
two swans a-milking
|
|
two swans a-leaping
|
|
two maids a-milking
|
|
two maids a-leaping
|
|
two lords a-milking
|
|
two lords a-leaping
|
|
six geese a-milking
|
|
six geese a-leaping
|
|
six swans a-milking
|
|
six swans a-leaping
|
|
six maids a-milking
|
|
six maids a-leaping
|
|
six lords a-milking
|
|
six lords a-leaping
|
|
ten geese a-milking
|
|
ten geese a-leaping
|
|
ten swans a-milking
|
|
ten swans a-leaping
|
|
ten maids a-milking
|
|
ten maids a-leaping
|
|
ten lords a-milking
|
|
ten lords a-leaping
|
|
|
|
|
|
eleven turtle piping
|
|
eleven French piping
|
|
eleven ladies piping
|
|
eleven pipers piping
|
|
twelve turtle piping
|
|
twelve French piping
|
|
twelve ladies piping
|
|
twelve pipers piping
|
|
|
|
|
|
eleven drummers a-laying
|
|
eleven drummers drumming
|
|
twelve drummers a-laying
|
|
twelve drummers drumming
|
|
```
|