Tankocka – Hang/Film felirattal: a barátkozás algoritmusa Dr. Sheldon Cooper szerint

Folytatjuk Tankockák blog bejegyzés sorozatunkat. A feladatban válaszolni kell a videóban megjelenő hat kérdésre. A kérdések algoritmusokhoz kapcsolódnak. A videó a népszerű Agymenők (The Big Bang Theory) című sorozat 2. évad 13. epizódjából való, melynek címe: A barátkozás módszertana (The Friendship Algorithm). A tervezés folyamatábra segítségével történik. Vajon működik az algoritmus? 😉 Ez a témakör főként az alapozó tanfolyamunkhoz kötődik: Java SE szoftverfejlesztő tanfolyam.

Az algoritmusok a tipikusan programozási nyelvtől független, konvertálható tudást jelentik. Mindig szükség van rájuk. Többféle jelölésrendszer is kapcsolódik hozzájuk. Például folyamatábra, mondatszerű leírás, struktogram, Jackson-ábra. Az UML jelölésrendszer elemei közül az objektumok kommunikációját, viselkedését leíró ábrák is algoritmusleíró eszköznek tekinthetők.

Dr. Sheldon Cooper szólánc játéka

Sheldon, Agymenők

Sheldon szólánc kiemelt képDr. Sheldon Cooper karakterét nem kell bemutatni. Az Agymenők (The Big Bang Theory) című sorozat 2. évad 5. epizódjának címe A vitatkozás nagymestere (The Euclid Alternative). Nagyon találó az epizód címe magyarul. Miközben Penny reggel Sheldont munkába viszi, Sheldon az autóban kémiai elemek nevéből álló szólánc játékával különösen Penny agyára megy (pedig a játékot Penny nyeri ?):

A játék során Sheldon az alábbi kémiai elemeket mondja:

  • magyar nyelven: Hélium ↦ Mangán ↦ Neptúnium ↦ Magnézium ↦ Molibdén ↦ Nitrogén ↦ Nobélium ↦ Mendelévium
  • angol nyelven: Helium ↦ Mercury ↦ Ytterbium ↦ Molybdenum ↦ Magnesium ↦ Manganese ↦ Europium ↦ Mendelevium

Támogassuk meg ezt a játékot! Készítsünk olyan programot Java nyelven, ami segít(ene) felkészülni Sheldon szólánc játékára!

A szükséges lépések áttekintése

  • Gyűjtsük össze a kémiai elemek nevét magyar nyelven a Wikipédia – Kémiai elemek listája szócikkéből és rendezzük ábécé sorrendbe!
  • Építsük be az elemlistát a program adatmodelljébe!
  • Indítsuk el a lépésszámláló nulláról! Ha a lépésszámláló páros, akkor az ’A’ játékos, egyébként a ’B’ játékos lép.
  • Készítsük elő a játékmenet tárolására alkalmas adatszerkezetet, szöveget, listát!
  • Kezdetben kínáljuk fel a teljes elemlistát úgy, hogy mindig egy és csak egy legyen belőle kiválasztható!
  • A kiválasztást követően tároljuk el a játékmenetben az elemet, töröljük ezt az elemlistából, majd kínáljuk fel azoknak az elemeknek a listáját, amelyek kezdőbetűje megegyezik az előzőleg kiválasztott elem utolsó betűjével és növeljük meg a lépésszámlálót!
  • Amíg a felkínálható elemek listája nem üres, addig az előző lépést ismételjük meg!
  • A játék végén az nyert, aki a játékmenet utolsó elemét választotta ki. Írjuk ki a nevét és a lépésszámot!

A grafikus felületű megvalósítás képernyőképe rövid játékmenettel

Ötletek a megvalósításra és a továbbfejlesztésre

  • A program Java nyelven konzolos menükezeléssel, asztali alkalmazásként swing-esen többféle GUI komponens használatával és eseménykezeléssel, böngészőben futó JSP webalkalmazásként többféle űrlapmezővel, illetve HTML+CSS+JavaScript alapon is implementálható.
  • A kémiai elemek listája lecserélhető az angol nevekre. Ekkor figyeljünk arra, hogy a kis- és nagybetűket ne különböztessük meg az utolsó-első betű párosítása során.
  • Lehet a játék bármikor megszakítható, illetve a vége után újrakezdhető.
  • A program mérhetné a játék során az eltelt időt.
  • A program lehetne peer-to-peer vagy szerver-kliens elosztott és megvalósíthatna hálózatos kommunikációt.
  • A program mobil alkalmazásként is implementálható.

A bejegyzéshez tartozó teljes forráskódot – többféle változatban is – ILIAS e-learning tananyagban tesszük elérhetővé tanfolyamaink résztvevői számára.

Többféleképpen is hozzájuthatunk az adatokhoz attól függően, hogy milyen előismeretekkel rendelkezünk a különböző tanfolyamainkon:

  • A Java SE szoftverfejlesztő tanfolyamon dolgozhatunk szövegtömbbel, generikus kollekcióval (listával/halmazzal), konzolos és swing-es változatot is készíthetünk. Ehhez a feladathoz objektumorientált alapok mindenképpen szükségesek. Kézzel előállított szövegfájlból olvasva (mentve a Wikipédia oldaláról a táblázatot) hozzájuthatunk a kémiai elemek nevéhez, amihez kivételkezelés is szükséges.
  • A Java EE szoftverfejlesztő tanfolyamon megvalósítható, hogy a program kivételkezeléssel hálózati kapcsolatot épít, majd közvetlenül olvassa és/vagy menti a Wikipédia HTML tartalmából a kémiai elemek nevét szövegfájlba vagy generikus kollekcióba, amivel a feladat visszavezethető az SE szemléletű megközelítésre. Böngészőben futó JSP és/vagy Servlet technológiára építő webalkalmazásként is megvalósítható a feladat.