Acepta el reto

Ronso

Buenas, estaba hoy más aburrido de la cuenta y me he puesto a ver esta web que me recomendaron hace tiempo. La cosa es que he solucionado el reto, lo he subido y el "juez" me dice que esta mal, y creo que se debe a que no se como lo ejecuta el "juez". No entiendo eso de entradas/salidas o que nombre deben llevar esas variables.

Si alguno ha usado la web le agradecería una breves explicación de como hacerlo ;)

www.aceptaelreto.com

2
mecmec

#1 lo haría bastante simple, con dos enteros recoges los parámetros de entrada en un bucle do-while(!condicion) , donde se calcula la diferencia de canales y si dichos enteros son ambos cero se pone a '1' la variable booleana condición y se acaba el programa.

No se si te he entendido bien, de todos modos xD.

FrioneL

Basicamente que tras recibir el input que pone ahi, salga exactamente el mismo output. Nada de mas, ni siquiera espacios.

El "juez" no mira el programa, solo va a comparar el output que genera tras meterle el juego de pruebas que te da. No va a estudiar tu codigo ni nada.

1
Fyn4r

Pues está guay la web para estos largos días de verano xd

P.D El tal jlmaroto tiene mucho tiempo libre

KooPad

Hay manera de hacerlo con python? No para subirlo a la web, sino para practicar

Troyer

Así hecho rapidito en java:

spoiler

Lo he hecho en 5min pero funciona, ahora ajustalo como quieras, luego mañana ya te explico que he hecho.

LLoid

Lo que #1 pregunta es cómo tiene que formatear la salida para que el juez se lo trague, no es que no sepa hacerlo (creo). Supongo que sacando el valor con un System.out.println se lo tragará

spoiler

Pues así no se lo traga, voy a ver cómo hay que leer los parámetros y si lo descubro lo pongo aquí

Soumynon

No he probado pero la entrada no debería ser así?:

Scanner in=new Scanner(System.in);
int n;


        n=in.nextInt():
Ronso

Me refiero a formatear el texto para que lo coja. Ya que no se si el "juez" usará la clase Scanner, meterá números aleatorios, meterá esos, si meterá uno y saldrá o meterá varios de golpe... Mi código es un espagueti que te cagas, pero funca (no lo tengo aquí ahora mismo) pero creo que me falla el formateo.

1 respuesta
Soltrac

#9 Para este tipo de retos, tienen un sistema que efectivamente es automático, le meten X inputs y todos deben dar el output bien.

Si tu output no está formateado como esperan o no permites introducir los datos como esperan, es imposible que lo interpreten. Así que si crees que efectivamente el código funciona, revisa el formateo del input y del output.

1 respuesta
legent

#1 Tengo como 30 problemas hechos en esa web. Si quieres te comparto todos los problemas y asi aprendes a como enviarlo al juez.

1 respuesta
Ronso

#10 Pués si tiene que ser exactamente igual, tengo que cambiar varias cositas x)

#11 Si me puede compartir aunque sea uno te lo agradecería ;)

1 respuesta
legent

#12 Por ejemplo te pego varios

Números de Lychrel
Constante mágica
Primo de riesgo
Divisores del factorial
Constante de Kaprekar

#12 Si quieres alguno en particular preguntamelo y miro a ver si lo tengo.
La mayoria estan hechos orientados a objetos.

2
1 mes después
CarlosML27

¿Alguien me puede echar una mano con este código en Java? Es el primer problema de todos, el de la Constante de Kaprekar

Me da error TLE (Time limit exceeded). Se supone que el programa debe ejecutarse en menos de 2s, y no sé qué es lo que le pasa.

Código

Un saludo a todos, y gracias a los que queráis ayudarme :)

1 respuesta
B

#14 No estoy muy seguro, pero diría que puede pasar que te aparezca un repDigit como resultado intermedio. Caso que no controlas y que provoca un loop infinito en tu método comprobarVueltas. También te digo que el Scanner de java es muy lento.

De paso, dejo un código AC (C++) que he hecho ahora de este problema:

spoiler

edit: La verdad es que los problemas de este OJ me recuerdan mucho a los "tutorial" del SPOJ, incluso diría que alguno está calcado (y traducido).

1 respuesta
CarlosML27

#15 Hombre, ¿si fuera esRepdigit no entraría en el else directamente no? De ahí que no haga falta comprobar... Quizás sea por el Scanner, ahí ya ni idea...

En C++ creo que podría ser más fácil, sería cuestión de probar también...

1 respuesta
B

#16 editado para no liar a nadie.

1 respuesta
CarlosML27

#17 No porque el numero siempre es de cuatro cifras, de ahí que lo hiciera con el array de 4 fijo... Entonces sería 0999 y 9990 ;)

3 respuestas
B

#18 Sí, tienes toda la razón del mundo, perdon por liarte.

La verdad es que he testeado tu código localmente y me resuelve los 10k numeros posibles en medio segundo. Imagino que los test cases tendran una tonelada de números repetidos o algo similar. También he probado cambiando el scanner por bufferedReader y no noto mucha mejoría. A ver si alguien que controle más que yo de Java sabe decirte por qué.

edit: He editado el código. Este mismo código sin el if(mm[1]==0) ... volvía a dar TLE. Lo curioso es que en mi máquina tu código original resolvía los 10k posibles números sin problema alguno. He comprimido las funciones ordenarMayor/Menor en una sola, rascando algo más de tiempo.

Tu código AC
1 respuesta
Lecherito

Esa web está guay y tiene 3 tipos de entradas (para los estudiantes de fp apuntaos al programame, está bastante guay, y yo me llevé una certificación java por la cara, también por resolver el primer problema xD)

Una es del tipo:
3
X
X
X

Te dice el número de entradas que hay

Otra es del tipo
X
x
x

Hasta que se acaben las entradas

Y otra:
X
X
X
0

Hasta que se cumpla una condición que te piden

La salida es simplemente un sysout. Mucho cuidado con los TLE, son bastante estrictos con eso aparte de hacer vosotros vuestros casos de prueba.

#18 #19 Se hacen demasiadisimas operaciones con los números, los casos de prueba que tienen ellos normalmente tienen de 500k a unos pocos millones de casos (En el programame te dicen el número exacto de casos de prueba). Así que mucho cuidado con las operaciones de más que se hace (la funcion de "llenar" se me hace completamente innecesaria e ineficiente, por ejemplo)

2 respuestas
B

#20 Bueno, simplemente he retocado el código de #18. Siempre he usado C++ para estas cosas (excepto en problemas donde puedes sacar provecho de las regex o algo similar).

Dejo otro código de un problema random que he hecho de este mismo sitio. Decir que me parece un poco feo que no compilen con -O2, como en la mayoría de OJs, he tenido que ponerlo yo :( :

K bits a uno, código + explicación
CarlosML27

#20 ¿Cómo retocarías tú mi código?

B
Las cartas del abuelo: versión O(nlogn)
Cartas del abuelo, versión fácil y eficiente
Molinos de viento
1
2 meses después
J

Hola a todos!!!
Llevo tiempo intentando el problema Embarque en un Transatlántico (189) y no consigo que me lo den por bueno, aquí os dejo mi código tanto en C como en Java, por si a alguien se le ocurre un algoritmo mejor que el mío.
Gracias por adelantado. ;)

En C:

AC

En Java:

AC

Usuarios habituales