1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
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.
|