lots of exercises in java... from https://github.com/exercism/java

FoodChain.java 2.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import java.util.stream.IntStream;
  2. public class FoodChain {
  3. private static final String[] ANIMALS = {
  4. "fly",
  5. "spider",
  6. "bird",
  7. "cat",
  8. "dog",
  9. "goat",
  10. "cow"
  11. };
  12. private static final String[] FOLLOWUPS = {
  13. "It wriggled and jiggled and tickled inside her.",
  14. "How absurd to swallow a bird!",
  15. "Imagine that, to swallow a cat!",
  16. "What a hog, to swallow a dog!",
  17. "Just opened her throat and swallowed a goat!",
  18. "I don't know how she swallowed a cow!"
  19. };
  20. public String verse(int verse) {
  21. return verseBeginning(verse) + verseMiddle(verse) + verseEnding(verse);
  22. }
  23. public String verses(int startVerse, int endVerse) {
  24. String[] verses = new String[endVerse - startVerse + 1];
  25. for (int i = 0; i <= endVerse - startVerse; i++) {
  26. verses[i] = verse(i + 1);
  27. }
  28. return String.join("\n\n", verses);
  29. }
  30. private String verseBeginning(int verse) {
  31. if (verse == 1) {
  32. return "I know an old lady who swallowed a fly.\n";
  33. }
  34. if (verse == 8) {
  35. return "I know an old lady who swallowed a horse.\n";
  36. }
  37. return "I know an old lady who swallowed a " + ANIMALS[verse - 1] + ".\n" + FOLLOWUPS[verse - 2] + "\n";
  38. }
  39. private String verseMiddle(int verse) {
  40. if (verse == 1 || verse == 8) {
  41. return "";
  42. }
  43. String[] lines = new String[verse - 1];
  44. for (int i = verse - 1; i >= 1; i--) {
  45. lines[lines.length - i] = "She swallowed the " +
  46. ANIMALS[i] + " to catch the " + ANIMALS[i - 1] +
  47. (i == 2 ? " that wriggled and jiggled and tickled inside her." : ".");
  48. }
  49. return String.join("\n", lines) + "\n";
  50. }
  51. private String verseEnding(int verse) {
  52. if (verse == 8) {
  53. return "She's dead, of course!";
  54. }
  55. return "I don't know why she swallowed the fly. Perhaps she'll die.";
  56. }
  57. }