comp-think / 2018-2019

The GitHub repository containing all the material related to the Computational Thinking and Programming course of the Digital Humanities and Digital Knowledge degree at the University of Bologna (a.a. 2018/2019).
Other
30 stars 8 forks source link

Lecture "Algorithms", exercise 1 #4

Open essepuntato opened 5 years ago

essepuntato commented 5 years ago

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?

delfimpandiani commented 5 years ago

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

MattiaSpadoni commented 5 years ago

The output will be "2" because both "HTML" and "Peroni" are in the bibliographic entry.

friendlynihilist commented 5 years ago

The output is 2, given the fact that both HTML and Peroni are included in the bibliographic entry.

mangiafrangette commented 5 years ago

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!

lisasiurina commented 5 years ago

The result (return) =2 since both the words "HTML" and "Peroni" are contained in the bibliographic entry.

simayguzel commented 5 years ago

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

VittoriaMoccia commented 5 years ago

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.

giuliapl commented 5 years ago

Both the words "Peroni" and "HTML" are contained in the bibliographic entry, so the output is 2.

tceron commented 5 years ago

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.

ilsamoano commented 5 years ago
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

SeverinJB commented 5 years ago

“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”) —> …

essepuntato commented 5 years ago

@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.

ilsamoano commented 5 years ago

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
essepuntato commented 5 years ago

@ilsamoano and @simayguzel

Sorry guys, you are totally right. I really don't know how I've read "elif" instead of "if".

Apologies.