[quiz] [QUIZ #1] A Text-based CAPTCHA

Marco Baringer mb at bese.it
Fri Apr 28 19:15:40 UTC 2006


A Text-based CAPTCHA
--------------------

Overview
========

A CAPTCHA (Completely Automated Public Turing test to tell Computers
and Humans Apart) is something designed to make it easy to distinguish
between a computer and person, they are most often used in blog and
web forum systems to fight spamming. A CAPTCHA can be viewed as a
challenge/response system meeting the following criteria:

1) It must be easy for a computer to generate question/answer pairs.

1b) It must also be easy to verify that some textual input is equal to
    the answer.

2) It must be easy for a person to generate the answer given the
   question.

3) It must be hard for a computer to generate the answer given the
   question.

The most common kind of CAPTCHA is an image containing a set of
numbers which have been somehow distorted, it is (supposedly) easy for
a person to figure what numbers are in the image and very difficult
for a computer to do the same. Images do work great as CAPTCHAs, but
they have a major drawback: it's basically impossible for people with
sight problems to answer the CAPTCHA.

Goal
====

The goal of this quiz is to write a function which produces textual
CAPTCHAs and therefore works well with screen readers and text
browsers. To do this we're going to rely on two observations: 1)
computers can be taught to generate natural-language text but they're
notoriously bad at understanding it and 2) humans are pretty good at
simple arithmetic.

Write a function named cl-user::generate-captach with the following
interface:

    (cl-user::generate-captcha) ==> question, answer

    question - a string
    answer - a string

QUESTION should be a string of English text asking to perform some
simple arithmetic. It is not essential that QUESTION be perfect
English, only that a person, after reading QUESTION can easily deduce,
and type, ANSWER.

Here are same (completely made up) examples:

    (cl-user::generate-captcha)
    ==> "what is one times 2?", "2"

    (cl-user::generate-captcha)
    ==> "start with three apples, eat 2 of them, how mny r lft?", "1"

    (cl-user::generate-captcha)
    ==> "go buy 3 apples, sell them all, how many are left?", "0"

Bonus Questions
===============

1) Write a generator which produces Latin output.

2) Write a captcha-cracker for one of the solutions to this quiz.

3) Write a completly different text based captcha.

Useful Links
=============

http://www.captcha.net/
http://en.wikipedia.org/wiki/Captcha
http://www.w3.org/TR/turingtest/

p.s. - this is the first cl-quiz, comments/suggestions welcome.

-- 
-Marco
Ring the bells that still can ring.
Forget the perfect offering.
There is a crack in everything.
That's how the light gets in.
	-Leonard Cohen



More information about the Quiz mailing list