Git Product home page Git Product logo

gate-cs-quiz-generator's Introduction

GATE-CS-quiz-generator

Multi-section quiz generator based on GO's 3 volumes of PYQs

  1. Takes in volume no., section no.(s) & no. of questions. to generate the question paper
  2. The generated paper๐Ÿ“„, simulates GATE q distribution [Uses distribution of questions per section and sub-section].
  3. Reduces cognitive load on reaching the goal ๐Ÿšฉ of finishing all PYQs, gamifies ๐ŸŽฎ your attempts.
  4. It is currently a CLI quiz generator, so it displays the question to attempt, and also tracks attempt timeโŒ›.
  5. Keeps track of the questions attempted โœ…, and never repeats a previously attempted question (customisable, explained below).
  6. You can add/remove the questions from the 'lot' of unattempted questions using the updateLots utility.
  7. Implements binary search on pdf to find and display question's page no. [saves seen pages' question nos too ๐Ÿ•”]
  8. Generates reports in log files ๐Ÿ“, having the questions attempted and attempt times, along with other statistics ๐Ÿ“ˆ
  9. Code is flexible and can be changed to suit one's needs. For ex. different pdfs, different exam; just need to change some csv files having meta information

NOTE : The pdf search can also be used to find the question. Beware, as it may lead you straight to the "answer key" page/ "pyq answer"

Usage


Install the pypdf2 package, if using the search utility [Optional]

$ pip install PyPDF2

Simply run the pyqTest in terminal

$ python pyqTest.py

NOTE : The search utility is by default off. Turn it on by changing line 16 in pyqTest to this:

show_pg_no = True


image image


  • Only press Enter to goto the next question, and log the time taken
  • The log files can be found at ./vol{x}/log/{DATE}_{TIME}.log

image

This can be further used to write notes related to specific questions, and performing analysis

File Structure

.
โ”œโ”€โ”€ vol1                    # Folder with saved data, logs and the vol1 pdf
|    โ”œโ”€โ”€ data               # Folder with .dir files (saved page_no searches), and .lot files (the lot of remaining q's to pick from)
|    โ”œโ”€โ”€ log                # Folder with saved logs having question number attempted, and timing
|    โ”œโ”€โ”€ csv                # Contains all meta information about sections and sub-sections
|    โ””โ”€โ”€Volume-1.pdf        # GO PYQ Volume1 pdf 
โ”œโ”€โ”€ vol2                    # Folder with saved data, logs and the vol2 pdf
|    ...                    # Same as for vol1
|    โ””โ”€โ”€Volume-2.pdf        
โ”œโ”€โ”€ vol3                    # Folder with saved data, logs and the vol3 pdf
|    ...                    # Same as for vol1/2
|    โ””โ”€โ”€Volume-3.pdf        
โ”œโ”€โ”€ __init__.py             # For using read_pdf module 
โ”œโ”€โ”€ extract_meta.py         # Used to extract index page text (meta_index.txt) and open with word processor (preferably vscode)
โ”œโ”€โ”€ pyqTest.py              # The main test setter, uses the meta.csv and sectionx.csv for q distribution
โ”œโ”€โ”€ read_pdf.py             # Contains search utility to search for a question's page no. from pdf/ saved dictionary
โ”œโ”€โ”€ regex_test.py           # Test file to test out the regex [for question(s) extraction from pdf text]
โ”œโ”€โ”€ updateLots.py           # For adding/removing questions that you've attempted and don't want in the paper/ want to add to unattempted questions
โ””โ”€โ”€ README.md

gate-cs-quiz-generator's People

Contributors

arka-h avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

gate-cs-quiz-generator's Issues

Discussion

Discussion points

  • Is page search necessary?
  • Page search is little buggy and still gives wrong page due to REGEX. Better method than REGEX matching?
  • Can this be converted into a desktop app/web app for taking quizzes and tracking progress?

Updates Needed

Updates

  • updateLots.py introduced to customise question lots
  • Refactored pyqTest to be modular, and added more customisation
  • Added a clear screen and on screen timer countdown
  • Added a test file, and also made testing easier via pyqTest
  • Made default show_pg_no = False as the page number can be searched by your own pdf viewer by question number

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.