A problémamegoldó, logikus gondolkodásra nevelő képzések anyagában, illetve felvételi feladatsorokban is sokszor megtalálható – többféle változatban is.
Lássunk egyet a népszerű „Hány éves a kapitány?” típusú feladatok közül!
Három elefántot kell berakodnunk – szólt a hajóskapitány az első tiszthez.
És hány évesek ezek az elefántok? – kérdezte az első tiszt.
Mindegyik elmúlt már két éves és életkoraik szorzata 2450 – volt a válasz.
Hát életkoraik összege?
Azt fölösleges elárulnom, mert abból még nem tudnád megállapítani életkorukat – mondta a kapitány, majd hozzátette: Az egyikük idősebb nálam.
Akkor már tudom, hogy hány évesek az elefántok – mondta az első tiszt.
Feltéve, hogy tényleg tudta; … hány éves a kapitány?
Hogyan használhatnánk a feladat megoldásához programozáshoz kötődő ismereteinket?
Állítsunk elő olyan három szorzótényezőt, amelyek szorzata 2450 és egyben írassuk ki az összegüket is a konzolra!
1 2 3 4 5 6 7 8 9 10 |
public class Kapitany { public static void main(String[] args) { for(int i=3; i<=100; i++) for(int j=i; j<=100; j++) for(int k=j; k<=100; k++) if(i*j*k==2450) System.out.println( i+"*"+j+"*"+k+"=2450\t"+i+"+"+j+"+"+k+"="+(i+j+k)); } } |
Az i, j, k a három elefánt életkorát jelöli. Mivel mindegyik elmúlt két éves (és feltételezzük, hogy életkoraik egész számmal kifejezhetők), így i=3-ról indul. Az elefántok lehetnek egyidősek, ezért j=i-ről és k=j-ről indul. Nincs kizárt életkor, így a változók léptethetők egyesével. Az i, j, k monoton növekvő sorozatot alkot, ezért a kiírásban nem lesznek olyan sorok, amelyek csupán a szorzótényezők sorrendjében térnek el. Durva felső becslés a 100, hiszen az elefántok általában 60-70 évig élnek. Eredményül ezt kapjuk:
1 2 3 4 5 6 7 |
5*5*98=2450 5+5+98=108 5*7*70=2450 5+7+70=82 5*10*49=2450 5+10+49=64 5*14*35=2450 5+14+35=54 7*7*50=2450 7+7+50=64 7*10*35=2450 7+10+35=52 7*14*25=2450 7+14+25=46 |
Az eredményből milyen következtetés(eke)t lehet levonni és mi a megoldás?
A feladat további változatai
- Egy hajó hosszának, az árbóc magasságának, a kapitány kisfia életkorának és a kapitány életkorának szorzata 303335. Hány éves a kapitány?
- A kapitány most kétszer annyi idős, mint a hajója volt akkor, amikor a kapitány kétszer volt annyi idős, mint most a hajója. A kapitány és a hajója összesen 70 éves. Hány éves a kapitány?
- A Fekete Kalóz néven elhíresült kalózkapitány egyik sikeres kalandja után kiszámíttatta saját maga és kisfia életkorának, valamint hajója hosszának a szorzatát. Az eredmény 26 159 lett, amelyet mint szerencseszámot egy medálra vésetett és mindig a nyakában hordott. Hány éves a kapitány? (A hajóhosszt méterekben mérték, és a mérőszám egész szám!)
- Te vezeted az utasszállító repülőt. Budapesten felszáll 11 utas. Bécsben leszáll 5 és felszáll 9. Párizsban 1 kivételével mindenki leszáll. Hány éves a kapitány?
- A kapitány hajója most 40 éves. Kétszer annyi idős, mint amennyi a kapitány volt akkor, amikor a hajó annyi idős volt, mint a kapitány most. Hány éves a kapitány?
A bejegyzéshez tartozó forráskódot ILIAS e-learning tananyagban tesszük elérhetővé tanfolyamaink résztvevői számára.
A feladat a Java SE szoftverfejlesztő tanfolyam szakmai moduljának 5-8. óra: Vezérlési szerkezetek alkalmához kötődik.
Ajánlott irodalom
Aki kedvet kapott és beszerezne néhány könyvet – tele érdekes, gondolkodtató, kreatív, logikai feladatokkal – ajánlom az alábbiakat:
- Katona, R. (szerk): Logikai egypercesek – az elme játékai, 2. kiadás, DFT-Hungária Könyvkiadó, Budapest, 2006, ISBN 963 9473 55 3
- Róka, S.: 2×2 néha 5? – Paradoxonok, hibás bizonyítások, Tóth Könyvkereskedés és Kiadó Kft., Debrecen, 2008, ISBN 963 5965 24 3
- Károlyi, Zs.: Csak logIQsan!, 2. javított kiadás, Typotex Elektronikus Kiadó Kft., Budapest, 2017, ISBN 963 279 693 5
- Róka, S.: Egypercesek – Feladatok matematikából 14-18 éveseknek, Tóth Könyvkereskedés Kft., Debrecen, 1997
- G. Nagy, L.: A világ legújabb logikai rejtvényei, Magyar Könyvklub, H. n., 2001, ISBN 963 547 512 8
Haladóknak ajánlom
- Smullyan, R.: A hölgy vagy a tigris? – és egyéb logikai feladatok, 2. javított kiadás, Typotex Kiadó Kft., Budapest, 2002, ISBN 963 7546 63 4
- Smullyan, R.: Mi a címe ennek a könyvnek? – Drakula rejtélye és más logikai feladványok, Typotex Elektronikus Kiadó Kft., Budapest, 1996, ISBN 963 7546 64 2
- Shasha, D.: Dr. Ecco talányos kalandjai, Typotex Kiadó – SHL Hungary Kft., 2000, ISBN 963 9132 72 1
Ajánljuk rendezvényeinket, ahol időről-időre tartunk élményszerű foglalkozásokat, válogatva a logikus gondolkodásra nevelés feladatgyűjteményünkből.
Engem mindig lekötnek a „hány éves a kapitány” típusú feladatok, mert sok esetben nem egy sablonra van ráhúzva kis változásokkal. Különösen szeretek ezeken a feladatokon gondolkozni, mert legtöbbször nem a megszokott módon kell megoldani és igényel némi plusz IQ-t is. Bizonyos esetekben nincs is konkrét megoldása egy-egy feladatnak csak arra próbálja buzdítani az embert, hogy a lehetetlent is próbálja megoldani vagy megkérdőjelezni.
A kapitány most kétszer annyi idős, mint a hajója volt akkor, amikor a kapitány kétszer volt annyi idős, mint most a hajója. A kapitány és a hajója összesen 70 éves. Hány éves a kapitány?
70
A+B=C C<=70
1+2=3 3<=70
2+4=6 6<=70
…
…
46+23 3<=70
Amint a program eljut ide itt még egyszer megpróbálja, de a következő értek már nem lesz jó. Ezért kilép ciklusból, és mint látható lesz, majd ha kiírjuk az eredményeket meg a számokat, akkor látjuk az utolsó olyan lehetőséget, amikor még kisebb volt az értéke, mint 70. Már csak az lesz a feladatunk, hogy a program kiegyenlítse 70 kettő szám között lévő összeget elosztva egymás közt. Így 46,5 és 23,5 a mostani eredményeink amiből egy értelmű már csak annyi az egész hogy a programnak el kell döntenie, hogy melyik a nagyobb és a nagyobb lesz a kapitány életkora.
Sajnos nem helyes ez a gondolatmenet. Ilyen feladatoknál mindig egész számokban kell gondolkodni. Valamelyik időpontból érdemes kiindulni és ahhoz képest felírni az összefüggéseket. Teljes leszámolással is mehet programmal, de ez talán könnyebb néhány egyenlet megoldásával. Itt van egy levezetés: Hány éves a kapitány? – GitHub
A feladatot mindenképpen a 2450 szám osztóinak felsorolásával kezdeném egészen 100-ig nézve.
Ha azt vesszük alapul, hogy a kor az egész szám, akkor a for ciklusokat 98-ig határoznám meg, mert a 99 és a 100 esetén biztos, hogy nem kapunk egész számot.
Az ember átlag életkorát figyelembe véve a 98 az nem lehet reális szám, így a következő szám az osztókat megvizsgálva az 70 lenne, viszont nekünk olyan egymást követő sorozatokra van szükségünk, aminél megegyezik az osztók összege, ezért eredményül ezt a két értéket kapjuk:
5+10+49=64
7+7+50=64
Hasonló gondolkodtató feladatokat találtam egy Mensa kiadványban. Megrendeltem és majd kiderül, mennyire fog menni. 😉 Pláne angolul.
https://www.magazinesdirect.com/az-magazines/6939899/the-mensa-puzzle-book-4th-edition.thtml
Addig is, amíg megérkezik a postás, ajánlom Sanyi Logikus gondolkodás tesztjét Zoli. Ő is szokott ezekből a Mensa kiadványokból ötleteket meríteni.