• VNOJ
  • Trang chủ
  • Danh sách bài
  • Các bài nộp
  • Thành viên
    >
    • Tổ chức
  • Các kỳ thi
  • Wiki
  • Thông tin
    >
    • FAQ
    • Trình chấm ngoài
    • Tag
    • Máy chấm
    • Devlog
    • Github
    • Tickets
    • Thư viện đề thi
    • Đề xuất contest
  • Tạp chí
VI EN Đăng nhập  hoặc  Đăng ký

Blog - Trang 1

  • Thông tin
  • Thống kê
  • Blog

-7

tự hào

dah438800 đã đăng vào 14, Tháng 7, 2025, 1:54

૮₍ ˶ᵔ ᵕ ᵔ˶ ₎ა import math

WIDTH = 50 HEIGHT = 25

REDBG = "\033[41m \033[0m" YELLOWSTAR = "\033[1;33m★\033[0m"

def rotate(cx, cy, x, y, angledeg): angle = math.radians(angledeg) s = math.sin(angle) c = math.cos(angle) x -= cx y -= cy xnew = x * c - y * s ynew = x * s + y * c return xnew + cx, ynew + cy

def inside_polygon(px, py, polygon): count = 0 n = len(polygon) for i in range(n): x1, y1 = polygon[i] x2, y2 = polygon[(i + 1) % n] if ((y1 <= py < y2) or (y2 <= py < y1)): if px < (x2 - x1) * (py - y1) / (y2 - y1 + 1e-9) + x1: count += 1 return count % 2 == 1

def generatestar(cx, cy, R): r = R * math.sin(math.pi / 10) / math.sin(3 * math.pi / 10) star = [] for i in range(5): outerangle = -90 + i * 72 innerangle = outerangle + 36 ox = cx + R * math.cos(math.radians(outerangle)) oy = cy + R * math.sin(math.radians(outerangle)) ix = cx + r * math.cos(math.radians(innerangle)) iy = cy + r * math.sin(math.radians(innerangle)) star.append((ox, oy)) star.append((ix, iy)) return star

def drawflag(): cx = WIDTH / 2 cy = HEIGHT / 2 star = generatestar(cx, cy, R=6.5)

for y in range(HEIGHT):
    for x in range(WIDTH):
        if inside_polygon(x + 0.5, y + 0.5, star):
            print(YELLOW_STAR, end='')
        else:
            print(RED_BG, end='')
    print()

draw_flag()

dah438800
o14, Tháng 7, 2025, 1:54 0

dựa trên nền tảng DMOJ | theo dõi VNOI trên Github và Facebook