[Mini-campeonato] Area de un poligono
- Inicie sesión o regístrese para enviar comentarios
Hola muchachos.
Primera vez que posteo un minicampeonato. Aqui les va:
Para calcular el area de un poligono, se lo calcula fraccionando en figuras conocidas y se suman las areas.

Pero seria muy tedioso con un poligono irregular muy grande, si se tienen sus coordenadas en una matriz, resolviendo determinantes, seria mas rápido.
Hacer un programa que dada una matriz n x 2 de el área de un polígono irregular, en menor tiempo y menor espacio de codigo User Rpl.
Sea una matriz, donde se repite la primera fila para que se pueda calcular su área:
Area=(1/2)*DET(Matriz)
[[x1 y1]
[x2 y2]
[x3 y3]
[x1 y1]]
Para resolverlo se realiza unas operaciones.
Area=(1/2)*(DET[[x1 y1][x2 y2]]+DET[[x2 y2][x3 y3]]+DET[[x3 y3][x1 y1]])
o sea:

Y de esa manera calcular el area del siguiente archivo adjunto. una matriz con las coordenadas de un poligono a calcular.
Saludos.
| Adjunto | Tamaño |
|---|---|
| coordenadas.txt | 11.34 KB |
- Inicie sesión o regístrese para enviar comentarios
Otros temas de interes
- PROBLEMA RARO EN HP 50G... POSIBLE VIRUS O ALGO QUE AFECTO MI CALCULADORA
- Programas HP
- The Lost HP Goodies
- Desgaste de la carcaza de la calculadora
- ¿Qué cosas te gustaría para la hp50g? ╣COMPROBADASO NECESITAMOS UN EXCEL HP...╠
- Contraseña
- La HP30b NUEVA CALCULADORA DE HP
- No se enciende
- Comando Inform
Saludos Alexis y a todos los miembros del grupo,
Hace ya varias semanas envié un post referido a ese tema:
El código aquí: http://www.adictoshp.org/node/937
Podría mejorarse para participar en este mini-campeonato ó como ejemplo para entusiastas programadores.
Atte. Dante Aroní C. www.deachp.com
- Inicie sesión o regístrese para enviar comentarios
Y pensar que acaba de abri el hpuseredit para ver si me lo ponia a hacer
- Inicie sesión o regístrese para enviar comentarios
Saludos a Alexis y a todos los miembros del grupo,
Alexis, buen aporte.
El código que envíe antes era sólo para aquellos que recien empiezan a programar por eso era sencillo de entender y bueno un poco lento para matrices muy grandes, lo probé y se demora mucho en comparación con el que enviaste.
Estas son mis propuestas reales:
1era Propuesta:
« TRN AXL
EVAL
0 3 PICK +
OVER DUP HEAD +
* …LIST UNROT
0 SWAP +
SWAP
DUP HEAD +
* …LIST -
2 /
»
90 Bytes., se demora un cuarto del tiempo del programa de Alexis, apróx. tan sólo 12 segundos!! con la matriz gigante de prueba.
2da. Propuesta:
«
TRN AXL
EVAL
DUP
DUP
HEAD + TAIL
3 PICK *
…LIST
UNROT
SWAP
DUP
HEAD + TAIL
*
…LIST -
2 /
»
88.5 Bytes, se demora unas centecimas menos que el de arriba, o sea es más rápido aún!!.
Bueno, todavía se pueden mejorar.
Importante: Para los que no saben que significa el comando …LIST, éste no es otro que ∑LIST, el comando que suma todos los elementos de una lista. Los códigos están listos para copiarlos y pegarlos en e HPUserEdit ó el emulador. Me parece ésta la forma más sencilla aunque el signo de sumatoria aparece así: … y no así: ∑.
Nota: Recuerdo que hace tiempo me quejé porque siempre enviaba mis propuestas y venían otros participantes a modificarlas y reducirlas unos bytes y se llevaban mis puntos ¿¡!?, y bueno creo que la originalidad de mis códigos vale un poco no??
Bueno esta vez no me quejaré así que pueden tratar de modificar mis códigos para hacerlos más rápidos.
Importante: Al probar los cuatro programas vistos en este tema me dí con la sorpresa de que todos dan resultados similares pero no iguales!!! a que se deberá?? a un bug?? ayudenme a investigarlo.
Atte. Dante Aroní C. www.deachp.com
- Inicie sesión o regístrese para enviar comentarios
Hola amigos aquí está mi propuesta, he visto los algoritmos que han empleado todos Uds. aquí y la verdad que son muy buenos todos, unos maestros! Sin duda alguna.
Envió el lite;
AREA
Checksum # 4798h
Bytes. 107.5
« STD -55 CF ARRY→
EVAL * PICK
LASTARG PICK 0
DO UNROT 4 PICK
- SWAP 5 PICK + * +
UNTIL DEPTH 5. <
END 2 / UNROT
DROP2 " Area: " SWAP
»
Area:
483570596.9
TEVAL 7.38256835938
PERIMETRO
Checksum # E757h
Bytes. 154
« STD -55 CF →COL
DROP R→C →COL PICK
0 UNROT
DO - LASTARG DROP
UNROT ABS + UNROT
UNTIL DEPTH 3. ==
END - ABS + '1_m'
UNIT DUP '1_km'
CONVERT
" Perimetro: "
UNROT
»
Perimetro:
'117564.987917_m'
'117.564987917_km'
TEVAL 11.0866699219
Observación, puede que sean más rápido solo que tengo algo saturada la hp y esto obviamente afecta el resultado.
Saludos.
- Inicie sesión o regístrese para enviar comentarios
Sr deachp puede subtituir lo siguiente el codigo queda mas pequeño y mas rapido
«
TRN AXL
EVAL
DUPDUP
HEAD + TAIL
3 PICK *
…LIST
UNROT
SWAP
DUP
HEAD + TAIL
*
…LIST -
2 /
»
Saludos
- Inicie sesión o regístrese para enviar comentarios
Saludos a los participantes,
Aquí les doy mi penúltima propuesta:
(Está lista para copiar y pegar en el HPUserEdit ó en el Emulador)
«
ARRY
HEAD
DUP 2 *
DUP 2 + PICK
SWAP 1 + PICK
ROT
0 0
1 4 ROLL START
ROT 6 PICK *
+
ROT 4 PICK *
ROT + SWAP
NEXT
- 2 /
UNROT DROP2 NEG
»
110.5 Bytes.
Compare mi programa con el de Javier y obtube casi dos segundos de ventaja:
Javier: 6.7 sg.
Dante: 5 sg.
Importante: El comando que aparece como ARRY no es otro que ARRY->, comando que descompone una matriz.
Nota para Javier: A tu programa hay que hacerle una pequeña modificación, falla cuando colocas datos adicionales en la pila sobre la matriz. Y gracias por la sugerencia aunque dí un cambio total a mi programa.
Nota para todos: Todavía no han notado las diferencias en los resultados obtenidos??, he deducido que estos se deben al error cuando se suman muchas cantidades con decimales, error producido por los diferentes comandos que utilizamos.
Todavía se puede reducir...suerte.
Atte. Dante Aroní C. www.deachp.com
- Inicie sesión o regístrese para enviar comentarios
AREA FULL
Checksum # 9838h
Bytes. 303.5
« STD -55 CF
IFERR TYPE
LASTARG SWAP { 3.
29. } SWAP POS
IF 0. ==
THEN KILL
END SIZE
LASTARG SWAP DUP
SIZE
IF 1. ==
THEN DROP KILL
END EVAL
IF 2. ≠
THEN DROP KILL
END
IF 3. <
THEN KILL
END STOΣ CLEAR
RCLΣ ARRY→ DROP
DEPTH PICK LASTARG
PICK 0
DO UNROT 4
PICK - SWAP 5 PICK
+ * +
UNTIL DEPTH 5.
<
END 2 / UNROT
DROP2 '1_m^2' →UNIT
" Area: " SWAP
DUP '1_ha' CONVERT
THEN
END
»
Área:
'483570596.9_m^2'
'48357.05969_ha'
TEVAL 7.45922851562
Reitero que la memoria de mi hp esta full aunque no creo que baje tanto pero es un buen tiempo.
Esta es la versión completa como vera solo admite la data correcta de resto no funcionara o generara basura en la pila etc.
También debemos de tener en cuenta la precisión por ende a probar cual se mantiene mas consistente en cuanto los resultados se refiere.
Para complicar más las cosas en cuanto a las divergencias de los resultados aquí está el resultado del AREA según AUTOCAD 483570814.5785005 y el PERIMETRO es 117273.44714658 a ver quien resuelve el misterio jeje.
Saludos.
- Inicie sesión o regístrese para enviar comentarios
Saludos a todos, creo que esta ha sido una larga noche llena de optimizaciones, y estoy seguro que los AdictosHP que han seguido este mini-campeonato habrán aprendido que existen muchas maneras de desarrollar y optimizar un programa.
Aquí está la que pienso es mi mejor y última propuesta: Demora menos de 5 segundos!! en calcular el área del poligono (matriz) que envió Alexis:
«
ARRY
HEAD
DUP 2 *
DUP 2 + PICK
SWAP 1 + PICK
ROT
0
1 ROT START
ROT
4 PICK * -
SWAP
4 PICK * +
NEXT
2 /
UNROT DROP2
»
95.5 Bytes
He mejorado también la precisión del resultado y ahora obtengo exactamente: 483570596.
Nota: Ya saben!, ARRY es realmente ARRY->, lo explique líneas arriba.
He visto muy buenos códigos aquí. Definitivamente el RPN es lo máximo en optimización.
Atte. Dante Aroní C. www.deachp.com
- Inicie sesión o regístrese para enviar comentarios
Buenos días jeje esta es mi última propuesta por ahora, se bajo considerablemente el tiempo de ejecución y tamaño en todos los algoritmos que he planteado después los testeo con un poco mas de memoria liberada así que prueben y saquen sus propias conclusiones, ya que por cada modificación que hago se llena mas jeje, definitivamente el RPN es lo mejor que ha existido jamás.
La verdad que uno no deja de aprender cada día mas!
Saludos Cordiales
- Inicie sesión o regístrese para enviar comentarios
A menos que otro participante aparezca o se presente otras propuestas, ya esto se da por terminado, el Sr Dante con su ultimo “pedazo” de código que no solo es pequeño sino muy rápido también, tiene la victoria me aventaja por intervalos .14 y .20 seg de diferencia comparando obviamente con mi código más pequeño y con el más completo es loable debido a todos los condicionales que tiene, la verdad es que fue un placer competir ante estos maestros yo que a pesar de ser un usuario desde hace muchos años con las hp siempre me considero un principiante alguien que apenas balbucea el lenguaje user rpl.
Sin más que decir he aquí probablemente la última modificación para no quedar tan rezagado en los tiempos. Je je
Saludos Cordiales.
- Inicie sesión o regístrese para enviar comentarios
me acabo de enterar....
ya va mi propuesta, espero no tardarme mucho 
Saludos!
PD.!!! JA! MI PRIMER INTENTO ARROJO 14 SEG...
SIGO OPTIMIZANDO 
«
COL DROP
AXL SWAP AXL
-> Y X
«
0 X +
Y Y HEAD + *
X X HEAD +
0 Y + * - (SIGMA)LIST ABS 0.5 *
»
»
- Inicie sesión o regístrese para enviar comentarios
Hola amigos, he aquí mi última propuesta las cuales todas son más rápidas que la ULTIMA que ha planteado Dante. Pueden comprobarlo por Uds. mismos.
4.65 es el mínimo valor que agarra el programa de Dante en el emulador y máximo 4.75 esos son sus rangos de intervalos.
En cambio mi propuesta más grande en cuanto al número de bytes (304) se refiere, su rango mínimo esta en 4.51 y el máximo rango esta en 4.61 ósea muy por debajo del rango mínimo del código de Dante.
El programa pequeño el rango mínimo es 4.39.
Saludos Cordiales.
« STD -55. CF ARRY→
HEAD DEPTH PICK
LASTARG PICK ROT 0.
1. ROT
START UNROT 4.
PICK - SWAP 5. PICK
+ * +
NEXT 2. / UNROT
DROP2
»
Checksum # A8E3h
Bytes. 93.5
« STD -55. CF
IFERR TYPE
LASTARG SWAP { 3.
29. } SWAP POS
IF 0. ==
THEN KILL
END SIZE
LASTARG SWAP DUP
SIZE
IF 1. ==
THEN DROP KILL
END EVAL
IF 2. ≠
THEN DROP KILL
END
IF 3. <
THEN KILL
END STOΣ CLEAR
RCLΣ ARRY→ HEAD
DEPTH PICK LASTARG
PICK ROT 0. 1. ROT
START UNROT 4.
PICK - SWAP 5. PICK
+ * +
NEXT 2. / UNROT
DROP2 '1_m^2' →UNIT
"Area:" SWAP
DUP '1_ha' CONVERT
THEN
END
»
Checksum # 48F4h
Bytes. 308
- Inicie sesión o regístrese para enviar comentarios
Saludos a todos denuevo,
La verdad que me sorprendiste Javier, pensé que ya no presentarías otra propuesta y cierto fue ligeramente más rápida que la mía... aquí los tiempos:
Javier: 3.8940sg
Dante: 4.0209sg
Tiempos promedio medidos en el emulardor a velocidad real.
Pero quería mencionarte nuevamente que tu programa falla cuando hay datos adicionales en la pila sobre la matriz en prueba enviada por Alexis (Aproposito, ¿Donde esta él?).
Bueno, no pensé enviar una propuesta más, pero aquí me tienen:
« ARRY
HEAD DUP 2 *
DUP 2 + PICK
SWAP 1 + PICK
ROT SWAP 5 PICK *
1 ROT 1 - START
SWAP
6 PICK - ROT * -
NEXT
UNROT * -
SWAP DROP
2 / »
108 Bytes (Código listo para copiar y pegar en el HPUserEdit ó el emulador)
Tiempo: 3.2185sg !! Importante: Puede trabajar con datos adicionales en la pantalla, no necesita modificar flags.
Nota: Creo que apartir de este momento sería muy notorio si modificamos (optimizamos) los programas de los demás competidores para tomar ventaja. Lo digo para todos, incluyendome.
El RPN nunca deja de sorprender. Pero que buenos códigos, la diferencia entre los tiempos obtenidos es mínima.
Atte. Dante Aroní C.
- Inicie sesión o regístrese para enviar comentarios
La verdad que no me sorprende, será que esta locura no tiene fin? Sabía muy bien que Ud. iba a plantear otra solución solo que no prepare un plan B, si bien anteriormente había mencionado que probablemente era mi última propuesta mas no había dado la certeza de que lo fuera, pero si dije en la más reciente que era la última! suponía que otra propuesta estaría entre los resultados que había obtenido pero su brillante solución bajo considerablemente los tiempos, puedo intentar hacer algo similar pero evidentemente los resultados podrían ser los mismos o muy próximos, bajar más de 3 seg si parece imposible en fin, no necesite calcular el tiempo de su última propuesta ya que con solo verla supe que era más rápida! De eso no tengo duda alguna. Lo que si noto es la incongruencia con los tiempos que decimos haber obtenidos en nuestros respectivos emuladores por ejemplo yo nunca obtuve en mi PC (emulador) estos tiempos o ni remotamente parecidos a lo que Ud. menciono;
Javier: 3.8940sg
Dante: 4.0209sg
Así que le agradecería encarecidamente que publicara el algoritmo o metodología que Ud. emplea para tener el estándar y estar seguro de tener la certeza de que cada uno está manejando o debería obtener hipotéticamente los mismos resultados o muy similares.
Con respecto a mi programa desde un principio sabía que su correcto funcionamiento depende que no debe haber ningún dato o elemento previo en la pila, antes de ingresar la matriz se debe de dar un clear y luego colocar la matriz de data, claro ya tengo el que no da error con algún dato previo o existente en la pila. Modestamente utilizo el otro programa al que le agregue toda una serie de condicionales para su correcto funcionamiento. Aunque acoto que este también necesita de clear pero eso se debe a como lo estructure, y así quedara hasta que decida lo contrario.
Por cierto pude notar una pequeña variación en el resultado de su nuevo código! A que se deberá la existencia de tanta divergencia en los resultados.
Bueno su último código automáticamente lo acredita como el vencedor más rápido del viejo oeste! Eso solo si no aparece otro adicto con alguna novedad. Sabía que para tener esta victoria no iba a ser nada fácil costaría sangre y fuego!
Enhorabuena!
Atte. Un humilde aprendiz.
- Inicie sesión o regístrese para enviar comentarios
Saludos a todos,
Javier tienes razón, lo de los tiempos en el emulador pueden variar de PC en PC, a continuación muestro una tabla con datos tomados de una calculadora HP50G real completamente vacia:
<strong>Participante____Post____TEVAL(sg)_______Resultado</strong>
Alexis__________#2______32.3364_________483570597.192
Dante(2)________#4______9.1912__________483572500
Javier__________#5______6.4473__________483570596.9
Dante___________#7______5.8551__________483570000
Dante___________#9______5.7206__________483570596
Martin__________#12_____10.7791_________483570596
Javier__________#13_____5.5211__________483570596.9
Dante___________#14_____4.6055__________483570597.5Para calcular los tiempos coloqué la matriz enviada por Alexis en la pantalla, luego el nombre del programa en cuestión entre apóstrofes y ejecute el comando incorporado en la HP50G: TEVAL. (Modo RPN)
Los tiempos mostrados son los mínimos obtenidos luego de 4 intentos para cada programa.
Matriz enviada por Alexis: [Ver]
Nota1: Desactivar la visualización de la hora en la pantalla (Flag -40). Nota2: Los programas en prueba han sido guardados y ejecutados en modo aproximado.
Atte. Dante Aroní C. www.deachp.com
- Inicie sesión o regístrese para enviar comentarios
Gracias Sr Dante por la aclaratoria.
Saludos Cordiales.
- Inicie sesión o regístrese para enviar comentarios
Hola muchachos, muchas gracias por unirse al minicampeonato, estuve ocupado y veo que han avanzado mucho, pero mi nueva propuesta ya la subire.
El tiempo en emulador no puedo compararlo, hice la prueba en una HP49G+ Real para que me de ese resultado, los tiempos del emulador y la calculadora real no son iguales y aproximando hay cierta diferencia.
Veamos quien gana en tiempo y tamaño de programa.
- Inicie sesión o regístrese para enviar comentarios
Saludos a todos denuevo,
"El que se despide varias veces ...es porque no quiere irse..."
Las cosas parecen de no acabar, otra mejora en mi código:
« ARRY
HEAD DUP 2 *
DUP 2 + PICK
SWAP 1 + PICK
ROT SWAP 5 PICK *
1 ROT 1 - START
UNROT 6 PICK - * -
NEXT
UNROT * -
SWAP DROP
2 / »
105 Bytes.
Añadiendo una línea más a la tabla:
<strong>Participante____Post____TEVAL(sg)_______Resultado</strong>
Dante___________#19_____4.4442__________483570597.5Atte. Dante Aroní C. www.deachp.com
- Inicie sesión o regístrese para enviar comentarios
Hola amigos, vaya Dante cuando llegaras al límite?, no dejas de sorprender más corto y más rápido tu ultimo código, por simple curiosidad de saber que tan rápido llegaría a ser, he tomado TU CODIGO y le he COMBINADO con algunas líneas implementadas en mi código espero no te molestes, esto no te resta ningún merito de ninguna manera hasta ahora eres el único que has logrado el código más rápido de eso no hay duda, es para que sigamos en la búsqueda del límite de velocidad y tamaño logrado en User Rpl.
Observación, aunque Dante sugirió modificar los programas de los demás para optimizarlos, no pretendo obtener merito alguno por algo que no he realizado simplemente hice una pequeña modificación sobre el trabajo realizado por Dante.
Saludos Cordiales.
Aquí está el código de Dante Variante Dante. 108.5 bytes y :s: 3.236 en el emulador.
« -55. CF STOΣ CLEAR
RCLΣ ARRY→ HEAD
DEPTH PICK LASTARG
PICK ROT SWAP 5.
PICK * 1. ROT 1. -
START UNROT 6.
PICK - * -
NEXT UNROT * -
SWAP DROP 2. /
»
« ARRY HEAD DUP 2.
* DUP 2. + PICK
SWAP 1. + PICK ROT
SWAP 5. PICK * 1.
ROT 1. -
START UNROT 6.
PICK - * -
NEXT UNROT * -
SWAP DROP 2. /
»
Con este ajuste el código DE DANTE vuela.
Bytes 105.5
Tiempo en el emulador s: 3.2069
- Inicie sesión o regístrese para enviar comentarios
Que tal, envío mi propuesta. Aunque la realidad es que no supera a las anteriores, me siento satisfecho de haber bajado mi tiempo.
Muchas felicitaciones a los demás en verdad que los algoritmos son muy buenos.
Saludos
«
-55 CF
OBJ DROP
DEPTH PICK LASTARG PICK 0. 3. ROLLD
1. DEPTH 4. - 2. / START
5. PICK * SWAP
4. PICK * - + 3. ROLLD
NEXT
DROP DROP 0.5 *
»
- Inicie sesión o regístrese para enviar comentarios
Hola amigos, he realizado un pequeño ajuste a los programas del post #13 por ende ahora los tiempos son menores que los que están ahí mencionados.
Quedando de esta manera tiempos calculados en el emulador,
Programa pequeño s: 4.0051
Programa completo s: 4.1526
Por lo tanto hay que recalcular y reajustar los valores que van en la tabla.
Saludos Cordiales.
- Inicie sesión o regístrese para enviar comentarios
Hola muchachos, aqui estan mis propuestas.
A1ALEXIS
«
AXL DUP HEAD 1 LIST +
2. « 2 LIST AXL DET » DOSUBS
…LIST 2. /
»
@#860h 83.5 bytes
@483570597.192 s:31.8695
A2ALEXIS
«
AXL DUP HEAD 1 LIST + 2.
« EVAL ROT EVAL 4 ROLL * UNROT
* - » DOSUBS …LIST 2. /
»
@ #F127h 84.5 bytes
@-483570596 s:12.7592
A3ALEXIS
«
ROW PICK DEPTH LIST 2
« V ROT V 4 ROLL * UNROT
* - » DOSUBS …LIST 2 /
»
@ #EB7Eh 76.5 bytes
@-483570596 s:16.6805
A4ALEXIS
«
COL DROP DUP2 V DEPTH 3 - ROLL
DEPTH 3 - LIST SWAP OBJ EVAL
LIST * UNROT OBJ EVAL LIST
SWAP V DEPTH 2 - ROLL DEPTH
2 - LIST * - …LIST 2 /
»
@#953Fh 106 bytes
@ 483570596 s:10.7543
A5ALEXIS
«
ROW PICK DEPTH LIST 2 « 2 ROW
DET » DOSUBS …LIST 2 /
»
@#CAAFh s:64.5 bytes
@483570597.192 s:28.285
A6ALEXIS
«
ARRY DROP DEPTH PICK DEPTH 1 -
PICK 0 UNROT DEPTH 3 - 2 / 1
SWAP START 5 PICK * 4 PICK ROT
* - + UNROT NEXT DROP2 2 /
»
@#3775h 90 bytes
@ 483570596 s:6.806
A7ALEXIS
«
ARRY DROP DEPTH PICK DEPTH 1 -
PICK 4 PICK * PICK3 ROT * - UNROT
DEPTH 1 - DUP 2 / 2 + SWAP START
5 PICK * 4 PICK ROT * - + UNROT
NEXT DROP2 2 /
»
@#306h 110 bytes
@ 483570596 s:6.7478
Mi programa mas rápido es:
A6ALEXIS con s:6.806 y tamaño 90 bytes
Mi programa con menor código User RPL y tamaño en bytes es:
A5ALEXIS con 64.5 bytes y s:28.285
Y los participantes son buenos, use una calculadora REAL HP49G+ con memoria en HOME de mas de 200 Kb, usando el comando BYTES y TEVAL obtuve estos resultados.
Javier_Colbert
«
STD -55 CF ARRY HEAD DEPTH PICK
LASTARG PICK ROT 0 1 ROT
START UNROT 4 PICK - SWAP 5
PICK + * +
NEXT 2 / UNROT DROP2
»
@#2A00h 89.5 bytes
@483570596.9 s:6.5436
DEACHP
«
ARRY HEAD DUP 2 * DUP 2 + PICK
SWAP 1 + PICK ROT SWAP 5 PICK *
1 ROT 1 - START UNROT 6 PICK -
* - NEXT UNROT * - SWAP DROP 2 /
»
@#F97Bh 105.5 bytes
@483570597.5 s:5.03
DEACHP y Javier_Colbert
«
-55. CF STO… CLEAR RCL… ARRY
HEAD DEPTH PICK LASTARG
PICK ROT SWAP 5. PICK * 1. ROT
1. - START UNROT 6. PICK - * -
NEXT UNROT * - SWAP DROP 2. /
»
@676Dh 108.5 bytes
@483570597.5 s:4.4625
MARTIN89
«
-55 CF OBJ DROP DEPTH PICK
LASTARG PICK 0. 3. ROLLD 1. DEPTH
4. - 2. / START 5. PICK * SWAP
4. PICK * - + 3. ROLLD NEXT
DROP DROP 0.5 *
»
@#F264h 107 bytes
@483570596 s:6.141
Donde el mas rápido es el código de DEACHP y Javier_Colbert en s:4.4625 con 108.5 bytes Y el mas pequeño en tamaño es el mio A5ALEXIS con 64.5 bytes y s:28.285
Hasta el momento en una calculadora REAL (No emulador) creo que DEACHP y Javier_Colbert hicieron un programa sumamente rápido al calcular la matriz enorme que me proporciono Javier_Colbert el cual pueden ver de que poligonal o región se estuvo calculando el área.

