2018-2019
2018-2019 copied to clipboard
Lecture "Algorithms", exercise 1
What is the result of the execution of the algorithm in Figure 4 using "Peroni"
, "HTML"
, and "Peroni, S., Osborne, F., Di Iorio, A., Nuzzolese, A. G., Poggi, F., Vitali, F., Motta, E. (2017). Research Articles in Simplified HTML: a Web-first format for HTML-based scholarly articles. PeerJ Computer Science 3: e132. e2513. DOI: https://doi.org/10.7717/peerj-cs.132"
as input values?
The result is 2
A="HTML"
B="Peroni"
C="Peroni, S., Osborne, F., Di Iorio, A., Nuzzolese, A. G., Poggi, F., Vitali, F., Motta, E. (2017). Research Articles in Simplified HTML: a Web-first format for HTML-based scholarly articles. PeerJ Computer Science 3: e132. e2513. DOI: https://doi.org/10.7717/peerj-cs.132"
score = 0
if A in C:
score += 1
elif B in C:
score += 1
else:
score = 0
print(score)
First test, is A in C? A is in C ---> score is increased by 1 --> 0 + 1 = 1 Second test, is B in C? B is in C ---> score is increased by 1 --> 1 + 1 = 2 Print(score) --> score is 2
The output will be "2" because both "HTML" and "Peroni" are in the bibliographic entry.
The output is 2, given the fact that both HTML and Peroni are included in the bibliographic entry.
Following the flowchart in Fig. 4 I wrote a Python algorithm to find the result:
word1 = "Peroni"
word2 = "HTML"
bibentry = "Peroni, S., Osborne, F., Di Iorio, A., Nuzzolese, A.G., Poggi, F., Vitali, F., Motta, E. (2017). Research Articles in Simplified HTML: a Web-first format for HTML-based scholarly articles. PeerJ Computer Science 3: e132. e2513. DOI: https://doi.org/10.7717/peerj-cs.132"
result = 0
if word1 in bibentry:
result = result + 1
if word2 in bibentry:
result = result + 1
print (result)
The output is 2!
The result (return) =2 since both the words "HTML" and "Peroni" are contained in the bibliographic entry.
string1 = "Peroni" string2 = "HTML"
bibentry = "Peroni, S., Osborne, F., Di Iorio, A., Nuzzolese, A. G., Poggi, F., Vitali, F., Motta, E. (2017). Research Articles in Simplified HTML: a Web-first format for HTML-based scholarly articles. PeerJ Computer Science 3: e132. e2513. DOI: https://doi.org/10.7717/peerj-cs.132"
if string1 or string2 in bibentry: sum = 1
if string1 and string2 in bibentry: sum = 2 else: sum = 0
print (sum)
output: 2
The output would be 2 because both strings/words, "Peroni" and "HTML", are included in the bibliographic entry, if you consider them both together. If instead you consider just one of them at time, the output would be 1.
Both the words "Peroni" and "HTML" are contained in the bibliographic entry, so the output is 2.
Bibliographic entry: "Peroni, S., Osborne, F., Di Iorio, A., Nuzzolese, A. G., Poggi, F., Vitali, F., Motta, E. (2017). Research Articles in Simplified HTML: a Web-first format for HTML-based scholarly articles. PeerJ Computer Science 3: e132. e2513. DOI: https://doi.org/10.7717/peerj-cs.132"
Both "HTML" and "Peroni" appear in the bibliographic entry, therefore the result is 2.
A = "Peroni"
B = "HTML"
Def = "Peroni, S., Osborne, F., Di Iorio, A., Nuzzolese, A. G., Poggi, F., Vitali, F., Motta, E. (2017). Research Articles in Simplified HTML: a Web-first format for HTML-based scholarly articles. PeerJ Computer Science 3: e132. e2513. DOI: https://doi.org/10.7717/peerj-cs.132"
if A or B in Def:
sum = 1
if A and B in Def:
sum = 2
else:
sum = 0
print `(sum)`
output = 2
“Peroni” and “HTML” are both parts of the input value. Hence, the result is 2.
Followed Path: … —> Initialise the result value to 0 —> The first word (“Peroni”) is in the bibliography entry —> Sum 1 to the result value —> The second word (“HTML”) is in the bibliography entry —> Sum 1 to the result value —> Return the result value (“2”) —> …
@delfimpandiani, while the answer to the exercise is correct, the pseudocode describe a different flow, in particular in the instruction:
elif B in C:
This instruction will be executed if and only if the condition in the previous if
is not satisfied. Thus, following your code, the actual result that will be returned in this case should be 1.
Similarly, @simayguzel and @ilsamoano, the two if
in your pseudocode make the whole process erroneus, even if you returned the corrent answer to the question. In fact, if you run your pseodocode with a different input, e.g. by substituting the first word "Peroni" with "Pippo", you will see that the algorithm will return 0 even if you expected to get a 1.
Hi Prof, thanks for the heads up. I’ve tried to sub “Peroni” with “Pippo”, but my code still gives 2 as a result, not 0 and neither 1.
A = "Pippo"
B = "HTML"
Def = "Peroni, S., Osborne, F., Di Iorio, A., Nuzzolese, A. G., Poggi, F., Vitali, F., Motta, E. (2017). Research Articles in Simplified HTML: a Web-first format for HTML-based scholarly articles. PeerJ Computer Science 3: e132. e2513. DOI: https://doi.org/10.7717/peerj-cs.132"
if A or B in Def:
sum = 1
if A and B in Def:
sum = 2
else:
sum = 0
print (sum)
2
If I change both the values of A and B the result is 0 despite “Computer” is a word in Def
A= "Computer"
B = "ojojo"
Def = "Peroni, S., Osborne, F., Di Iorio, A., Nuzzolese, A. G., Poggi, F., Vitali, F., Motta, E. (2017). Research Articles in Simplified HTML: a Web-first format for HTML-based scholarly articles. PeerJ Computer Science 3: e132. e2513. DOI: https://doi.org/10.7717/peerj-cs.132"
if A or B in Def:
sum = 1
if A and B in Def:
sum = 2
else:
sum = 0
print (sum)
0
@ilsamoano and @simayguzel
Sorry guys, you are totally right. I really don't know how I've read "elif" instead of "if".
Apologies.