scieee Open visual document viewer

Herramienta de creación de problemas para jueces en línea

Martín Ventura, Gwydion José

Abstract

Existen diversos jueces de programación en línea, plataformas que permiten a profesores y organizadores de concursos diseñar problemas y corregir de manera automática envíos que realicen los usuarios con posibles soluciones. Pero hay un inconveniente: cada juez se basa en un formato concreto de problemas, como veremos más adelante. Y por si fuera poco, además las herramientas que se facilitan para trabajar con los problemas son difíciles de utilizar, ya que suelen ser vía consola. Por eso, en este proyecto se diseña una herramienta interactiva con interfaz gráfica que, partiendo del formato de problemas desarrollado en la Facultad de Informática, permite crear, modificar y validar problemas, mostrando algunas estadísticas y haciendo que el proceso sea mucho más sencillo de lo que era anteriormente. Se apoya en ACREx, un sistema implementado también en la Facultad que funcionaba con comandos de consola.

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 , modica 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 dicul 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. Modicació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 sucien 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 clasicados 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 icados 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 edenidos 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 conic os; es deci , que si se ealizan modicaciones po dos usua ios y hay conic 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 ical (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. Modicación Si decidimos modica 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 congu 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 ocial, 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 ocial. 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 deni 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 ican 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 modicaciones 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 simplica 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 eejados 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 modica , ealiza el cambio y ol e hacia a iba. Y no e a muy ecien 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 deni 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 ica 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 ocial: debe exis i , se única y ene un esul ado espe ado co ec o. 29 4. Ejecu a la solución ocial 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 ocial con en ada acía es igual a la que apa ece en el a chi o emp y.ou . 6. Ve ica 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í unica 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í modica