규칙추가
2026년 4월 29일 09:30분
민수기 15장은 가나안 입성 후 지킬 헌물 규정을 보완합니다. 이전 법에 새 조항을 추가하는 구조입니다. 나는 규칙을 리스트로 관리하고 런타임에 추가할 수 있는 규칙 레지스트리를 만들었습니다.
package com.jesusbornd.numbers;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;
public class Numbers_15_Chapter_Lv2 {
record Offering(String type, int size) {}
record Rule(String name, Function<Offering, String> apply) {}
static class RuleRegistry {
private final List<Rule> rules = new ArrayList<>();
RuleRegistry add(Rule rule) { rules.add(rule); return this; }
void apply(Offering o) {
System.out.println("제물: " + o.type() + " (크기 " + o.size() + ")");
rules.forEach(r -> System.out.println(" [" + r.name() + "] " + r.apply().apply(o)));
}
}
public static void main(String[] args) {
RuleRegistry registry = new RuleRegistry()
.add(new Rule("기본 소제", o -> "고운 가루 " + (o.size() / 10) + "에바"))
.add(new Rule("기름 규정", o -> "기름 " + (o.size() / 4) + "힌"))
.add(new Rule("포도주", o -> "포도주 " + (o.size() / 4) + "힌"));
// 보완 추가: 부지중 범죄 속죄 규정
registry.add(new Rule("부지중 범죄", o -> "숫염소 한 마리 속죄제"));
registry.apply(new Offering("수소", 100));
}
}
from dataclasses import dataclass
from typing import Callable
@dataclass
class Offering:
type: str
size: int
@dataclass
class Rule:
name: str
apply: Callable[["Offering"], str]
class RuleRegistry:
def __init__(self):
self._rules: list[Rule] = []
def add(self, rule: Rule) -> "RuleRegistry":
self._rules.append(rule)
return self
def apply(self, o: Offering):
print(f"제물: {o.type} (크기 {o.size})")
for rule in self._rules:
print(f" [{rule.name}] {rule.apply(o)}")
if __name__ == "__main__":
registry = (
RuleRegistry()
.add(Rule("기본 소제", lambda o: f"고운 가루 {o.size // 10}에바"))
.add(Rule("기름 규정", lambda o: f"기름 {o.size // 4}힌"))
.add(Rule("포도주", lambda o: f"포도주 {o.size // 4}힌"))
)
# 보완 추가: 부지중 범죄 속죄 규정
registry.add(Rule("부지중 범죄", lambda o: "숫염소 한 마리 속죄제"))
registry.apply(Offering("수소", 100))
Search
Categories
← 목록으로
Comments
새로운 상황에 맞게 규칙을 보완하는 것도 중요한 작업이더라고요.