Programozó versenyek

DEIK Regionális Programozó Csapatverseny, egyetemi/főiskolai kategória, 2016. december 4.

2016. december 4. 10:10 – 2016. december 4. 15:10

Nem kell a CAPTCHA!

A CAPTCHA (Completely Automated Public Turing Test To Tell Computers and Humans Apart) elvileg képes megkülönböztetni az embereket a számítógépes robotoktól úgy, hogy felad a felhasználónak egy egyszerű rejtvényt, amely legtöbbször véletlenszerűen kiválasztott betűk sorozata véletlenszerű vonalakkal és hasonló „zajokkal” ellátva. Íme néhány példa CAPTCHA rejtvényekre:

Forrás: http://www.extremetech.com/wp-content/uploads/2011/11/captcha-selection1.jpg.

Sajnos azonban nekem problémáim vannak sok CAPTCHA megfejtésével, különösen az olyanokéval, amelyek keverve tartalmaznak kis- és nagybetűket. Az első pár próbálkozásra mindig elrontom őket. Szóval nem kell több nehéz CAPTCHA!! A feladatod, hogy írj egy programot, amely elnézi a gyenge képességeimet a CAPTCHA rejtvények megoldása terén. A programnak a következőképpen kell működnie:

  1. A programnak a hasonló kinézetű kis- és nagybetűket azonosként kell kezelnie. Pontosabban fogalmazva: ha a helyes betű egy nagybetű (a lentebb látható táblázatból), de én a betű kisbetűs alakját írom a válaszba (szintén a lenti táblázatból), akkor ezt a betűt helyesnek kell tekinteni, és fordítva. A gyakran összekevert betűpárokat az alábbi táblázat tartalmazza. Egyéb párok esetén (például G és g) a felhasználónak szigorúan az eredeti alakot (rendre G-t, illetve g-t) kell leírnia.
    C c K k S s V v Y y
    E e O o T t W w Z z
    F f P p U u X x I l *
    * Az I egy nagy i betű, mint az „India” szóban, míg az l a kis L betű, mint a „leves” szóban.
    Ha például a CAPTCHA a (7d6bf), és én 7d6bF-et válaszolok, akkor ezt helyesnek kell tekinteni.
  2. A programnak az 5 betűnél hosszabb CAPTCHA-k esetén egy hibát meg kell engednie, nem számítva az 1. pontban említett hibákat.
    Ha például a CAPTCHA a (7d6bf), és én 2d6bf-et válaszolok, ez hibásnak számít (mert egy hiba van benne, de csak 5 betűből áll).
    Ha viszont a CAPTCHA az (apricot), és én aPricod-ot válaszolok, akkor ezt helyesnek kell tekinteni (mert egy hiba van egy 6 betűs szóban).

A bemenet specifikációja

A bemenet számos tesztesetet tartalmaz. Minden teszteset 2 szóból áll egy sorban, egyetlen szóközzel elválasztva. Az első szó egy helyes CAPTCHA, a második szó az én válaszom. A két szó mindig azonos hosszúságú lesz. A tesztesetek száma ismeretlen, a bemenetet az állományvégjel (EOF) zárja.

A kimenet specifikációja

Minden tesztesetre a programodnak vagy a „Right” szót kell kiírnia (ha helyesen válaszoltam meg a CAPTCHA-t), vagy a „WRONG” szót (ha helytelen a válaszom), majd egy szóközt követően a hibák számát kell kiírni.

Példa bemenet

  1. 7d6bf 7d6bF
  2. 7d6bf 2d6bf
  3. apricot aPricod
  4. ACM-icpC ADm-iCeC
  5. Girl girl
letöltés szöveges állományként

A példa bemenethez tartozó kimenet

  1. Right 0
  2. WRONG 1
  3. Right 1
  4. WRONG 3
  5. WRONG 1
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2019.03.01.