mirror of
https://github.com/kuhyx/WUT_Computer_Science.git
synced 2026-11-10 19:07:11 +01:00
Running one directory (EADS) had already produced four bugs, so all of them
were run. 11 failed. Every one was real -- either in the coursework or in the
harness I had just written -- and the split was roughly even.
Coursework bugs:
- 15 .tex files use Polish ogonek characters with no fontenc, so pdflatex
dies with "Command \k unavailable in encoding OT1". Fixed where it was
actually needed, not blanket-applied.
- BSS had \documentclass{article}[12pt] -- options after the class name,
where they are not options at all.
- SDM's beamer deck had a stray } on an \item, which took out the frame.
- EOOP/Various/currency included "currency2.hpp"; the file is currency.hpp.
- ECRYPT_PROJECT had the SAME stdlib-shadowing bug as ECOTE: a package named
code/. Renamed to sieve/, and its 99 tests now run. With ECOTE's 26 that
is 125 tests that could not execute at all before today.
Harness bugs, which the run is what exposed:
- COURSE_ENTRY pointed at directories for PORR and ECRYPT_PROJECT, so python
looked for __main__.py and reported the wrong problem.
- main.py was auto-picked via find's first result. EARIN has six labs and
six main.py files, so that ran an arbitrary lab and called it the course.
Now only auto-picked when exactly one exists.
- Only the first requirements.txt was installed, which is why EARIN still
died on gymnasium after a venv was created for it. All of them now.
- The notebook probe accepted jupyter being on PATH. This machine's jupyter
is a pipx shim whose interpreter is gone, so "runnable" was a lie; it now
invokes jupyter --version and PBAD/twm_4 report blocked, honestly.
- Nothing ran a course's tests. Where a suite exists it is now the check,
which matters most for ECRYPT_PROJECT, whose program prompts on stdin and
cannot be run headlessly at all.
- Which directory pytest runs from is course-specific and unguessable, so
stubs pass --test-dir: ECOTE needs program/ for imports, ECRYPT_PROJECT
needs sieve/ because its fixtures open a CSV by relative path.
gates/known-incomplete.txt records the one file that genuinely cannot build:
EOOP/Various/set/set.cpp includes set.hpp, which `git log --all` shows has
never existed here. The course supplied it and only the .cpp was submitted.
That is a factual record with a stated check, not a lint allowlist -- and
fabricating the header would be inventing coursework.
Status is now 36 runnable / 5 no-code / 3 blocked.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0172dj34FDpao6wsix8ZuCzE
47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
'''Python program to print all Primes Smaller than or equal to N using Sieve of Eratosthenes'''
|
|
import math
|
|
|
|
def sieve_of_eratosthenes(num: int) -> list[int]:
|
|
"""Finds all prime number from 1 to num.
|
|
|
|
Args:
|
|
num (int): Number up to which the prime numbers should be printed
|
|
|
|
Returns:
|
|
list[int]: List of prime numbers
|
|
"""
|
|
if num <= 0:
|
|
raise ValueError("Number should not be negative.")
|
|
# boolean list to store if a number is prime or not
|
|
prime = [True] * (num+1)
|
|
p = 2 # starting prime number
|
|
# we will iterate till square root of num because
|
|
# if a number is not prime then it will have a factor less than or equal to square root of that number
|
|
while p <= math.sqrt(num):
|
|
# If prime[p] is not
|
|
# changed, then it is a prime
|
|
if prime[p]:
|
|
i = (p << 1) # i = p * 2
|
|
# Updating all multiples of p
|
|
while i <= num:
|
|
prime[i] = False
|
|
i += p
|
|
p += 1
|
|
return [p for p in range(2, num+1) if prime[p]]
|
|
|
|
|
|
def print_sieve(num: int) -> None:
|
|
"""Prints all prime number from 1 to num.
|
|
|
|
Args:
|
|
num (int): Number up to which the prime numbers should be printed
|
|
"""
|
|
for number in sieve_of_eratosthenes(num):
|
|
print(number, end=" ")
|
|
|
|
|
|
# Driver code
|
|
if __name__ == '__main__':
|
|
num = int(input("Enter a number: "))
|
|
print(f"Following are the prime numbers smaller than or equal to {num}")
|
|
print_sieve(num) |