Algo que si influyo mucho fue el LASTARG y la pila de comandos STACK, hasta ahora nunca lo usaba (LASTARG), pero gracias a ustedes veo que es un comando muy útil.
Sobre los resultados, usando el software AUTOCAD el area de la matriz es: 483570597.0785
Esto se debe a los redondeos usados en DET y a los operados en la pila de comandos el redondeo y truncamiento es evidente, ademas de la manera de obtenerlo.
Les envio los codigos en HPuserEdit, por si los codigos de arriba no pueden copiarse.
http://www.esnips.com/doc/dbaf7fa1-a329-4795-b3bc-ac2473964bc7/areashpuser
Muchas gracias DEACHP, Javier_Colbert y Martin89 por su participación en este minicampeonato.
Saludos.
- Inicie sesión o regístrese para enviar comentarios
Saludos a los participantes y a todos lo miembros,
Tengo unas pequeñas dudas con respecto a los tiempos, acabo de probar estos programas en una HP50G real vacía y obtuve estos datos:
<strong>Participante____Post____TEVAL(sg)_______Resultado</strong>
Dante___________#19_____<strong>4.4442</strong>__________483570597.5
Dante-Javier____#23_____4.4528__________483570597.5 (Post de Alexis)Como pueden observar el mio sigue siendo el más rápido.
Nota1: Los tiempos son los mínimos obtenidos luego de 5 intentos, compruebenlo. Nota2: Desactiven la visualización de la hora en la pantalla (Flag -40). Nota3: Los programas en prueba han sido guardados y ejecutados en modo aproximado.
Bueno además aceleré mi código denuevo:
«
ARRY HEAD
5 DUPN
xm ym xn yn n
« DROP2 0
1 n 2 - START
UNROT 6 PICK - * -
NEXT
SWAP xn - ROT * -
SWAP xm - yn * -
2 /
»
»
138 Bytes.
<strong>Participante____Post____TEVAL(sg)_______Resultado</strong>
Dante___________#24_____<strong>4.4116</strong>__________483570597.068 (Más preciso?)Veamos amigos que resultados se obtienen. Todos los códigos son muy buenos.
Atte. Dante Aroní C. www.deachp.com
- Inicie sesión o regístrese para enviar comentarios
Hola amigos, saludos para todos los participantes, de verdad creo que hicimos un gran trabajo se resolvió el mismo problema con varias variantes demostrando una vez mas y de forma fehaciente de porque el método RPN no solo es muy eficaz sino también muy eficiente!
Dante, cuando Alexis tomo esos datos, no corresponde con los debidos debes remitirte al post # 20 ahí está la última actualización, y en el post #22 ahí sugiero que se deben de recalcular para reajustar los valores de la tabla.Inclusive los valores del post #13 también cambiaron porque fueron modificados.
Y si observamos los códigos que fueron los que tomo Alexis post #23 cuando hizo los cálculos podemos ver que no corresponde a los códigos que fueron modificados. Al menos en una de mis propuestas.
He aquí un ajuste a tu última propuesta, que la hará más veloz!
Código de Dante levemente modificado. Se agrego unos (.) puntos.
«
ARRY HEAD
5. DUPN
xm ym xn yn n
« DROP2 0.
1. n 2. - START
UNROT 6. PICK - * -
NEXT
SWAP xn - ROT * -
SWAP xm - yn * -
2. /
»
» bytes 138
483570597.068
S: 4.3795 Resultado obtenido en una hp 50g REAL. Con 118 Kb libres en la memoria principal.
Tiempo calculado según el procedimiento que estableció e implemento Dante post #16
Sigue la persistencia en la divergencia de exactitud en los resultados obtenidos…
A cada número se le ha agregado un “punto” de tal forma que el programa ganara más rapidez, aunque en algunos de mis programas tienen agregados el “punto” no había notado que eso incrementaba la velocidad de ejecución, ya que no acostumbro a cronometrarlos, pero comentando con Martín el me dijo que al agregar los puntos incrementaba considerablemente la velocidad. Así que un agradecimiento a todos ya que de una u otra forma contribuimos a un mismo fin, creo que los ganadores somos todos y los adictos que han seguido este mini campeonato.
Saludos Cordiales.
- Inicie sesión o regístrese para enviar comentarios
Aclaratoria; para este tipo de cálculo he considerado que lo más adecuado es el modo exacto de hecho, todas las pruebas las he realizado según las especificaciones que indico Dante ( post #16, post #24)a excepción de que yo utilizo el modo exacto y no modo de aproximación.
Los datos que a continuación voy a presentar fueron realizados en una hp50g REAL con 118 Kb libre en la memoria principal.
Dante post #19
105.5 bytes
Tiempo en seg modo exacto
s. 5.0826
s. 5.0743
s.5.0781
s.5.0807
s.5.0833
Dante Variantes post #20 con puntos.
Dante – Javier post #20
108.5 bytes
Tiempo en seg modo exacto
s.4.4329
s.4.4325
s.4.422
s.4.4299
s.4.4283
Dante con puntos.
105.5 bytes
Tiempo en seg modo exacto
s.4.4247
s.4.4047
s.4.4105
s.4.4072
s.4.4105
Ahora bien los resultados que he obtenido en comparación con la última propuesta de Dante.
Dante post #24
138 bytes
Tiempo en seg modo exacto
s.4.9963
s.4.9917
s.4.9968
s.4.9996
s.4.995
Dante modificación puntos, post #25
138 bytes
Tiempo en seg modo exacto
s.4.3838
s.4.3827
s.4.3879
s.4.3868
s.4.3792
Como vera el código de DANTE es el más rápido siempre y cuando tenga puntos en cada número.
Así que invito a cada uno de los participantes a que realicen la prueba.
Saludos Cordiales.
- Inicie sesión o regístrese para enviar comentarios
que les parece terminar el reto con gráficos

Saludos!
- Inicie sesión o regístrese para enviar comentarios
Creo que lo mejor para los minicampeonatos es establecer primero las bases, por ejemplo el participante solo tiene derecho a una sola propuesta por que asi nunca va existir un ganador ya que siempre la nueva propuesta lo lógico es que va ser mejor que la anterior..asi que por el momento se adjunta las bases de los minicampeonatos..
PD: Se aceptan propuesta en las bases en el siguiente tópico
- Inicie sesión o regístrese para enviar comentarios
Vaya y yo dije que era un tema de nunca acabar.
En tonces cual es el mejor?
Saludos.
- Inicie sesión o regístrese para enviar comentarios
El tema quedó olvidado, ¿qué pasó?
- Inicie sesión o regístrese para enviar comentarios

















Ya lo sabia deachp, si es posible, podrias colocar el tiempo que tarda en calcular esa matriz. Seria ponerlo a prueba en este minicampeonato.
Para convertir codigos hp a ascii y viceversa aqui hay un link.
Ascii <-> Binary
Aqui esta mi codigo.
\<< AXL DUP HEAD 1 \->LIST + 2.
\<< 2 \->LIST AXL DET \>> DOSUBS
\GSLIST 2. /
\>>
#860h checksum
83.5 bytes
Da como resultado de la enorme matriz la siguiente Area.
483570597.192
en 31.8695 segundos con TEVAL
Por si lo necesitas:
ROM 2.10-7 Spreadsheet & Geometry
Otros programas