diff --git a/README.md b/README.md index 4d16178..47a4e45 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,58 @@ 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: +the offset into the lists of alternatives at the end of this page. + +ADDENDUM: I added a flag which makes the script pick randomly from the list of +alternatives, which gives Oulipian variants on the original which have the quality +that the lines (and the spacing of the words) are the same length, for example: + +``` +On the twelfth day of Christmas my true love gave to me +Eleven drummers drumming +Eleven French piping +Ten lords a-leaping +Nine French dancing +Seven geese a-leaping +Eight geese a-swimming +Ten swans a-laying +Nine gold doves +Four calling rings +Eight French hens +Six French birds +And a partridge in a pear tree + +On the twelfth day of Christmas my true love gave to me +Eleven drummers drumming +Eleven turtle piping +Ten geese a-milking +Nine French dancing +Eight maids a-leaping +Eight swans a-swimming +Ten lords drumming +Five gold rings +Nine calling rings +Three ladies hens +Six French doves +And a partridge in a pear tree + +On the twelfth day of Christmas my true love gave to me +Eleven drummers drumming +Eleven turtle piping +Six maids a-milking +Five ladies dancing +Three lords a-milking +Seven maids a-swimming +Six maids drumming +Nine gold birds +Four calling rings +Seven ladies hens +Ten French rings +And a partridge in a pear tree +``` + +[Original](original.txt) | [Random 1](random1.txt) | [Random 2](random2.txt) | [Random 3](random3.txt) + ``` two turtle doves diff --git a/original.txt b/original.txt new file mode 100644 index 0000000..8592bee --- /dev/null +++ b/original.txt @@ -0,0 +1,103 @@ +On the first day of Christmas my true love gave to me +A partridge in a pear tree + +On the second day of Christmas my true love gave to me +Two turtle doves +And a partridge in a pear tree + +On the third day of Christmas my true love gave to me +Three French hens +Two turtle doves +And a partridge in a pear tree + +On the fourth day of Christmas my true love gave to me +Four calling birds +Three French hens +Two turtle doves +And a partridge in a pear tree + +On the fifth day of Christmas my true love gave to me +Five gold rings +Four calling birds +Three French hens +Two turtle doves +And a partridge in a pear tree + +On the sixth day of Christmas my true love gave to me +Six geese a-laying +Five gold rings +Four calling birds +Three French hens +Two turtle doves +And a partridge in a pear tree + +On the seventh day of Christmas my true love gave to me +Seven swans a-swimming +Six geese a-laying +Five gold rings +Four calling birds +Three French hens +Two turtle doves +And a partridge in a pear tree + +On the eighth day of Christmas my true love gave to me +Eight maids a-milking +Seven swans a-swimming +Six geese a-laying +Five gold rings +Four calling birds +Three French hens +Two turtle doves +And a partridge in a pear tree + +On the ninth day of Christmas my true love gave to me +Nine ladies dancing +Eight maids a-milking +Seven swans a-swimming +Six geese a-laying +Five gold rings +Four calling birds +Three French hens +Two turtle doves +And a partridge in a pear tree + +On the tenth day of Christmas my true love gave to me +Ten lords a-leaping +Nine ladies dancing +Eight maids a-milking +Seven swans a-swimming +Six geese a-laying +Five gold rings +Four calling birds +Three French hens +Two turtle doves +And a partridge in a pear tree + +On the eleventh day of Christmas my true love gave to me +Eleven pipers piping +Ten lords a-leaping +Nine ladies dancing +Eight maids a-milking +Seven swans a-swimming +Six geese a-laying +Five gold rings +Four calling birds +Three French hens +Two turtle doves +And a partridge in a pear tree + +On the twelfth day of Christmas my true love gave to me +Twelve drummers drumming +Eleven pipers piping +Ten lords a-leaping +Nine ladies dancing +Eight maids a-milking +Seven swans a-swimming +Six geese a-laying +Five gold rings +Four calling birds +Three French hens +Two turtle doves +And a partridge in a pear tree + + diff --git a/random1.txt b/random1.txt new file mode 100644 index 0000000..7d73565 --- /dev/null +++ b/random1.txt @@ -0,0 +1,103 @@ +On the first day of Christmas my true love gave to me +A partridge in a pear tree + +On the second day of Christmas my true love gave to me +Six French birds +And a partridge in a pear tree + +On the third day of Christmas my true love gave to me +Eight French hens +Six French birds +And a partridge in a pear tree + +On the fourth day of Christmas my true love gave to me +Four calling rings +Eight French hens +Six French birds +And a partridge in a pear tree + +On the fifth day of Christmas my true love gave to me +Nine gold doves +Four calling rings +Eight French hens +Six French birds +And a partridge in a pear tree + +On the sixth day of Christmas my true love gave to me +Ten swans a-laying +Nine gold doves +Four calling rings +Eight French hens +Six French birds +And a partridge in a pear tree + +On the seventh day of Christmas my true love gave to me +Eight geese a-swimming +Ten swans a-laying +Nine gold doves +Four calling rings +Eight French hens +Six French birds +And a partridge in a pear tree + +On the eighth day of Christmas my true love gave to me +Seven geese a-leaping +Eight geese a-swimming +Ten swans a-laying +Nine gold doves +Four calling rings +Eight French hens +Six French birds +And a partridge in a pear tree + +On the ninth day of Christmas my true love gave to me +Nine French dancing +Seven geese a-leaping +Eight geese a-swimming +Ten swans a-laying +Nine gold doves +Four calling rings +Eight French hens +Six French birds +And a partridge in a pear tree + +On the tenth day of Christmas my true love gave to me +Ten lords a-leaping +Nine French dancing +Seven geese a-leaping +Eight geese a-swimming +Ten swans a-laying +Nine gold doves +Four calling rings +Eight French hens +Six French birds +And a partridge in a pear tree + +On the eleventh day of Christmas my true love gave to me +Eleven French piping +Ten lords a-leaping +Nine French dancing +Seven geese a-leaping +Eight geese a-swimming +Ten swans a-laying +Nine gold doves +Four calling rings +Eight French hens +Six French birds +And a partridge in a pear tree + +On the twelfth day of Christmas my true love gave to me +Eleven drummers drumming +Eleven French piping +Ten lords a-leaping +Nine French dancing +Seven geese a-leaping +Eight geese a-swimming +Ten swans a-laying +Nine gold doves +Four calling rings +Eight French hens +Six French birds +And a partridge in a pear tree + + diff --git a/random2.txt b/random2.txt new file mode 100644 index 0000000..018a2ce --- /dev/null +++ b/random2.txt @@ -0,0 +1,103 @@ +On the first day of Christmas my true love gave to me +A partridge in a pear tree + +On the second day of Christmas my true love gave to me +Six French doves +And a partridge in a pear tree + +On the third day of Christmas my true love gave to me +Three ladies hens +Six French doves +And a partridge in a pear tree + +On the fourth day of Christmas my true love gave to me +Nine calling rings +Three ladies hens +Six French doves +And a partridge in a pear tree + +On the fifth day of Christmas my true love gave to me +Five gold rings +Nine calling rings +Three ladies hens +Six French doves +And a partridge in a pear tree + +On the sixth day of Christmas my true love gave to me +Ten lords drumming +Five gold rings +Nine calling rings +Three ladies hens +Six French doves +And a partridge in a pear tree + +On the seventh day of Christmas my true love gave to me +Eight swans a-swimming +Ten lords drumming +Five gold rings +Nine calling rings +Three ladies hens +Six French doves +And a partridge in a pear tree + +On the eighth day of Christmas my true love gave to me +Eight maids a-leaping +Eight swans a-swimming +Ten lords drumming +Five gold rings +Nine calling rings +Three ladies hens +Six French doves +And a partridge in a pear tree + +On the ninth day of Christmas my true love gave to me +Nine French dancing +Eight maids a-leaping +Eight swans a-swimming +Ten lords drumming +Five gold rings +Nine calling rings +Three ladies hens +Six French doves +And a partridge in a pear tree + +On the tenth day of Christmas my true love gave to me +Ten geese a-milking +Nine French dancing +Eight maids a-leaping +Eight swans a-swimming +Ten lords drumming +Five gold rings +Nine calling rings +Three ladies hens +Six French doves +And a partridge in a pear tree + +On the eleventh day of Christmas my true love gave to me +Eleven turtle piping +Ten geese a-milking +Nine French dancing +Eight maids a-leaping +Eight swans a-swimming +Ten lords drumming +Five gold rings +Nine calling rings +Three ladies hens +Six French doves +And a partridge in a pear tree + +On the twelfth day of Christmas my true love gave to me +Eleven drummers drumming +Eleven turtle piping +Ten geese a-milking +Nine French dancing +Eight maids a-leaping +Eight swans a-swimming +Ten lords drumming +Five gold rings +Nine calling rings +Three ladies hens +Six French doves +And a partridge in a pear tree + + diff --git a/random3.txt b/random3.txt new file mode 100644 index 0000000..245d37b --- /dev/null +++ b/random3.txt @@ -0,0 +1,103 @@ +On the first day of Christmas my true love gave to me +A partridge in a pear tree + +On the second day of Christmas my true love gave to me +Ten French rings +And a partridge in a pear tree + +On the third day of Christmas my true love gave to me +Seven ladies hens +Ten French rings +And a partridge in a pear tree + +On the fourth day of Christmas my true love gave to me +Four calling rings +Seven ladies hens +Ten French rings +And a partridge in a pear tree + +On the fifth day of Christmas my true love gave to me +Nine gold birds +Four calling rings +Seven ladies hens +Ten French rings +And a partridge in a pear tree + +On the sixth day of Christmas my true love gave to me +Six maids drumming +Nine gold birds +Four calling rings +Seven ladies hens +Ten French rings +And a partridge in a pear tree + +On the seventh day of Christmas my true love gave to me +Seven maids a-swimming +Six maids drumming +Nine gold birds +Four calling rings +Seven ladies hens +Ten French rings +And a partridge in a pear tree + +On the eighth day of Christmas my true love gave to me +Three lords a-milking +Seven maids a-swimming +Six maids drumming +Nine gold birds +Four calling rings +Seven ladies hens +Ten French rings +And a partridge in a pear tree + +On the ninth day of Christmas my true love gave to me +Five ladies dancing +Three lords a-milking +Seven maids a-swimming +Six maids drumming +Nine gold birds +Four calling rings +Seven ladies hens +Ten French rings +And a partridge in a pear tree + +On the tenth day of Christmas my true love gave to me +Six maids a-milking +Five ladies dancing +Three lords a-milking +Seven maids a-swimming +Six maids drumming +Nine gold birds +Four calling rings +Seven ladies hens +Ten French rings +And a partridge in a pear tree + +On the eleventh day of Christmas my true love gave to me +Eleven turtle piping +Six maids a-milking +Five ladies dancing +Three lords a-milking +Seven maids a-swimming +Six maids drumming +Nine gold birds +Four calling rings +Seven ladies hens +Ten French rings +And a partridge in a pear tree + +On the twelfth day of Christmas my true love gave to me +Eleven drummers drumming +Eleven turtle piping +Six maids a-milking +Five ladies dancing +Three lords a-milking +Seven maids a-swimming +Six maids drumming +Nine gold birds +Four calling rings +Seven ladies hens +Ten French rings +And a partridge in a pear tree + +