jimi
9 years ago
commit
726d24e5eb
3 changed files with 178 additions and 0 deletions
-
80README.md
-
3food_chain.go
-
95food_chain_test.go
@ -0,0 +1,80 @@ |
|||
# Food Chain |
|||
|
|||
Write a program that generates the lyrics of the song 'I Know an Old Lady Who Swallowed a Fly' |
|||
|
|||
Write a program that generates the lyrics to the song |
|||
"I know an old lady who swallowed a fly". While you could |
|||
copy/paste the lyrics, or read them from a file, this |
|||
problem is much more interesting if you approach it |
|||
algorithmically. |
|||
|
|||
This is a [cumulative song](http://en.wikipedia.org/wiki/Cumulative_song) of unknown origin. |
|||
|
|||
This is one of many common variants. |
|||
|
|||
```plain |
|||
I know an old lady who swallowed a fly. |
|||
I don't know why she swallowed the fly. Perhaps she'll die. |
|||
|
|||
I know an old lady who swallowed a spider. |
|||
It wriggled and jiggled and tickled inside her. |
|||
She swallowed the spider to catch the fly. |
|||
I don't know why she swallowed the fly. Perhaps she'll die. |
|||
|
|||
I know an old lady who swallowed a bird. |
|||
How absurd to swallow a bird! |
|||
She swallowed the bird to catch the spider that wriggled and jiggled and tickled inside her. |
|||
She swallowed the spider to catch the fly. |
|||
I don't know why she swallowed the fly. Perhaps she'll die. |
|||
|
|||
I know an old lady who swallowed a cat. |
|||
Imagine that, to swallow a cat! |
|||
She swallowed the cat to catch the bird. |
|||
She swallowed the bird to catch the spider that wriggled and jiggled and tickled inside her. |
|||
She swallowed the spider to catch the fly. |
|||
I don't know why she swallowed the fly. Perhaps she'll die. |
|||
|
|||
I know an old lady who swallowed a dog. |
|||
What a hog, to swallow a dog! |
|||
She swallowed the dog to catch the cat. |
|||
She swallowed the cat to catch the bird. |
|||
She swallowed the bird to catch the spider that wriggled and jiggled and tickled inside her. |
|||
She swallowed the spider to catch the fly. |
|||
I don't know why she swallowed the fly. Perhaps she'll die. |
|||
|
|||
I know an old lady who swallowed a goat. |
|||
Just opened her throat and swallowed a goat! |
|||
She swallowed the goat to catch the dog. |
|||
She swallowed the dog to catch the cat. |
|||
She swallowed the cat to catch the bird. |
|||
She swallowed the bird to catch the spider that wriggled and jiggled and tickled inside her. |
|||
She swallowed the spider to catch the fly. |
|||
I don't know why she swallowed the fly. Perhaps she'll die. |
|||
|
|||
I know an old lady who swallowed a cow. |
|||
I don't know how she swallowed a cow! |
|||
She swallowed the cow to catch the goat. |
|||
She swallowed the goat to catch the dog. |
|||
She swallowed the dog to catch the cat. |
|||
She swallowed the cat to catch the bird. |
|||
She swallowed the bird to catch the spider that wriggled and jiggled and tickled inside her. |
|||
She swallowed the spider to catch the fly. |
|||
I don't know why she swallowed the fly. Perhaps she'll die. |
|||
|
|||
I know an old lady who swallowed a horse. |
|||
She's dead, of course! |
|||
``` |
|||
|
|||
To run the tests simply run the command `go test` in the exercise directory. |
|||
|
|||
If the test suite contains benchmarks, you can run these with the `-bench` |
|||
flag: |
|||
|
|||
go test -bench . |
|||
|
|||
For more detailed info about the Go track see the [help |
|||
page](http://exercism.io/languages/go). |
|||
|
|||
## Source |
|||
|
|||
Wikipedia [view source](http://en.wikipedia.org/wiki/There_Was_an_Old_Lady_Who_Swallowed_a_Fly) |
@ -0,0 +1,3 @@ |
|||
package foodchain |
|||
|
|||
const testVersion = 2 |
@ -0,0 +1,95 @@ |
|||
package foodchain |
|||
|
|||
import ( |
|||
"strings" |
|||
"testing" |
|||
) |
|||
|
|||
const targetTestVersion = 2 |
|||
|
|||
func TestTestVersion(t *testing.T) { |
|||
if testVersion != targetTestVersion { |
|||
t.Errorf("Found testVersion = %v, want %v.", testVersion, targetTestVersion) |
|||
} |
|||
} |
|||
|
|||
var ref = []string{``, |
|||
|
|||
`I know an old lady who swallowed a fly. |
|||
I don't know why she swallowed the fly. Perhaps she'll die.`, |
|||
|
|||
`I know an old lady who swallowed a spider. |
|||
It wriggled and jiggled and tickled inside her. |
|||
She swallowed the spider to catch the fly. |
|||
I don't know why she swallowed the fly. Perhaps she'll die.`, |
|||
|
|||
`I know an old lady who swallowed a bird. |
|||
How absurd to swallow a bird! |
|||
She swallowed the bird to catch the spider that wriggled and jiggled and tickled inside her. |
|||
She swallowed the spider to catch the fly. |
|||
I don't know why she swallowed the fly. Perhaps she'll die.`, |
|||
|
|||
`I know an old lady who swallowed a cat. |
|||
Imagine that, to swallow a cat! |
|||
She swallowed the cat to catch the bird. |
|||
She swallowed the bird to catch the spider that wriggled and jiggled and tickled inside her. |
|||
She swallowed the spider to catch the fly. |
|||
I don't know why she swallowed the fly. Perhaps she'll die.`, |
|||
|
|||
`I know an old lady who swallowed a dog. |
|||
What a hog, to swallow a dog! |
|||
She swallowed the dog to catch the cat. |
|||
She swallowed the cat to catch the bird. |
|||
She swallowed the bird to catch the spider that wriggled and jiggled and tickled inside her. |
|||
She swallowed the spider to catch the fly. |
|||
I don't know why she swallowed the fly. Perhaps she'll die.`, |
|||
|
|||
`I know an old lady who swallowed a goat. |
|||
Just opened her throat and swallowed a goat! |
|||
She swallowed the goat to catch the dog. |
|||
She swallowed the dog to catch the cat. |
|||
She swallowed the cat to catch the bird. |
|||
She swallowed the bird to catch the spider that wriggled and jiggled and tickled inside her. |
|||
She swallowed the spider to catch the fly. |
|||
I don't know why she swallowed the fly. Perhaps she'll die.`, |
|||
|
|||
`I know an old lady who swallowed a cow. |
|||
I don't know how she swallowed a cow! |
|||
She swallowed the cow to catch the goat. |
|||
She swallowed the goat to catch the dog. |
|||
She swallowed the dog to catch the cat. |
|||
She swallowed the cat to catch the bird. |
|||
She swallowed the bird to catch the spider that wriggled and jiggled and tickled inside her. |
|||
She swallowed the spider to catch the fly. |
|||
I don't know why she swallowed the fly. Perhaps she'll die.`, |
|||
|
|||
`I know an old lady who swallowed a horse. |
|||
She's dead, of course!`, |
|||
} |
|||
|
|||
func TestVerse(t *testing.T) { |
|||
for v := 1; v <= 8; v++ { |
|||
if ret := Verse(v); ret != ref[v] { |
|||
t.Fatalf("Verse(%d) =\n%s\n want:\n%s", v, ret, ref[v]) |
|||
} |
|||
} |
|||
} |
|||
|
|||
func TestVerses(t *testing.T) { |
|||
if ret, want := Verses(1, 2), ref[1]+"\n\n"+ref[2]; ret != want { |
|||
t.Fatalf("Verses(1, 2) =\n%s\n want:\n%s", ret, want) |
|||
} |
|||
|
|||
} |
|||
|
|||
func TestSong(t *testing.T) { |
|||
if ret, want := Song(), strings.Join(ref[1:], "\n\n"); ret != want { |
|||
t.Fatalf("Song() =\n%s\n want:\n%s", ret, want) |
|||
} |
|||
} |
|||
|
|||
func BenchmarkSong(b *testing.B) { |
|||
for i := 0; i < b.N; i++ { |
|||
Song() |
|||
} |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue