Skip to content

Commit 0b4de79

Browse files
Complete twelve-days: implement recite with tuples, add exemplar.py and README.md, update example.py, verify meta files
1 parent eedf04a commit 0b4de79

4 files changed

Lines changed: 92 additions & 30 deletions

File tree

Lines changed: 28 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,28 @@
1-
GIFTS = ['twelve Drummers Drumming',
2-
'eleven Pipers Piping',
3-
'ten Lords-a-Leaping',
4-
'nine Ladies Dancing',
5-
'eight Maids-a-Milking',
6-
'seven Swans-a-Swimming',
7-
'six Geese-a-Laying',
8-
'five Gold Rings',
9-
'four Calling Birds',
10-
'three French Hens',
11-
'two Turtle Doves',
12-
'a Partridge in a Pear Tree']
13-
14-
ORDINAL = [None, 'first', 'second', 'third', 'fourth', 'fifth', 'sixth',
15-
'seventh', 'eighth', 'ninth', 'tenth', 'eleventh', 'twelfth']
16-
17-
18-
def verse(day_number):
19-
gifts = GIFTS[-day_number:]
20-
21-
if len(gifts) > 1:
22-
gifts[:-1] = [', '.join(gifts[:-1])]
23-
24-
gifts = ', and '.join(gifts)
25-
return f'On the {ORDINAL[day_number]} day of Christmas my true love gave to me: {gifts}.'
26-
27-
28-
def recite(start, end):
29-
return [verse(number) for number in range(start, end + 1)]
1+
def recite(start_verse, end_verse):
2+
gifts = (
3+
"a Partridge in a Pear Tree",
4+
"two Turtle Doves",
5+
"three French Hens",
6+
"four Calling Birds",
7+
"five Gold Rings",
8+
"six Geese-a-Laying",
9+
"seven Swans-a-Swimming",
10+
"eight Maids-a-Milking",
11+
"nine Ladies Dancing",
12+
"ten Lords-a-Leaping",
13+
"eleven Pipers Piping",
14+
"twelve Drummers Drumming"
15+
)
16+
ordinals = (
17+
"first", "second", "third", "fourth", "fifth", "sixth",
18+
"seventh", "eighth", "ninth", "tenth", "eleventh", "twelfth"
19+
)
20+
21+
def build_verse(n):
22+
day = n - 1
23+
verse = f"On the {ordinals[day]} day of Christmas my true love gave to me: "
24+
verse_gifts = [f"and {gifts[0]}" if i == 0 and day > 0 else gifts[i] for i in range(day, -1, -1)]
25+
verse += ", ".join(verse_gifts) + "."
26+
return verse
27+
28+
return [build_verse(n) for n in range(start_verse, end_verse + 1)]
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
def recite(start_verse, end_verse):
2+
gifts = (
3+
"a Partridge in a Pear Tree",
4+
"two Turtle Doves",
5+
"three French Hens",
6+
"four Calling Birds",
7+
"five Gold Rings",
8+
"six Geese-a-Laying",
9+
"seven Swans-a-Swimming",
10+
"eight Maids-a-Milking",
11+
"nine Ladies Dancing",
12+
"ten Lords-a-Leaping",
13+
"eleven Pipers Piping",
14+
"twelve Drummers Drumming"
15+
)
16+
ordinals = (
17+
"first", "second", "third", "fourth", "fifth", "sixth",
18+
"seventh", "eighth", "ninth", "tenth", "eleventh", "twelfth"
19+
)
20+
21+
def build_verse(n):
22+
day = n - 1
23+
verse = f"On the {ordinals[day]} day of Christmas my true love gave to me: "
24+
verse_gifts = [f"and {gifts[0]}" if i == 0 and day > 0 else gifts[i] for i in range(day, -1, -1)]
25+
verse += ", ".join(verse_gifts) + "."
26+
return verse
27+
28+
return [build_verse(n) for n in range(start_verse, end_verse + 1)]
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Twelve Days
2+
3+
Output the lyrics to 'The Twelve Days of Christmas'.
4+
5+
```text
6+
On the first day of Christmas my true love gave to me: a Partridge in a Pear Tree.
7+
8+
On the second day of Christmas my true love gave to me: two Turtle Doves, and a Partridge in a Pear Tree.
9+
...
Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,28 @@
11
def recite(start_verse, end_verse):
2-
pass
2+
gifts = (
3+
"a Partridge in a Pear Tree",
4+
"two Turtle Doves",
5+
"three French Hens",
6+
"four Calling Birds",
7+
"five Gold Rings",
8+
"six Geese-a-Laying",
9+
"seven Swans-a-Swimming",
10+
"eight Maids-a-Milking",
11+
"nine Ladies Dancing",
12+
"ten Lords-a-Leaping",
13+
"eleven Pipers Piping",
14+
"twelve Drummers Drumming"
15+
)
16+
ordinals = (
17+
"first", "second", "third", "fourth", "fifth", "sixth",
18+
"seventh", "eighth", "ninth", "tenth", "eleventh", "twelfth"
19+
)
20+
21+
def build_verse(n):
22+
day = n - 1
23+
verse = f"On the {ordinals[day]} day of Christmas my true love gave to me: "
24+
verse_gifts = [f"and {gifts[0]}" if i == 0 and day > 0 else gifts[i] for i in range(day, -1, -1)]
25+
verse += ", ".join(verse_gifts) + "."
26+
return verse
27+
28+
return [build_verse(n) for n in range(start_verse, end_verse + 1)]

0 commit comments

Comments
 (0)