Task 1: "Chinese Zodiac You are given a year $year. Write a script to determine the Chinese Zodiac for the given year $year. Please check out https://en.wikipedia.org/wiki/Chinese_zodiac for more information about it. The animal cycle: Rat, Ox, Tiger, Rabbit, Dragon, Snake, Horse, Goat, Monkey, Rooster, Dog, Pig. The element cycle: Wood, Fire, Earth, Metal, Water. Example 1: Input: 2017 Output: Fire Rooster Example 2: Input: 1938 Output: Earth Tiger " My notes: ok, so seems to be a 12 year cycle of animal names, intertwined with a 10 year cycle of 5 elements, two successive years having the same element each time. Task 2: "What's playing? Submitted by: Albert Croft Working from home, you decided that on occasion you wanted some background noise while working. You threw together a network streamer to continuously loop through the files and launched it in a tmux (or screen) session, giving it a directory tree of files to play. During the day, you connected an audio player to the stream, listening through the workday, closing it when done. For weeks you connect to the stream daily, slowly noticing a gradual drift of the media. After several weeks, you take vacation. When you return, you are pleasantly surprised to find the streamer still running. Before connecting, however, if you consider the puzzle of determining which track is playing. After looking at a few modules to read info regarding the media, a quick bit of coding gave you a file list. The file list is in a simple CSV format, each line containing two fields: the first the number of milliseconds in length, the latter the media's title (this example is of several episodes available from the MercuryTheatre.info): 1709363,"Les Miserables Episode 1: The Bishop (broadcast date: 1937-07-23)" 1723781,"Les Miserables Episode 2: Javert (broadcast date: 1937-07-30)" 1723781,"Les Miserables Episode 3: The Trial (broadcast date: 1937-08-06)" 1678356,"Les Miserables Episode 4: Cosette (broadcast date: 1937-08-13)" 1646043,"Les Miserables Episode 5: The Grave (broadcast date: 1937-08-20)" 1714640,"Les Miserables Episode 6: The Barricade (broadcast date: 1937-08-27)" 1714640,"Les Miserables Episode 7: Conclusion (broadcast date: 1937-09-03)" For this script, you can assume to be provided the following information: * the value of $^T ($BASETIME) of the streamer script, * the value of time(), and * a CSV file containing the media to play consisting of the length in milliseconds and an identifier for the media (title, filename, or other). Write a program to output which file is currently playing. For purposes of this script, you may assume gapless playback, and format the output as you see fit. Optional: Also display the current position in the media as a time-like value. Example: UPDATED: Input parameters as reported by many members [2021-03-08 16:20 UK TIME]. Input: 3 command line parameters: start time, current time, file name # starttime 1606134123 # currenttime 1614591276 # filelist.csv Output: "Les Miserables Episode 1: The Bishop (broadcast date: 1937-07-23)" 00:10:24 " My notes: ok. So basically compute currduration=1000*(currenttime-starttime) (in milliseconds) and then remove any number of complete song-cycles from that, and then work out which song should be playing. Note that song lengths in the CSV file are in milliseconds, and every millisecond counts.