Segédlet matematikusoknak

Segédlet matematikusoknak: Pascal-téglák

Pascal-tégla

Gyakori kombinatorikafeladat matematikából, hogy egy szót egy téglalapban leírnak, majd a téglalap bal felső sarkából a jobb alsó sarokba kell eljutni úgy, hogy csak jobbra vagy lefelé léphetünk.

PASCAL szót a következő téglalapban írhatjuk le:

PASC
ASCA
SCAL

A kérdés ezt követően az, hogy hányféleképpen juthatunk el a bal felső sarokból a jobb alsó sarokba.

A feladat első része: Hozz létre egy programot, amely bekér egy szöveget, majd egy számot, hogy hány betű széles legyen a téglalap, ezt követően kiírja a képernyőre a megadott szóból készített betűtéglát, úgy, hogy a megadott szélességű téglalapban helyezkedjen el a szó. Kezeld az olyan hibalehetőségeket is, ha valamilyen értelemben hibás inputot adott meg a felhasználó! a betűket mindig egy szóköz válassza el egymástól, a sorok pedig új sorral legyenek elválasztva!

A feladat második része: Készíts egy programot, amely a fenti téglalapban megszámolja, hogy hányféleképpen juthatunk el a bal felső sarokból a jobb alsó sarokba úgy, hogy csak jobbra vagy lefelé léphetünk! Ehhez elég a matematikából ismert explicit képletet csinálni, de egy táblázat (listában-a-lista) és egy ügyes ciklus segítségével magad is kiszámolhatod ezt a számot. Ez utóbbi egyébként általánosabb, ha pl. a térkép különféle falakat és akadályokat is tartalmazna...

a feladat harmadik része: ezeket a téglákat szokták úgy is bonyolítani, hogy bevezetnek egy szűkületet:

PAS
ASCA
AL

Ehhez kérj be egy szót, két szélességet is a felhasználótól! Az első szélesség az első téglalap szélessége legyen, a második szélesség a második téglalap szélessége. A szűkület mindig egyetlen karakter legyen! A betűket itt is egy szóköz válassza el egymástól, a sorok pedig új sorral legyenek elválasztva! A program ezután írja ki a képernyőre a megadott szóból készített betűtéglát, úgy, hogy a megadott szélességű téglalapban helyezkedjen el a szó, és a szűkület is megjelenjen. Kezeld az olyan hibalehetőségeket is, ha valamilyen értelemben hibás inputot adott meg a felhasználó!

Negyedik rész: hányféleképpen lehet kiolvasni a harmadik részben megadott szót?

Törekedj arra, hogy szép, áttekinthető kódot írj! Úgy oldd meg a feladatokat, hogy függvényeket használsz a megoldáshoz!