Last active
November 10, 2023 01:16
-
-
Save sivsushruth/cd9ac5b11bc77ac621bf to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
defmodule HeyJude do | |
@lines [["make it bad", "be afraid", "let me down"], ["Take a sad song and make it better", "You were made to go out and get her", "You have found her, now go and get her"]] | |
def lyrics do | |
[intro] | |
|> verse(0) | |
|> verse(1) | |
|> chorus(0) | |
|> verse(2) | |
|> chorus(1) | |
|> verse(3) | |
|> outro | |
|> List.flatten | |
|> Enum.join("\n") | |
end | |
def intro do | |
"The Beatles: Hey Jude in Elixir (programming) Lyrics © SONY/ATV TUNES LLC; SONY BEATLES LTD" | |
end | |
def verse(current_lyrics, verse_number) do | |
lines = (0..3) | |
|> Enum.map(&(line(verse_number, &1))) | |
[lines] ++ current_lyrics | |
|> Enum.reverse | |
end | |
def line(verse_number, 2) do | |
case {verse_number, rem(verse_number + 1, 2)} do | |
{1, 0} -> "The minute you let her under your skin" | |
{1, _} -> "The minute you let her into your heart" | |
{_, 0} -> "Remember to let her under your skin" | |
{_, _} -> "Remember to let her into your heart" | |
end | |
end | |
def line(verse_number, 3) do | |
case verse_number do | |
3 -> "Then you'll" | |
_ -> "Then you" | |
end | |
<> case rem(verse_number, 2) do | |
0 -> " can start " | |
_ -> " begin " | |
end | |
<> "to make it " | |
<> case verse_number do | |
3 -> "\nBetter, " <> String.duplicate("better, ", 5) <> "oh" | |
_ -> " better " | |
end | |
end | |
def line(verse_number, line_number) do | |
temp_line = @lines | |
|> Enum.at(rem(line_number, 3)) | |
|> Enum.at(rem(verse_number, 3)) | |
case rem(line_number, 3) do | |
0 -> "Hey Jude, don't " <> temp_line | |
_ -> temp_line | |
end | |
end | |
def chorus(current_lyrics, 0) do | |
["And anytime you feel the pain, hey Jude, refrain", | |
"Don't carry the world upon your shoulders", | |
"For well you know that it's a fool who plays it cool", | |
"By making his world a little colder"] ++ current_lyrics | |
|> Enum.reverse | |
end | |
def chorus(current_lyrics, 1) do | |
["So let it out and let it in, hey Jude, begin,", | |
"You're waiting for someone to perform with.", | |
"And don't you know that it's just you, hey Jude, you'll do,", | |
"The movement you need is on your shoulder"] ++ current_lyrics | |
|> Enum.reverse | |
end | |
def outro(current_lyrics) do | |
[String.duplicate("Nah nah nah nah nah nah, nah nah nah, hey Jude \n", 10)] ++ current_lyrics | |
|> Enum.reverse | |
end | |
end | |
IO.puts HeyJude.lyrics |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hey Jude, don't make it bad
Take a sad song and make it better
Remember to let her into your heart
Then you can start to make it better
Hey Jude, don't be afraid
You were made to go out and get her
The minute you let her under your skin
Then you begin to make it better
And anytime you feel the pain, hey Jude, refrain
Don't carry the world upon your shoulders
For well you know that it's a fool who plays it cool
By making his world a little colder
Hey Jude, don't let me down
You have found her, now go and get her
Remember to let her into your heart
Then you can start to make it better
So let it out and let it in, hey Jude, begin,
You're waiting for someone to perform with.
And don't you know that it's just you, hey Jude, you'll do,
The movement you need is on your shoulder.
Hey Jude, don't make it bad
Take a sad song and make it better
Remember to let her under your skin
Then you'll begin to make it
Better, better, better, better, better, better, oh.
Nah nah nah nah nah nah, nah nah nah, hey Jude
Nah nah nah nah nah nah, nah nah nah, hey Jude
Nah nah nah nah nah nah, nah nah nah, hey Jude
Nah nah nah nah nah nah, nah nah nah, hey Jude
Nah nah nah nah nah nah, nah nah nah, hey Jude
Nah nah nah nah nah nah, nah nah nah, hey Jude
Nah nah nah nah nah nah, nah nah nah, hey Jude
Nah nah nah nah nah nah, nah nah nah, hey Jude
Nah nah nah nah nah nah, nah nah nah, hey Jude
Nah nah nah nah nah nah, nah nah nah, hey Jude