aboutsummaryrefslogtreecommitdiffstats
path: root/bot/resources
diff options
context:
space:
mode:
authorGravatar Shivansh-007 <[email protected]>2021-09-07 16:41:27 +0530
committerGravatar GitHub <[email protected]>2021-09-07 04:11:27 -0700
commitedb80b90186b7ebfcce8b3dae55fedb62a77b912 (patch)
tree05072d2057bc592f71ce9e2be64ff634e61fc1d0 /bot/resources
parentCI: check license compatibility (#855) (diff)
Wikiguess Game (#618)
* (trivia-quiz): Add Wikipedia Guess Game This commit also moves all the 'dynamic' question generator to a separate class. Closes: #446 * (trivia quiz): Use tuples for command aliases * (trivia quiz): Edit congratulations message * (trivia quiz): Use default dict for storing player scores * (trivia quiz): 'done_question' to 'done_questions' * Add space after 'Congratulations' word * Use classmethods for dynamically generating questions * Don't add wiki category if max error fetches hit If the task hit max error fetches, which is 3 currently, it would remove wikipedia from listed categories and not add it to loaded questions. If it doesn't hit max fetches, then it adds them. * Don't hardcode the number of questions in RULES * Add information field only if it exists * Add "cs" and "python" categories to the `.quiz` command * add 30 questions each under the categories "cs" and "python" add the two categories into the code and modify the starting phase Co-authored-by: Xithrius <[email protected]> Co-authored-by: ToxicKidz <[email protected]> * refactor: Use yesterday's most read to make trivia questions Since random wikipedia article guess questions weren't really "knowledgeable", no one could really guess it or gain any "good" knowledge from them, so after asking wookie (this commits mentions his review comments above also), I decided to use these. * refactor: Logic to remove pronounciations from question Co-authored-by: wookie184 <[email protected]> * fix: Set to correct question limit If the number of questions are less then the default limit which can happen in the case of wikipedia guess game as it is dependent on the most read articiles on wikipedia, it would create a infinite loop sending us into infinite amount of errors, so let's prevent that, thanks wookie * chore: Add comment for d5f8205 change * refactor: Remove double mention of dataclass in quizentry * chore: Use r"" over noqa We can use r"", a raw string, here to make it clear that \* and \s aren't supposed to be handled as escape sequences and just use the "raw string". * fix: Correct off by one bug Originally, before this commit, we checked the number of questions left by comparing `len(done_questions) > self.question_limit`, so question limit had to be 1 since if it wasn't we would compare 7 > 7, which would be false and then it would send another question. To correct this bug, we now use == comparision on the two, so if the number of done questions is same as the question limit it means that the round is over. I have changed the relevant parts of the code to reflect this change i.e. where-ever we did +-1 due to the off by one bug. * refactor: Noramlize the title to remove all punctuations Since the title can sometimes contain punctuations making it very difficult to get the matching answer to the question, we originally removed all such questions. This took the question count down :( and wasn't an effective way. Therefore now we keep them but as normalized, yay! I have also updated the code documentation to make the process much clearer to anyone reading the "normalizing" code section of the wiki questions generator. * refactor: Keep answers as a list & not ",".join() Wasn't fitting in character limit so shorterned it ^^ lol. Okay, getting to the point, this mentions fix error's comment of making quiz entry except the answers as a list and not as a string which could a comma joined list. The same structure was in the json resource, where multiple answers where joined with commas. This didn't allow you to use commas in answers. So I went ahead and did a bit more than requested to change the json structure and make `answers` a list. Also now all questions are in the form of the quiz entry to keep it same through out the code and var tolerance has become a valid param in QuizEntry, this is done because it was differing between questions, if not needed this would make the process to add `var_tol` as a argument to the json easier. And that's it! Co-authored-by: Objectivitix <[email protected]> Co-authored-by: Xithrius <[email protected]> Co-authored-by: ToxicKidz <[email protected]> Co-authored-by: wookie184 <[email protected]>
Diffstat (limited to 'bot/resources')
-rw-r--r--bot/resources/fun/trivia_quiz.json94
1 files changed, 47 insertions, 47 deletions
diff --git a/bot/resources/fun/trivia_quiz.json b/bot/resources/fun/trivia_quiz.json
index 8008838c..0b3e6802 100644
--- a/bot/resources/fun/trivia_quiz.json
+++ b/bot/resources/fun/trivia_quiz.json
@@ -52,7 +52,7 @@
"They generally have handdrawn nature images on them."
],
"question": "What did Nintendo make before video games and toys?",
- "answer": "Hanafuda, Hanafuda cards"
+ "answer": ["Hanafuda", "Hanafuda cards"]
},
{
"id": 7,
@@ -292,22 +292,22 @@
{
"id": 201,
"question": "What is the highest power of a biquadratic polynomial?",
- "answer": "4, four"
+ "answer": ["4", "four"]
},
{
"id": 202,
"question": "What is the formula for surface area of a sphere?",
- "answer": "4pir^2, 4πr^2"
+ "answer": ["4pir^2", "4πr^2"]
},
{
"id": 203,
"question": "Which theorem states that hypotenuse^2 = base^2 + height^2?",
- "answer": "Pythagorean's, Pythagorean's theorem"
+ "answer": ["Pythagorean's", "Pythagorean's theorem"]
},
{
"id": 204,
"question": "Which trigonometric function is defined as hypotenuse/opposite?",
- "answer": "cosecant, cosec, csc"
+ "answer": ["cosecant", "cosec", "csc"]
},
{
"id": 205,
@@ -317,7 +317,7 @@
{
"id": 206,
"question": "How many quadrants are there in a cartesian plane?",
- "answer": "4, four"
+ "answer": ["4", "four"]
},
{
"id": 207,
@@ -328,7 +328,7 @@
"id": 208,
"question": "What's the following formula that finds the area of a triangle called?",
"img_url": "https://wikimedia.org/api/rest_v1/media/math/render/png/d22b8566e8187542966e8d166e72e93746a1a6fc",
- "answer": "Heron's formula, Heron"
+ "answer": ["Heron's formula", "Heron"]
},
{
"id": 209,
@@ -372,12 +372,12 @@
{
"id": 216,
"question": "In set builder notation, what does {p/q | q ≠ 0, p & q ∈ Z} represent?",
- "answer": "Rationals, Rational Numbers"
+ "answer": ["Rationals", "Rational Numbers"]
},
{
"id": 217,
"question": "What is the natural log of -1 (use i for imaginary number)?",
- "answer": "pi*i, pii, πi"
+ "answer": ["pi*i", "pii", "πi"]
},
{
"id": 218,
@@ -397,7 +397,7 @@
{
"id": 221,
"question": "Prime numbers only have __ factors.",
- "answer": "2, two"
+ "answer": ["2", "two"]
},
{
"id": 222,
@@ -408,7 +408,7 @@
"id": 223,
"question": "In statistics, what does this formula represent?",
"img_url": "https://www.statisticshowto.com/wp-content/uploads/2013/11/sample-standard-deviation.jpg",
- "answer": "sample standard deviation, standard deviation of a sample"
+ "answer": ["sample standard deviation", "standard deviation of a sample"]
},
{
"id": 224,
@@ -418,7 +418,7 @@
{
"id": 225,
"question": "A matrix multiplied by its inverse matrix equals...",
- "answer": "the identity matrix, identity matrix"
+ "answer": ["the identity matrix", "identity matrix"]
},
{
"id": 226,
@@ -429,19 +429,19 @@
{
"id": 227,
"question": "What is the only number in the entire number system which can be spelled with the same number of letters as itself?",
- "answer": "4, four"
+ "answer": ["4", "four"]
},
{
"id": 228,
"question": "1/100th of a second is also termed as what?",
- "answer": "a jiffy, jiffy, centisecond"
+ "answer": ["a jiffy", "jiffy", "centisecond"]
},
{
"id": 229,
"question": "What is this triangle called?",
"img_url": "https://cdn.askpython.com/wp-content/uploads/2020/07/Pascals-triangle.png",
- "answer": "Pascal's triangle, Pascal"
+ "answer": ["Pascal's triangle", "Pascal"]
},
{
"id": 230,
@@ -468,17 +468,17 @@
{
"id": 304,
"question": "What do you call an organism composed of only one cell?",
- "answer": "unicellular, single-celled"
+ "answer": ["unicellular", "single-celled"]
},
{
"id": 305,
"question": "The Heisenberg's Uncertainty Principle states that the position and \\_\\_\\_\\_\\_\\_\\_\\_ of a quantum object can't be both exactly measured at the same time.",
- "answer": "velocity, momentum"
+ "answer": ["velocity", "momentum"]
},
{
"id": 306,
"question": "A \\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_ reaction is the one wherein an atom or a set of atoms is/are replaced by another atom or a set of atoms",
- "answer": "displacement, exchange"
+ "answer": ["displacement", "exchange"]
},
{
"id": 307,
@@ -512,7 +512,7 @@
{
"id": 312,
"question": "What is the intermolecular force caused by temporary and induced dipoles?",
- "answer": "LDF, London dispersion, London dispersion force"
+ "answer": ["LDF", "London dispersion", "London dispersion force"]
},
{
"id": 313,
@@ -522,7 +522,7 @@
{
"id": 314,
"question": "About how many neurons are in the human brain?\n(A. 1 billion, B. 10 billion, C. 100 billion, D. 300 billion)",
- "answer": "C, 100 billion, 100 bil"
+ "answer": ["C", "100 billion", "100 bil"]
},
{
"id": 315,
@@ -537,12 +537,12 @@
{
"id": 317,
"question": "Which vascular tissue transports water and minerals from the roots to the rest of a plant?",
- "answer": "the xylem, xylem"
+ "answer": ["the xylem", "xylem"]
},
{
"id": 318,
"question": "Who discovered the theories of relativity?",
- "answer": "Albert Einstein, Einstein"
+ "answer": ["Albert Einstein", "Einstein"]
},
{
"id": 319,
@@ -557,7 +557,7 @@
{
"id": 321,
"question": "What range of frequency are the average human ears capable of hearing?\n(A. 10Hz-10kHz, B. 20Hz-20kHz, C. 20Hz-2000Hz, D. 10kHz-20kHz)",
- "answer": "B, 20Hz-20kHz"
+ "answer": ["B", "20Hz-20kHz"]
},
{
"id": 322,
@@ -572,7 +572,7 @@
{
"id": 324,
"question": "The type of rock that is formed by the accumulation or deposition of mineral or organic particles at the Earth's surface, followed by cementation, is called...",
- "answer": "sedimentary, sedimentary rock"
+ "answer": ["sedimentary", "sedimentary rock"]
},
{
"id": 325,
@@ -582,7 +582,7 @@
{
"id": 326,
"question": "What type of image is formed by a convex mirror?",
- "answer": "virtual image, virtual"
+ "answer": ["virtual image", "virtual"]
},
{
"id": 327,
@@ -592,17 +592,17 @@
{
"id": 328,
"question": "Which law states that the global entropy in a closed system can only increase?",
- "answer": "second law, second law of thermodynamics"
+ "answer": ["second law", "second law of thermodynamics"]
},
{
"id": 329,
"question": "Which particle is emitted during the beta decay of a radioactive element?",
- "answer": "an electron, the electron, electron"
+ "answer": ["an electron", "the electron", "electron"]
},
{
"id": 330,
"question": "When DNA is unzipped, two strands are formed. What are they called (separate both answers by the word \"and\")?",
- "answer": "leading and lagging, leading strand and lagging strand"
+ "answer": ["leading and lagging", "leading strand and lagging strand"]
}
],
"cs": [
@@ -619,7 +619,7 @@
{
"id": 403,
"question": "What does SASS stand for?",
- "answer": "Syntactically Awesome Stylesheets, Syntactically Awesome Style Sheets"
+ "answer": ["Syntactically Awesome Stylesheets", "Syntactically Awesome Style Sheets"]
},
{
"id": 404,
@@ -629,7 +629,7 @@
{
"id": 405,
"question": "What is computing capable of performing exaFLOPS called?",
- "answer": "exascale computing, exascale"
+ "answer": ["exascale computing", "exascale"]
},
{
"id": 406,
@@ -654,7 +654,7 @@
{
"id": 410,
"question": "A hypothetical point in time at which technological growth becomes uncontrollable and irreversible, resulting in unforeseeable changes to human civilization is termed as...?",
- "answer": "technological singularity, singularity"
+ "answer": ["technological singularity", "singularity"]
},
{
"id": 411,
@@ -664,12 +664,12 @@
{
"id": 412,
"question": "How many bits are in a TCP checksum header?",
- "answer": "16, sixteen"
+ "answer": ["16", "sixteen"]
},
{
"id": 413,
"question": "What is the most popular protocol (as of 2021) that handles communication between email servers?",
- "answer": "SMTP, Simple Mail Transfer Protocol"
+ "answer": ["SMTP", "Simple Mail Transfer Protocol"]
},
{
"id": 414,
@@ -679,12 +679,12 @@
{
"id": 415,
"question": "Which DNS record contains mail servers of a given domain?",
- "answer": "MX, mail exchange"
+ "answer": ["MX", "mail exchange"]
},
{
"id": 416,
"question": "Which newline sequence does HTTP use?",
- "answer": "carriage return line feed, CRLF, \\r\\n"
+ "answer": ["carriage return line feed", "CRLF", "\\r\\n"]
},
{
"id": 417,
@@ -694,7 +694,7 @@
{
"id": 418,
"question": "Name a universal logic gate.",
- "answer": "NAND, NOR"
+ "answer": ["NAND", "NOR"]
},
{
"id": 419,
@@ -729,7 +729,7 @@
{
"id": 425,
"question": "What does the \"a\" represent in a HSLA color value?",
- "answer": "transparency, translucency, alpha value, alpha channel, alpha"
+ "answer": ["transparency", "translucency", "alpha value", "alpha channel", "alpha"]
},
{
"id": 426,
@@ -749,7 +749,7 @@
{
"id": 429,
"question": "Which of these sorting algorithms is not stable?\n(Counting sort, quick sort, insertion sort, tim sort, bubble sort)",
- "answer": "quick, quick sort"
+ "answer": ["quick", "quick sort"]
},
{
"id": 430,
@@ -761,7 +761,7 @@
{
"id": 501,
"question": "Is everything an instance of the `object` class (y/n)?",
- "answer": "y, yes"
+ "answer": ["y", "yes"]
},
{
"id": 502,
@@ -781,7 +781,7 @@
{
"id": 505,
"question": "Can you pickle a running `list_iterator` (y/n)?",
- "answer": "y, yes"
+ "answer": ["y", "yes"]
},
{
"id": 506,
@@ -821,12 +821,12 @@
{
"id": 513,
"question": "Where does the name Python come from?",
- "answer": "Monty Python, Monty Python's Flying Circus"
+ "answer": ["Monty Python", "Monty Python's Flying Circus"]
},
{
"id": 514,
"question": "How is infinity represented in Python?",
- "answer": "float(\"infinity\"), float('infinity'), float(\"inf\"), float('inf')"
+ "answer": ["float(\"infinity\")", "float('infinity')", "float(\"inf\")", "float('inf')"]
},
{
"id": 515,
@@ -846,12 +846,12 @@
{
"id": 518,
"question": "What decorator is used to allow a protocol to be checked at runtime?",
- "answer": "runtime_checkable, typing.runtime_checkable"
+ "answer": ["runtime_checkable", "typing.runtime_checkable"]
},
{
"id": 519,
"question": "Does `numbers.Rational` include the builtin object float (y/n)",
- "answer": "n, no"
+ "answer": ["n", "no"]
},
{
"id": 520,
@@ -866,7 +866,7 @@
{
"id": 522,
"question": "What is the garbage collection strategy used by cpython to collect everything but reference cycles?",
- "answer": "reference counting, refcounting"
+ "answer": ["reference counting", "refcounting"]
},
{
"id": 523,
@@ -891,12 +891,12 @@
{
"id": 527,
"question": "Is the `__aiter__` method async (y/n)?",
- "answer": "n, no"
+ "answer": ["n", "no"]
},
{
"id": 528,
"question": "How does one call a class who defines the behavior of their instance classes?",
- "answer": "a metaclass, metaclass"
+ "answer": ["a metaclass", "metaclass"]
},
{
"id": 529,