xmasTwelve/README.md
2025-12-23 15:36:21 +11:00

3.7 KiB

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