서원절차

2026년 4월 16일 09:30분

민수기 6장의 나실인 서원은 단계별로 진행됩니다. 서원 선언, 기간 준수, 오염 시 재시작, 기간 완료 후 예물 드림 순입니다. 나는 현재 단계를 추적하고 다음 단계로 넘어가는 상태 머신을 만들었습니다.

package com.jesusbornd.numbers;

public class Numbers_06_Chapter_Lv1 {

    enum VowState { DECLARED, IN_PROGRESS, DEFILED, COMPLETED }

    static class NaziriteVow {
        private VowState state = VowState.DECLARED;
        private final String name;
        private int daysCompleted = 0;
        private final int required;

        NaziriteVow(String name, int days) { this.name = name; this.required = days; }

        void progress(int days) {
            if (state == VowState.IN_PROGRESS || state == VowState.DECLARED) {
                state = VowState.IN_PROGRESS;
                daysCompleted += days;
                if (daysCompleted >= required) state = VowState.COMPLETED;
            }
        }

        void defile() {
            if (state == VowState.IN_PROGRESS) {
                state = VowState.DEFILED;
                daysCompleted = 0;
                System.out.println(name + " → 오염! 재시작");
            }
        }

        void status() {
            System.out.printf("%s → %s (%d/%d일)%n", name, state, daysCompleted, required);
        }
    }

    public static void main(String[] args) {
        NaziriteVow vow = new NaziriteVow("삼손", 30);
        vow.status();
        vow.progress(10); vow.status();
        vow.defile();     vow.status();
        vow.progress(30); vow.status();
    }
}

from enum import Enum

class VowState(Enum):
    DECLARED    = "선언됨"
    IN_PROGRESS = "진행 중"
    DEFILED     = "오염됨"
    COMPLETED   = "완료"

class NaziriteVow:
    def __init__(self, name: str, days: int):
        self.name = name
        self.required = days
        self.days_completed = 0
        self.state = VowState.DECLARED

    def progress(self, days: int):
        if self.state in (VowState.DECLARED, VowState.IN_PROGRESS):
            self.state = VowState.IN_PROGRESS
            self.days_completed += days
            if self.days_completed >= self.required:
                self.state = VowState.COMPLETED

    def defile(self):
        if self.state == VowState.IN_PROGRESS:
            self.state = VowState.DEFILED
            self.days_completed = 0
            print(f"{self.name} → 오염! 재시작")

    def status(self):
        print(f"{self.name}{self.state.value} ({self.days_completed}/{self.required}일)")


if __name__ == "__main__":
    vow = NaziriteVow("삼손", 30)
    vow.status()
    vow.progress(10); vow.status()
    vow.defile();     vow.status()
    vow.progress(30); vow.status()

Comments

Avatar
 2026년 4월 16일 09:35분

헌신에도 절차가 있다는 게 오히려 헌신을 더 진지하게 만들어요.



Search

← 목록으로