Pagina 1 van 1

Letter vraag

Geplaatst: 21 feb 2015, 16:58
door Longboy
Hallo,

Ik zit met een vraag, die wellicht wiskundig heel gemakkelijk is op te lossen, maar ik zou niet weten hoe.

Het probleem:
Wij willen in onze kerk 3 liturgie borden plaatsen met daarop de te lezen Bijbelboeken.
Deze Bijbelboeken worden samengesteld met losse letters.
Ik wil nu graag weten hoeveel letters ik tenminste moet hebben, om op de drie liturgieborden deze boeken te plaatsen, zonder dat ik ooit een keer mis grijp met de letters.
Op ieder bord hoeft maar 1 x hetzelfde boek te worden geplaatst.

Voorbeeld, er wordt gelezen uit Gen en Lev, dan ben is dus 3x letter "G", 6x letter "E", 3x letter "L" en 3x de letter "V" nodig. Er hoeft geen onderscheid worden gemaakt in hoofd en kleine letters. Er worden dus 1 bord altijd twee Bijbelboeken vermeld.

Dit zijn de boeken:
Gen Exo Lev Num Deu Joz Rich Ruth Sam Kon
Kron Ezra Neh Est Job Psa Spr Pre Hoo Jes
Jer Kla Eze Dan Hos Joël Amos Oba Jona Mich
Nah Hab Sef Hag Zach Mal

Mat Mar Luc Joh Han Rom Kor Gal Efe Fil
Kol Tes Tim Tit Fil Heb jac Pet Joh Jud
Ope

Wie kan mij het antwoord hier op geven?

Re: Letter vraag

Geplaatst: 21 feb 2015, 17:16
door Sjoerd Job
Uit je verhaal wordt hetvolgende duidelijk: De inhoud van elk van de drie liturgie-borden is altijd hetzelfde.

Dit zorgt ervoor dat je het kan na-rekenen voor 1 bord, en dan alle getallen keer drie doen.

Dus, de uitwerking voor 1 bord:

Als ë niet hetzelfde is als e:
ë 1
a 2
b 2
c 2
d 2
e 4
f 2
g 2
h 2
i 2
j 2
k 2
l 2
m 2
n 2
o 3
p 2
r 2
s 2
t 3
u 2
v 1
x 1
z 2

als we ipv de ë wel de e mogen gebruiken, blijft de rest hetzelfde, alleen hebben we niet speciaal een ë nodig.

Zoals al gezegd: voor 3 borden heb je van alles 3 keer zoveel nodig.

(hoe ik het berekend heb: ik heb een computerprogrammaatje geschreven die voor elke combinatie (bijvoorbeeld genesis, leviticus) berekend hoeveel van elke letter nodig is, en toen voor elke letter het maximum berekend over de combinaties.)

Code: Selecteer alles

from collections import Counter, defaultdict

books = map(str.lower, ["Gen", "Exo", "Lev", "Num", "Deu", "Joz", "Rich", "Ruth", "Sam", "Kon", "Kron", "Ezra", "Neh", "Est", "Job", "Psa", "Spr", "Pre", "Hoo", "Jes", "Jer", "Kla", "Eze", "Dan", "Hos", "Jo?l", "Amos", "Oba", "Jona", "Mich", "Nah", "Hab", "Sef", "Hag", "Zach", "Mal", "Mat", "Mar", "Luc", "Joh", "Han", "Rom", "Kor", "Gal", "Efe", "Fil", "Kol", "Tes", "Tim", "Tit", "Fil", "Heb", "jac", "Pet", "Joh", "Jud", "Ope"])

needed = defaultdict(int)

for book1 in books:
    for book2 in books:
        if book1 == book2:
            continue
        counts = Counter(book1 + book2)
        for c in counts:
            needed[c] = max(needed[c], counts[c])

for c in sorted(needed):
    print c, needed[c]