Full text
He amien a de c eación de p oblemas
pa a jueces en línea
TRABAJO DE FIN DE GRADO
Gwydion J. Ma ín Ven u a
Doble G ado en Ingenie ía In o má ica y Ma emá icas
Uni e sidad Complu ense de Mad id
Junio 2017
Documen o maque ado con TEX
i
S .1.0+.
He amien a de c eación de
p oblemas pa a jueces en línea
Memo ia que p esen a pa a op a al í ulo de
Doble G ado en Ingenie ía In o má ica y Ma emá icas
Gwydion J. Ma ín Ven u a
Di igida po los doc o es
Ma co An onio Gómez Ma ín
Ped o Pablo Gómez Ma ín
Doble G ado en Ingenie ía In o má ica y Ma emá icas
Uni e sidad Complu ense de Mad id
Junio 2017
Copy igh c
Gwydion J. Ma ín Ven u a
Resumen
En dos palab as puedo esumi cuan o he
ap endido sob e la ida: sigue adelan e.
Robe Lee F os
Exis en di e sos jueces de p og amación en línea, pla a o mas que pe -
mi en a p o eso es y o ganizado es de concu sos diseña p oblemas y co egi
de mane a au omá ica en íos que ealicen los usua ios con posibles solucio-
nes. Pe o hay un incon enien e: cada juez se basa en un o ma o conc e o
de p oblemas, como e emos más adelan e. Y po si ue a poco, además las
he amien as que se acili an pa a abaja con los p oblemas son di íciles de
u iliza , ya que suelen se ía consola.
Po eso, en es e p oyec o se diseña una he amien a in e ac i a con in-
e az g áca que, pa iendo del o ma o de p oblemas desa ollado en la
Facul ad de In o má ica, pe mi e c ea , modica y alida p oblemas, mos-
ando algunas es adís icas y haciendo que el p oceso sea mucho más sencillo
de lo que e a an e io men e. Se apoya en
ACREx
, un sis ema implemen ado
ambién en la Facul ad que uncionaba con comandos de consola.
Palab as cla e
Acep a el e o, juez en línea, o ma o de p oblemas, p og amación, Ja a,
casos de p ueba, in e az, alidación, soluciones.
Abs ac
In h ee wo ds I can sum up e e y hing
I' e lea ned abou li e: i goes on.
Robe Lee F os
The e a e se e al online p og amming judges. They a e pla o ms ha
allow eache s and o ganize s o c ea e p oblems and au oma ically co ec
he sendings he use s make wi h hei own solu ions. Bu he e is a main
p oblem he e: each judge is based on a pa icula p oblem o ma , as we will
see. Mo eo e , he ools o wo k wi h he p oblems a e dicul o use: hey
a e based on he command line.
This is he eason we decided o design an in e ac i e, g aphic ool, ha
uses he p oblem o ma de eloped in he Compu e Science Facul y. I allows
you o c ea e, modi y and alida e p oblems, showing some s a is ics and
making he p ocess so much easy han i was be o e. I leans on
ACREx
, a
sys em also de eloped in he Facul y ha wo ked on he command line.
Keywo ds
Acep a el e o, online judge, p oblem's o ma , p og amming, Ja a, es -
case, in e ace, alida ion, solu ions.
ii
Índice
Resumen
Abs ac
ii
1. In oducción 1
1.1. Mo i ación ............................ 1
1.2. ¾Po qué es o y no o a cosa? . . . . . . . . . . . . . . . . . . 2
1.3. Esquema de la memo ia . . . . . . . . . . . . . . . . . . . . . 2
2. Es ado del a e 5
2.1. Juecesenlínea .......................... 5
2.1.1. UVa Online Judge . . . . . . . . . . . . . . . . . . . . 5
2.1.2. Ju ge ........................... 7
2.1.3. Sphe e........................... 7
2.1.4. CodeFo ces ........................ 8
2.2. Fo ma os de p oblemas . . . . . . . . . . . . . . . . . . . . . . 9
2.2.1. Polygon.......................... 10
2.2.2. Ka is........................... 11
3. Pun o de pa ida 13
3.1.
Acep a el e o
........................... 13
3.2. Fo ma o de p oblemas de
Acep a el e o
............ 15
3.3. ACREx .............................. 16
4. Manual del usua io 19
4.1. Inicio de la aplicación . . . . . . . . . . . . . . . . . . . . . . 19
4.1.1. C eación.......................... 19
4.1.2. Modicación . . . . . . . . . . . . . . . . . . . . . . . 20
4.2. Ven anap incipal......................... 20
4.2.1. Me ada os......................... 20
4.2.2. Enunciado......................... 21
4.2.3. Soluciones y gene ado es . . . . . . . . . . . . . . . . . 21
ix
Capí ulo 2
Es ado del a e
En lo que pa ecemos, odos enemos un
juez; en lo que somos, nadie nos juzga.
F ied ich Schille
Resumen:
en es e capí ulo, se es udian di e sos jueces en línea, es-
pañoles y ex anje os, iendo qué o ece cada uno de ellos, en qué se
di e encian y cuáles son sus semejanzas. A con inuación, se analizan
dos o ma os de p oblemas ampliamen e u ilizados en concu sos in e -
nacionales.
2.1. Jueces en línea
Los jueces en línea son he amien as que pe mi en a los p og amado es
en ena se esol iendo di e sos p oblemas que hay almacenados en la base
de da os del mismo, que pos e io men e en ían al juez y és e los e alúa.
También se u ilizan a la ho a de ealiza concu sos de p og amación, ya
que acili an la a ea de los o ganizado es pa a ob ene los esul ados de los
dis in os concu san es.
En los siguien es apa ados, e emos cua o de ellos: dos de o igen espa-
ñol, p oceden es de las uni e sidades de Valladolid y Poli écnica de Ca aluña,
y dos del es e de Eu opa, conc e amen e de Polonia y Rusia.
2.1.1. UVa Online Judge
La Uni e sidad de Valladolid cuen a con un juez en línea c eado en 1995
po Miguel Ángel Re illa, p o eso de ma emá icas y algo i mia, y Ci iaco
Ga cía de Celis, uno de sus es udian es. Se hizo público dos años más a de, y
en 1999 ue on sede de las
SWERC
(Sou hwes e n Eu ope Regional Con es ),
5
6
Capí ulo 2.
Es ado del a e
uno de los concu sos de p og amación más p es igiosos a ni el eu opeo. El
juez ac ual
1
ue desa ollado en 2007, eemplazando el an e io .
Llama la a ención que oda la web del juez es é en inglés, siendo una
pla a o ma de o igen español. Sin emba go, la in e az es lo sucien emen e
cla a como pa a en ende la sin p oblemas.
Con iene más de 3000 p oblemas, que se pueden encon a clasicados
po ca ego ías, como in e ac i os o de concu sos, así como po olúmenes
o ganizado po echa de c eación. Cuando accedemos a la cha de un p o-
blema conc e o, se nos mues a el enunciado (que incluye la mo i ación y el
o ma o de en ada y salida, con ejemplos incluidos), jun o con su lími e de
iempo, además de bo ones pa a en ia una solución, depu a la, mos a es-
adís icas o desca ga el PDF con el enunciado. Además, an es de en a a un
p oblema, en la is a de una ca ego ía o olumen podemos e el po cen aje
de acie os espec o de los en íos y de los usua ios.
Figu a 2.1: Vis a de un p oblema en UVaOJ
Una de las uncionalidades más ú iles de UVaOJ es la de
Quick Submi
o en ío ápido, que simplemen e indicando el ID del p oblema a esol e
y el lenguaje en el que es á p og amado, y p opo cionando el código bien
subiendo un a chi o uen e o bien pegando el código en un á ea de ex o, se
ealiza el en ío, sin ene que accede a la cha del p oblema conc e o.
Po úl imo, podemos des aca
My uHun
, una he amien a desa ollada
po Felix Halim en la Uni e sidad de Singapu , que se enca ga de egis a
es adís icas y p opone p oblemas a los usua ios en base a los en íos que
han ealizado an e io men e. No es p opia de la UVa, pe o es á adap ada a
la base de da os del juez. También implemen a un cha en el que los usua ios
1
h p://u a.onlinejudge.o g
2.1. Jueces en línea 7
se comunican pa a esol e dudas, además de es a disponible la API pa a
ob ene es adís icas en i o ace ca del juez online.
2.1.2. Ju ge
Ju ge
2
es el juez en línea de la Uni e sidad Poli écnica de Ca aluña,
desa ollado po Jo di Pe i y Sal ado Rou a, ambos p o eso es del Depa -
amen o de Ciencias de la Compu ación. Es el juez u ilizado en la Olimpiada
In o má ica Española, lo que mues a su obus ez y comple i ud.
Con iene un amplio ca álogo de p oblemas, aunque la mayo ía de ellos
es án en ca alán o inglés, así como una sección de cu sos que engloban di e -
sos p oblemas. Llama la a ención el cu so Lea ning o p og am: p og amas
sencillos pa a ap ende a p og ama , de mane a que comienza po a eas sen-
cillas (ope aciones numé icas, bucles) y a subiendo de ni el p og esi amen e
(p ocedimien os, ecu sión, ec o es...).
Sopo a mul i ud de lenguajes, desde los más comunes como Ja a, C++
o Py hon, has a los más inespe ados, como B ain uck, Lua o Whi espace.
Además, iene un sis ema de log os, que se an concediendo según esuel es
p oblemas.
Po úl imo, Ju ge pe mi e desca ga ce icados de en íos co egidos,
incluyendo en un a chi o comp imido mado la solución en iada e in o ma-
ción sob e el au o de la misma.
2.1.3. Sphe e
Es a pla a o ma
3
polaca, p opiedad de Sphe e Resea ch Labs, es una de
las más u ilizadas en el mundo. Se ha u ilizado en más de 2400 concu sos en
los úl imos 5 años, pues la c eación de és os es muy sencilla y ápida.
Tiene ap oximadamen e 13.000 p oblemas, que pueden se esuel os en
más de 45 lenguajes de p og amación di e en es. En es e caso, y en es o me-
jo a a Ju ge, implemen a un edi o de ex os en la p opia web, que además
incluye una plan illa dependiendo del lenguaje de p og amación que selec-
cionemos.
Tiene ambién un Hall de la ama en el que se apa ecen los mejo es eso-
lu o es de p oblemas que hay ac ualmen e egis ados, y una sección S a us
que mues a las a eas que es á ealizando el juez en ese mismo momen o
( e gu a 2.3).
2
h p:://ju ge.o g
3
h p://www.spoj.com/
8
Capí ulo 2.
Es ado del a e
Figu a 2.2: Resul ado de una en ega en Ju ge
2.1.4. CodeFo ces
De Polonia nos amos a Rusia, donde nació CodeFo ces
4
en 2010. De los
cua o jueces que hemos analizado, és e es el que cuen a con una in e az
más sencilla e in ui i a, pe o no po ello es el más sencillo de odos.
Además del g an banco de p oblemas que almacena, y que se pueden
en ia en cualquie momen o, cuen a con dos modos compe i i os: los con-
cu sos (
Con es
) y los en enamien os (
Gym
). Si bien ambos ienen una echa
y du ación de e minadas, la di e encia p incipal adica en que en los concu -
sos se pueden pasa algunos es s de mane a p e ia a en ia la solución, pe o
a la ho a de co egi lo se u iliza án o os, p esumiblemen e más complica-
dos; en cambio, en el modo de en enamien o se pueden ejecu a odos los
es s disponibles pa a un p oblema, además de ecibi comen a ios sob e el
esul ado.
4
h p://code o ces.com/
2.2. Fo ma os de p oblemas 9
Figu a 2.3:
S a us
de Sphe e
O a de las u ilidades que incluye es un sis ema de g upos p i ados, los
cuales pueden o ganiza sus p opios concu sos in e nos y p epa a se de ca a
a u u os e en os globales. En la ba a de he amien as de la web apa ecen
ambién los g andes concu sos, como puede se la Copa Rusa de Código.
Pe o lo que ealmen e di e encia a CodeFo ces del es o de jueces analiza-
dos es la API p opia que o ecen, con la que podemos accede a pa e de sus
da os en o ma o JSONECMA-404 (1999). Median e pe iciones HTTP a la
di ección
h p://code o ces.com/api/{nomb eDelMé odo}
, se ecibe la in-
o mación eque ida. En e los mé odos, se encuen an
blogEn y.commen s
pa a e los comen a ios de una en ada conc e a,
con es . a ingChanges
pa a conoce qué usua ios han conseguido pun os después de un concu so o
use .s a us
pa a sabe cuáles son los en íos que ha ealizado el usua io en
cues ión.
2.2. Fo ma os de p oblemas
Cuando hablamos de un p oblema de p og amación, ob iamen e necesi a
un enunciado que plan ee la a ea a ealiza . Sin emba go, al que e in o-
duci lo en un juez en línea, necesi a de más elemen os que pe mi an e alua
la en ega del usua io, como pueden se una solución álida, unos casos de
p ueba, unos ejemplos de en ada/salida, e c. En los siguien es apa ados,
e emos di e en es o ma os de p oblemas que se pueden encon a en la web.
10
Capí ulo 2.
Es ado del a e
Figu a 2.4: Concu sos en CodeFo ces
2.2.1. Polygon
Polygon
5
es una pla a o ma online (en ase be a) desa ollada en Rusia
que o ece un mé odo p o esional de p epa a p oblemas pa a concu sos de
p og amación. Cualquie a puede accede a ella, sólo es necesa io c ea una
cuen a de usua io g a ui a.
Una ez c eada, se o ece una in e az sencilla pe o cla a pa a c ea los
p oblemas, sepa ando cada pa e de los mismos en di e en es páginas. Po
ejemplo, en una se indica la in o mación gene al, como los a chi os de en ada
y salida, los lími es de iempo y memo ia o las e ique as del p oblema; en
o a, se diseña el enunciado en el idioma deseado, in oduciendo cada uno de
los apa ados en campos conc e os (leyenda, o ma os de en ada y salida,
no as o u o ial).
O ece mul i ud de uncionalidades: comp obación de soluciones po com-
pa ación con una solución co ec a, alidación del p oblema espec o a los
es s, inclusión de paque es p edenidos y un panel de mensajes, que so-
po a p opues as de mejo a, in o me de e o es y discusiones en e usua ios.
Además, pe mi e c ea concu sos de p og amación a pa i de los p oblemas
ya c eados, ecopilando oda su in o mación y pe mi iendo el acceso a o os
usua ios.
Po úl imo, me gus a ía des aca los siguien es aspec os de Polygon:
Con sólo un click, mues a el enunciado en L
A
TEX, HTML y PDF a
pa i de los da os in oducidos an e io men e.
Incluye una ges ión del acceso de los usua ios al p oblema, que pe mi e
concede pe misos de lec u a, esc i u a o ninguno a cada uno de ellos.
5
h ps://polygon.code o ces.com
2.2. Fo ma os de p oblemas 11
Implemen a
edi sessions
(sesiones de edición), que pe mi e abaja
con copias locales en el se ido . Es o implica que si enemos cualquie
p oblema y pe demos la conexión a in e ne o se apaga nues o equipo,
la copia queda á gua dada en el se ido , pe o sin mos a los cambios
al es o de usua ios has a que no hagamos un
commi
.
Relacionado con los
commi s
, no implemen a esolución de conic os; es
deci , que si se ealizan modicaciones po dos usua ios y hay conic os,
una de las dos e isiones se des uye.
Figu a 2.5: Vis a In o mación gene al de un p oblema en Polygon
2.2.2. Ka is
O o o ma o u ilizado en la web es Ka is
6
, c eado en 2003 po Peh
Söde man jun o con la ayuda de cua o compañe os suyos del Real Ins i u o
de Tecnología (Kungliga Tekniska Högskolan, KTH) de Es ocolmo (Suecia).
Sin emba go, se u ilizó exclusi amen e de mane a p i ada en ac i idades de
la uni e sidad, has a que se c eó OpenKa is
7
en junio de 2013.
Se basa en un sis ema de di ec o ios pa a cada p oblema y un a chi o de
ex ensión YAML que con iene la in o mación básica del mismo ( uen e, au o ,
licencia del p oblema, lími es de ejecución e in o mación pa a la alidación).
Como emos en la gu a 2.6, es una simple elación en e los di e en es
a ibu os y su alo .
El diseño del di ec o io es el siguien e:
6
h p://p oblema chi e.com
7
h p://open.ka is.com
12
Capí ulo 2.
Es ado del a e
Figu a 2.6: Ejemplo de a chi o
p oblem.yaml
Da os de p ueba:
odos en la ca pe a
/da a
pe o sepa ados en dos
di ec o ios, uno pa a los que se incluyen en el enunciado (
/sample
) y
o o pa a el es o de ejemplos que se p oba án en los es s (
/sec e
).
Enunciado:
ca pe a
/p oblem_s a emen
con el a chi o . ex que des-
c ibe el p oblema, y el es o de a chi os necesa ios pa a su compilación.
Es impo an e esal a que sólo admi e un enunciado, po lo que no
sopo a aducciones.
Validado es:
se incluyen dos ca pe as, una pa a alida la en ada
(
/inpu _ o ma _ alida o s
) y o a pa a la salida (
/ou pu _ alida o s
),
aunque és a no se suele u iliza .
En egas:
en la ca pe a
/submissions
se ecogen p og amas álidos
(
/accep ed
), inco ec os (
/w ong_answe
), e óneos (
/ un_ ime_e o
)
y que se exceden en iempo de ejecución (
/ ime_limi _exceeded
).
Todos los elemen os, a excepción de los alidado es de salida, son necesa ios
pa a que el p oblema se conside e co ec amen e o ma eado.
Además, Ka is o ece es he amien as pa a abaja con los p oblemas
en el paque e
p oblem ools
:
e i yp oblem
, que ejecu a una comp obación gene al de odo el p o-
blema.
p oblem2pd
, que gene a un pd con el enunciado del p oblema.
p oblem2h ml
, que gene a un h ml con el enunciado del p oblema.
Capí ulo 3
Pun o de pa ida
Toda la glo ia p o iene de a e e se a
comenza
Eugene F. Wa e
Resumen:
en es e capí ulo, e emos qué es
Acep a el e o
, el juez
en línea pa a el que es á pensada la aplicación desa ollada, algunas
es adís icas de la pla a o ma y odo lo que o ece a usua ios. También
analiza emos el o ma o de p oblemas que se u iliza, ya que es el mismo
con el que abaja emos pos e io men e en la aplicación. Po úl imo,
se es udia el conjun o de he amien as que o ece el paque e
ACREx
.
3.1.
Acep a el e o
Como se ha mencionado an e io men e,
Acep a el e o
es una pla a o ma
web en la que se plan ean nume osos p oblemas de p og amación, p opios o
inspi ados en o os que han apa ecido en concu sos de odo el mundo, y se
o ece al usua io la posibilidad de esol e los (en C, C++ o Ja a) y en ia
la solución pa a su e aluación.
Los c eado es son Ma co An onio y Ped o Pablo Gómez Ma ín, am-
bos co-di ec o es de es e abajo e in eg an es del G upo de Aplicaciones de
In eligencia A ical (GAIA)
1
. Ac ualmen e, cuen a con más de 300 p oble-
mas dis ibuidos de dos o mas di e en es: po un lado, en olúmenes de 100
p oblemas según su ID; po o o, en ca ego ías (p og amación, concu sos,
exámenes, emá ica... y sus p opias subca ego ías). Además, en la página
p incipal se des aca el p oblema de la semana.
1
h p://gaia. di.ucm.es
13
20
Capí ulo 4.
Manual del usua io
Figu a 4.1: Ven ana inicial
4.1.2. Modicación
Si decidimos modica un a chi o ya exis en e, podemos elegi en e ca -
ga un a chi o
zip
con el p oblema o lee un di ec o io en el que se encuen e.
Es cla o que el p oblema debe encon a se en el o mado desc i o en la sec-
ción 3.2, ya que si no es así el p og ama no se á capaz de lee lo co ec amen e
y end emos un allo de ca ga. Si odo a bien, se nos mues a la en ana
p incipal, que pasamos a desc ibi a con inuación.
4.2. Ven ana p incipal
La en a es á es uc u ada en a ias pes añas, de mane a que podemos
accede a la is a del campo que que amos sin que nos moles e el es o de in-
o mación. Po de ec o, cuando se ab e se mues a la pes aña de
Me ada os
.
Jun o a és a, enemos las pes añas de
Enunciado
,
Soluciones y Gene ado es
,
Ejemplos
y
A chi os
, que e emos de enidamen e en las siguien es subsec-
ciones.
Además, en la pa e supe io de la en ana p incipal se incluyen dos
bo ones: uno pe mi e gua da los cambios ealizados, y el o o alida el
p oblema. Es impo an e esal a que, cuando se hace click en
Valida
, se
gua da au omá icamen e, ya que no iene sen ido ealiza cambios en un
p oblema y luego in en a alida la e sión an e io .
4.2.1. Me ada os
En es a p ime a pes aña se incluyen los da os gene ales del p oblema,
como son el nomb e y la u a donde se encuen a, además de una abla con
los au o es que han pa icipado en la elabo ación del p oblema. De cada uno,
4.2. Ven ana p incipal 21
se incluye su nomb e y su co eo elec ónico. Se da opción a añadi au o es
nue os o a elimina los.
Figu a 4.2: Vis a de la pes aña
Me ada os
4.2.2. Enunciado
Se mues a el XML que incluye oda la in o mación del enunciado, es
deci , el í ulo del mismo, la desc ipción/mo i ación gene al, el o ma o de
la en ada y la salida del p oblema, pis as pa a los alumnos e in o mación
pa a el p o eso . Jun o a él, apa ecen es bo ones:
: ab e el a chi o del enunciado en el edi o de ex os po de ec o
del usua io.
: pensado pa a e esca el á ea de ex o que mues a el enun-
ciado después de habe ealizado cambios en el mismo.
: ab e el a chi o PDF compilado a pa i del XML; de nue o,
u ilizando el iso po de ec o que haya congu ado el usua io.
4.2.3. Soluciones y gene ado es
Es a pes aña mues a dos ablas, y los bo ones co espondien es pa a
cada una de ellas: en la pa e supe io , se encuen a la in o mación co es-
pondien e a las soluciones del p oblema, y debajo, la de los gene ado es de
casos de p ueba.
22
Capí ulo 4.
Manual del usua io
La abla pa a las soluciones mues a el au o , el lenguaje en el que
es á p og amada y el e edic o de la solución. Además, se indica cuál
de ellas es la solución ocial, que siemp e debe es a p og amada en C
o C++. Jun o a ella, es bo ones: añadi , elimina y selecciona como
ocial.
La abla pa a los gene ado es incluye el ID del gene ado , el au o y el
lenguaje en que se p og ama. En es e caso, sólo dos bo ones: añadi y
elimina .
Cuando añadimos una solución, se solici a cada uno de los campos men-
cionados. Si el au o no apa ece en la abla de au o es de la pes aña
Me ada-
os
, se ab i á una nue a en ana pa a c ea un au o nue o. De es a mane a,
no asegu amos que odo au o que que amos in oduci apa ezca como au o
del p oblema en el campo gene al.
Es impo an e esal a que cuando se elimina una solución o un gene-
ado , en ealidad simplemen e se es á eliminando de la ep esen ación del
p oblema que hay in e namen e en la aplicación. Así, has a que no se gua den
los cambios, los a chi os siguen o mando pa e del p oblema, y una ez que
se gua den, pasa án a o ma pa e de la pes aña
A chi os
( e sección 4.2.5).
Figu a 4.3: Vis a de la pes aña
Soluciones y gene ado es
4.2.4. Ejemplos
Es a es, jun o con la pes aña de me ada os, la más sencilla de la en ana
p incipal. Mues a el con enido de es a chi os:
emp y.in
: incluye cómo se ía una en ada acía del p oblema.
4.3. Validación 23
sample.in
: en ada del caso de ejemplo, que se mues a en el enunciado
del p oblema.
sample.ou
: salida del caso de ejemplo, que ambién se mues a en el
enunciado.
Los es a chi os se pueden edi a , ya que se mues an en una
JTex A ea
edi able, y a la ho a de gua da el p oblema se lee el ex o que haya in o-
ducido el usua io.
4.2.5. A chi os
Po úl imo, en es a pes aña se mues an odos los a chi os incluidos en
el di ec o io aíz del p oblema que no son e e enciados en el XML o el
enunciado. Es a lis a se ac ualiza en el momen o de gua da los cambios
ealizados, que como hemos dicho en la sección 4.2, se hace ambién de
mane a au omá ica al alida la es uc u a gene al del p oblema.
Apa e de a chi os que se puedan inclui de mane a manual, apa ecen
odos los que se gene an en pasos in e medios de la alidación, como pueden
se los ejecu ables o los esul ados de compila los códigos uen e. Además,
como ya se ha mencionado en la subsección 4.2.3, apa ecen los a chi os de
las soluciones eliminadas.
Debajo de la lis a de a chi os no u ilizados apa ece un bo ón de
Elimina
,
pa a bo a de mane a deni i a el a chi o seleccionado.
4.3. Validación
4.3.1. P oceso
¾De qué se i ía una he amien a pa a edi a a chi os que no nos dije a
si aquello que hemos edi ado iene sen ido? Puede que hayamos edi ado el
a chi o del enunciado y sin que e hayamos come ido un e o de o ma o,
o que una de las soluciones que se han añadido no sea al. Pues bien, pa a
eso enemos el alidado , que hace una comp obación exhaus i a de odo el
di ec o io en el que se encuen a el p oblema. El p oceso que sigue se de iene
si en algún momen o una de las comp obaciones no es sa is ac o ia (puede
que haya e o es meno es que no impidan la alidez del p oblema, los cuales
se no ican pe o sin de ene la comp obación).
Una ez que se han ealizado co ec amen e odas las comp obaciones,
se mues an los esul ados del p oceso. Podemos di idi los da os ob enidos
en es:
Po un lado, se mues an aquellos a isos y pequeños e o es que han
podido su gi du an e la alidación.
24
Capí ulo 4.
Manual del usua io
Po o o, en un diag ama de sec o es apa ece el núme o de soluciones
en cada uno de los lenguajes sopo ados.
Finalmen e, se puede obse a in o mación e e en e a los gene ado es
de casos de p ueba en dos is as dis in as. Po de ec o, e emos una
abla en la que apa ece cada uno de los gene ado es en una la, y en las
columnas los da os p opios de cada uno, como el consumo de memo ia,
el iempo de gene ación y ejecución en cada una de las soluciones y
alo aciones sob e la es uc u a. También podemos op a po e la
g áca de los iempos de ejecución (como se mues a en la gu a 4.5) o
la g áca sob e la memo ia consumida (en es e caso, en la gu a 4.6).
Figu a 4.4: Vis a, con abla, de una alidación
4.3. Validación 25
Figu a 4.5: Vis a, con g áca de iempos, de una alidación
Figu a 4.6: Vis a, con g áca de memo ia, de una alidación
Capí ulo 5
Implemen ación
Hazlo o no lo hagas, pe o no lo in en es
S a Wa s: El Impe io con aa aca
Resumen:
en es e capí ulo, se de allan las di e en es decisiones de
diseño que se han omado a lo la go del desa ollo de la he amien a,
así como las lib e ías ex e nas que se han u ilizado pa a que u iese
una in e az más a ac i a.
Pes añas
Como imos en la sección 3.3,
ACREx
es un conjun o muy po en e de
u ilidades pa a p oblemas de p og amación, pe o las modicaciones en los
mismos se hacen muy ediosas po el o ma o en el que se gua dan. Po ello,
se p opone la c eación de una in e az que acili e el abajo.
Mi p ime a decisión ue basa dicha in e az en pes añas ( e gu a 5.1),
sepa ando los dis in os aspec os del p oblema pa a simplica la is a. Es o
pe mi e cen a la a ención del usua io en los da os impo an es, y edi a
cada apa ado de mane a independien e.
Figu a 5.1: Pes añas de GUI-ACREx
Gua dado de
p oblem.xml
Como se ha comen ado en la sección 3.2, oda la in o mación ela i a al
p oblema iene dada po el a chi o
p oblem.xml
, así que odos los cambios
que se ealicen deben apa ece eejados en el mismo.
27
28
Capí ulo 5.
Implemen ación
Pa a edi a lo, había dos opciones. Po un lado, gua da cada cambio
que se ealiza a de mane a indi idual, como pudie a se añadi un au o al
p oblema. Es o implicaba ene que p og ama un mé odo especíco pa a
cada cambio po encial del p oblema, y en cada uno de ellos ealiza el pa seo
de la in o mación en nodos, a ibu os y á boles pa a busca el campo a
modica , ealiza el cambio y ol e hacia a iba. Y no e a muy ecien e.
Po ello, se op ó po la segunda ía: los cambios que ealiza el usua io
se quedan en la is a, y sólo se hacen e ec i os en el modelo cuando u iliza
el bo ón de
Gua da
. En es e caso, nos ol idamos de mé odos indi iduales
pa a cada caso de uso, ya que lo único que hay que hace es c ea un obje o
de la clase
P oblemXML
( ep esen a la in o mación del a chi o
xml
con la
misma es uc u a que és e) y llama a un
ma shalle
pa a que lo uelque al
a chi o. Ob iamen e, si po cualquie mo i o el p og ama se cie a an es de
habe gua dado, odos los cambios que se hayan ealizado sob e la in e az
se pe de án.
A chi os hué anos
Como se ha mencionado en la sección 4.2.5, la pes aña A chi os de la
en ana p incipal mues a un lis ado con odos los a chi os que no se u ilizan
como base del p oblema. Es deci , que no son código uen e de ninguna
solución ni ejemplo ni gene ado de casos de p ueba, ni es un enunciado,
ni se u iliza den o de uno de ellos. Es a lis a, que es la que luego pe mi e
bo a de mane a deni i a un a chi o que p e iamen e o maba pa e del
p oblema, se ac ualiza cada ez que se gua dan los cambios, po lo que hace
al a ol e a con ma que que emos bo a un a chi o pa a que así sea. De
es a mane a, los cambios que se hacen e ec i os son aquellos que segu o que
el usua io quie e ealiza .
P oceso de alidación
Cuando decidimos alida un p oblema, se siguen una se ie de pasos:
1. Comp ueba que en el equipo en el que se es á ejecu ando hay disponi-
bles compilado es de C, C++ y Ja a, que son los lenguajes sopo ados
pa a el desa ollo de soluciones y gene ado es, así como de L
A
TEX, que
se á con lo que se gene en los enunciados.
2. Ve ica que hay au o es pa a el p oblema, que los a chi os e e encia-
dos en los enunciados se encuen an den o del di ec o io aíz y que los
a chi os de las soluciones se encuen an en los di ec o ios co espon-
dien es.
3. Analiza la in o mación de la solución ocial: debe exis i , se única y
ene un esul ado espe ado co ec o.
29
4. Ejecu a la solución ocial omando como en ada el a chi o .in de
ejemplo, y comp ueba que el esul ado es el indicado en el a chi o
.ou
de ejemplo.
5. Lo mismo, pe o en es e caso con la en ada acía, así que simplemen e
comp ueba que la salida de la solución ocial con en ada acía es igual
a la que apa ece en el a chi o
emp y.ou
.
6. Ve ica la in o mación de los casos de p ueba, al igual que del es o de
soluciones (si las hubie a).
7. Comp ueba que hay un y solo un enunciado de e e encia, que no hay
a ios del mismo idioma y que no se encuen an en el mismo di ec o io.
La clase enca gada de ealiza el p oceso es
Valida o
, pe enecien e al
paque e
es.ac ex. alida o
. Fo ma pa e de las u ilidades o iginales de
ACREx
, aunque se han enido que ealiza cambios pa a la implemen ación de
la in e az. El más impo an e de odos es la c eación de un nue o
Ou pu
donde mos a el esul ado de la alidación. Ya que la aplicación o iginal
sólo abajaba con consola, los mensajes de e o , a isos y con maciones
se en iaban a la salida co espondien e, pe o siemp e po consola. Aho a,
exis e un
WindowOu pu
, en el que se mues a oda la in o mación ob enida
a pa i de la alidación.
Edición del enunciado
Como hemos is o en la subsección 4.2.2, el campo del enunciado no es
edi able. Es o iene un mo i o: cada usua io u iliza su edi o de ex os p e e-
ido (No epad++, Emacs... o incluso el Bloc de no as na i o de Windows), y
ninguna implemen ación de edición de ex o en Ja a a a se mejo que esa;
po ello, se incluye el bo ón
Edi a
, que au omá icamen e ab e el a chi o con
el edi o de ex o po de ec o del usua io.
Pes aña
Sols&Gens
En un p incipio, es a pes aña es aba di idida en dos: una pa a soluciones
y o a pa a gene ado es. Sin emba go, as a ios cambios de diseño, decidí
unica las, ya que si no la en ana se quedaba muy acía cuando se mos aba
una de es as dos pes añas. Además, el uncionamien o de ambas es muy
simila , po lo que no e a an descabellado ubica las dos ablas en la misma
pes aña.
Seaglass LookAndFeel
Las in e aces g ácas c eadas con Swing no son la úl ima moda en diseño:
en gene al, los componen es son planos y abu idos. Po eso, decidí modica