Programozó versenyek

DEIK Regionális Programozó Csapatverseny, középiskolai kategória, 2023. december 3.

2023. december 3. 10:00 – 2023. december 3. 15:30

Vércsoport

Az informatika és matematika szeretete mellett nem szabad megfeledkeznünk az egyéb (természet)tudományokról sem. Így ebben a feladatban a biológiai ismereteinket kell kicsit megvillogtatnunk. Jelenlegi ismeretink alapján egy (ember)gyermek születéséhez két ember szükséges, akiket nevezzünk most az egyszerűség kedvéért szülőknek. A gyermek mindkét szülőjétől a génállománya felét örökli. Minket ebből jelenleg a vércsoportok érdekelnek. Precízebben az alábbi ismeretekre van szükségünk:

  • Az alábbi pontokban lévő elnevezések szimmetrikusak, így például AB = BA, AO = OA vagy +- = -+. Így megegyezés szerint a feladat során végig a jelen leírásban szereplő jelöléseket szükséges használni (azaz például nem írhatunk BA-t AB helyett).
  • Egy ember vércsoportja A, B, AB és O lehet (amit Magyarországon nullásnak neveznek, de gyakoribb az O betűvel történő jelölés)
  • Mivel mindkét szülőtől 1-1 "betűt" örököl a gyermek, így mindenki az alábbiak valamelyike: AA, AO, BB, BO, AB, OO.
  • Egy ember vércsoportja A-s, ha vagy AA, vagy AO. Hasonlóképp B-s, ha BB, vagy BO. Az AB és OO rendre AB-nek és O-nak felel meg.
  • Egy másik, vérhez köthető tulajdonság az ún. Rh-faktor. A vércsoporthoz hasonlóan ebből is "egyet" örököl a gyermek. A lehetséges kombinációk száma azonban csupán kettő: egy embert (Rh+)-nak nevezünk, ha vagy mindkét szülőjétől a +-t örökli, vagy az egyiktől a pluszt, a másiktól mínuszt (tehát ++, vagy +-). A gyermek egyedül akkor tekinthető (Rh-)-nak ha mindkét szülőjétől a mínuszt örökli.
A feladatunk az lesz, hogy meghatározzuk, hogy két szülő, vagy egy szülő és egy gyermek ismeretében milyen lehet a kimaradó személy vércsoportja.

Input

Az input egyetlen sorból áll, mely három, szóközzel elválasztott egységet tartalmaz. Mindegyik egység struktúrája vagy {A,B,AB,O}{+,-} (például AB-, vagy A+, O-, stb.), vagy a ? karakter. A három egységből pontosan egyetlen a ?. Az első egység az első szülő vércsoportja, a második a második szülőé és az utolsó a gyermekük vércsoportja.

Output

A kimenet egyetlen sor, mely megadja, hogy a kérdőjel helyén mik szerepelhetnek. A kiírható lehetséges egységek az inputnál már látott {A,B,AB,O}{+,-} alakúak. Amennyiben több egység is helyettesíthető a ? helyére úgy a kiírt egységek között pontosan egy szóköz szerepeljen és az egységeken belüli betűk kiírása lexikografikus sorrendben történjen (segítség: A -> AB -> B -> O), a "plusz" és "mínusz" karakter pedig ebben a sorrendben kövesse egymást (tehát az A+ hamarabb van, mint az A-, de az A- az AB+ előtt van). Amennyiben nem lehetséges a ? helyére semmit írni, úgy az X karakter legyen megjelenítve.

Példa

Input:
  1. AB+ ? A-
letöltés szöveges állományként Output:
  1. A+ A- AB+ AB- O+ O-
letöltés szöveges állományként

Magyarázat

  1. AB + ?A? = A:
  2. AB + AA = (AA), AB, (AA), AB
  3. AB + AO = (AA), AB, (AO), BO
  4. AB + ?AB? = A:
  5. AB + AB = (AA), AB, AB, BB
  6. AB + ?O? = A:
  7. AB + OO = (AO), BO, (AO), BO
  8. "plus" + ?"plus"? = "minus":
  9. "pm" + "pm" = "pp", "pm", "pm", ("mm")
  10. "plus" + ?"minus"? = "minus:
  11. "pm" + "mm" = "pm", ("mm"), "pm", ("mm")
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2024.09.30.