성읍배분

2026년 5월 29일 09:30분

민수기 35장에서 레위인에게 48개 성읍이 배분되고 6개는 도피성으로 지정됩니다. 전체 풀에서 목적별로 성읍을 나눕니다. 나는 성읍 목록을 일반/도피로 분류하고 요청 유형에 따라 배분하는 분류기를 만들었습니다.

package com.jesusbornd.numbers;
import java.util.*;
import java.util.stream.*;

public class Numbers_35_Chapter_Lv1 {
    enum Type { LEVITE, REFUGE }
    record City(String name, Type type) {}

    public static void main(String[] args) {
        var cities = List.of(
            new City("헤브론", Type.REFUGE),  new City("세겜",   Type.REFUGE),
            new City("게데스", Type.REFUGE),  new City("베셀",   Type.REFUGE),
            new City("라못",   Type.REFUGE),  new City("골란",   Type.REFUGE),
            new City("실로",   Type.LEVITE),  new City("기브온", Type.LEVITE),
            new City("아나돗", Type.LEVITE),  new City("알몬",   Type.LEVITE)
        );

        var grouped = cities.stream().collect(Collectors.groupingBy(City::type));
        grouped.forEach((t, cs) ->
            System.out.printf("[%s] %s%n", t, cs.stream().map(City::name).toList()));
    }
}

from collections import defaultdict

cities = [
    ("헤브론", "REFUGE"), ("세겜", "REFUGE"), ("게데스", "REFUGE"),
    ("베셀",   "REFUGE"), ("라못", "REFUGE"), ("골란",   "REFUGE"),
    ("실로",  "LEVITE"), ("기브온","LEVITE"), ("아나돗", "LEVITE"), ("알몬", "LEVITE"),
]

grouped = defaultdict(list)
for name, ctype in cities:
    grouped[ctype].append(name)

if __name__ == "__main__":
    for ctype, names in grouped.items():
        print(f"[{ctype}] {names}")

Comments

Avatar
 2026년 5월 29일 15:13분

목적에 따라 자원을 미리 분류해두는 설계가 실용적이네요.



Search

← 목록으로