Registrado: Dom Mar 20, 2016 12:16 pm Mensajes: 430 Ubicación: Tenerife
Siguiendo con pequeños códigos de programas en Qbasic, .. nunca es tarde para aprender y desarrollar ese programa que tenemos en mente,...
es un entorno ideal para los que comienzan a programar, se lleva bien con Windows y es sencillo sabiendo un inglés muy básico,.. nos permite hacer programas que funcionan en Windows, creando un ejecutable (exe) con el compilador integrado en el entorno (en mi caso el Qbasic 64, ver link al final), de QB64, gratuito.
seguidamente; código para generar columna de 1x2 en QBasic (programa no original):
Vamos a realizar una quiniela. Suponemos que tenemos un dado con sus seis caras (1,2,3,4,5,6). Lo lanzamos. Si sale la cara 1, 2 o 3 (o sea, CASO que SEA menos de 4) ponemos un "1". Si sale la cara 6 ponemos un "2" (o sea, CASO sea 6) . Si sale la cara 4 o 5 ponemos una "X" (o sea, en OTRO CASO).
es decir: 3 casos 50% para el 1 (sale en el dado 1,2 ó 3) 2 casos 30% para la x (sale 4 ó 5) 1 caso 20% para el 2 (sale 6)
CLS RANDOMIZE TIMER FOR n = 1 TO 15 g = INT(RND * 6) + 1
SELECT CASE g
CASE IS < 4 PRINT "1"
CASE 6 PRINT "2"
CASE ELSE PRINT "X"
END SELECT
NEXT n
existe un editor-compilador moderno de qbasic aquí en windows: http://www.qb64.net/
seguimos practicando con futuros programas sencillos en Qbasic
y como no? animar a aquellos que comenzaron en el foro free1x2 ha utilizarlo, hablo de gente que alguno conoce,.. a poner trozos de código sencillo para integrarlo (implementarlos en informática) en otros programas.
_________________ el Karma Instantáneo existe, REPARTE con los que COMPARTEN.
Registrado: Dom Mar 20, 2016 12:16 pm Mensajes: 430 Ubicación: Tenerife
una versión del anterior. es generar las n. columnas aleatorias de 7 partidos que deseemos,..
en una próxima entrega, veremos como generar un fichero TXT con las columnas generadas, que puede ser leído por el editor de windows (documento de texto txt), y por programas que lean columnas de texto como el Free1X2. (no Megaquin).
CLS INPUT "introduce numero de columnas de 7 signos a generar "; nn RANDOMIZE TIMER FOR col = 1 TO nn FOR n = 1 TO 7 'FOR g = 1 TO 3 g = INT(RND * 3) + 1
SELECT CASE g
CASE IS = 1 PRINT "1";
CASE IS = 2 PRINT "X";
CASE IS = 3 PRINT "2";
END SELECT 'NEXT n 'PRINT NEXT n PRINT NEXT col
_________________ el Karma Instantáneo existe, REPARTE con los que COMPARTEN.
Registrado: Dom Mar 20, 2016 12:16 pm Mensajes: 430 Ubicación: Tenerife
y ejemplos de programas de iniciación en QBasic,
de aquí he sacado el generador de columna semi-aleatoria ( con % al 50, 30 y 20 al 1 X ó 2), que luego he trasformado (segundo programa), para hacer las N columnas que le solicitemos, de 7 signos TOTALMENTE ALEATORIOS.
es decir, los ejemplos los podemos transformar a nuestro antojo, con muy poco trabajo y recordar;
"el mejor estimulo para progresar, es la necesidad,.."
Registrado: Dom Mar 20, 2016 12:16 pm Mensajes: 430 Ubicación: Tenerife
En ésta entrega, veremos como grabar nuestras apuestas en un archivo txt, al ejecutar una aplicación de QBASIC:
se realiza abriendo el fichero para escritura: OPEN "fichero.txt" FOR OUTPUT AS #1
en éste caso, el nombre es fichero.txt y le decimos que se abre para GRABAR (output), asignándole el canal #1, para simplificar en caso de abrir más ficheros y querer escribir en ellos, usaríamos #2, #3,... etc.
para escribir datos en el fichero abierto (#1), pondremos: PRINT #1, cas, s1; s2; s3; s4; s5; s6; s7; s8 es igual que imprimir en pantalla: PRINT cas, s1; s2; s3; s4; s5; s6; s7; s8
solo que no indicamos anal de escritura en disco (#1)
una vez finalizado el programa, cerraremos el fichero con: CLOSE #1, en nuestro caso (hemos usado un solo fichero).
_________________ el Karma Instantáneo existe, REPARTE con los que COMPARTEN.
Registrado: Dom Mar 20, 2016 12:16 pm Mensajes: 430 Ubicación: Tenerife
Ejemplo de código para abrir FICHERO, grabar datos y cerrar FICHERO TXT:
Aquí el código del programa generado para encontrar las 92 soluciones del problema de las 8 reinas (no pueden ocupar la misma fila, columna ó diagonal, en un tablero de ajedrez de 8x8 casillas), que graba las soluciones en un archivo: se describe con más detalles el hilo Matemáticas: viewtopic.php?p=2435053#p2435053
código QBASIC:
' PROGRAMA EN QBASIC PARA ENCONTRAR LAS 92 SOLUCIONES LA PROBLEMA DE LAS 8 REINAS DIM s(8) OPEN "CAS_REIN.TXT" FOR OUTPUT AS #1
FOR s1 = 1 TO 8 FOR s2 = 1 TO 8: IF s2 - s1 = 1 OR s1 - s2 = 1 THEN GOTO noo FOR s3 = 1 TO 8: IF s3 - s2 = 1 OR s2 - s3 = 1 THEN GOTO noo FOR s4 = 1 TO 8: IF s3 - s4 = 1 OR s4 - s3 = 1 THEN GOTO noo FOR s5 = 1 TO 8: IF s4 - s5 = 1 OR s5 - s4 = 1 THEN GOTO noo FOR s6 = 1 TO 8: IF s5 - s6 = 1 OR s6 - s5 = 1 THEN GOTO noo FOR s7 = 1 TO 8: IF s6 - s7 = 1 OR s7 - s6 = 1 THEN GOTO noo FOR s8 = 1 TO 8: IF s7 - s8 = 1 OR s8 - s7 = 1 THEN GOTO noo
IF s1 = s2 OR s1 = s3 OR s1 = s4 OR s1 = s5 OR s1 = s6 OR s1 = s7 OR s1 = s8 THEN GOTO noo
IF s2 = s3 OR s2 = s4 OR s2 = s5 OR s2 = s6 OR s2 = s7 OR s2 = s8 THEN GOTO noo
IF s3 = s4 OR s3 = s5 OR s3 = s6 OR s3 = s7 OR s3 = s8 THEN GOTO noo
IF s4 = s5 OR s4 = s6 OR s4 = s7 OR s4 = s8 THEN GOTO noo
IF s5 = s6 OR s5 = s7 OR s5 = s8 THEN GOTO noo
IF s6 = s7 OR s6 = s8 THEN GOTO noo
IF s7 = s8 THEN GOTO noo
caza_diagonales: IF s1 = s2 + 1 OR s1 = s3 + 2 OR s1 = s4 + 3 OR s1 = s5 + 4 OR s1 = s6 + 5 OR s1 = s7 + 6 OR s1 = s8 + 7 THEN GOTO noo IF s2 = s3 + 1 OR s2 = s4 + 2 OR s2 = s5 + 3 OR s2 = s6 + 4 OR s2 = s7 + 5 OR s2 = s8 + 6 THEN GOTO noo IF s3 = s4 + 1 OR s3 = s5 + 2 OR s3 = s6 + 3 OR s3 = s7 + 4 OR s3 = s8 + 5 THEN GOTO noo IF s4 = s5 + 1 OR s4 = s6 + 2 OR s4 = s7 + 3 OR s4 = s8 + 4 THEN GOTO noo IF s5 = s6 + 1 OR s5 = s7 + 2 OR s5 = s8 + 3 THEN GOTO noo IF s6 = s7 + 1 OR s6 = s8 + 2 THEN GOTO noo IF s7 = s8 + 1 THEN GOTO noo
IF s1 = s2 - 1 OR s1 = s3 - 2 OR s1 = s4 - 3 OR s1 = s5 - 4 OR s1 = s6 - 5 OR s1 = s7 - 6 OR s1 = s8 - 7 THEN GOTO noo IF s2 = s3 - 1 OR s2 = s4 - 2 OR s2 = s5 - 3 OR s2 = s6 - 4 OR s2 = s7 - 5 OR s2 = s8 - 6 THEN GOTO noo ' se eliminan los casos que incumplen filtros de: fila, columna o diagonal ----------
IF s3 = s4 - 1 OR s3 = s5 - 2 OR s3 = s6 - 3 OR s3 = s7 - 4 OR s3 = s8 - 5 THEN GOTO noo IF s4 = s5 - 1 OR s4 = s6 - 2 OR s4 = s7 - 3 OR s4 = s8 - 4 THEN GOTO noo IF s5 = s6 - 1 OR s5 = s7 - 2 OR s5 = s8 - 3 THEN GOTO noo IF s6 = s7 - 1 OR s6 = s8 - 2 THEN GOTO noo IF s7 = s8 - 1 THEN GOTO noo
cas = cas + 1: PRINT cas,: PRINT s1; s2; s3; s4; s5; s6; s7; s8 PRINT #1, cas, s1; s2; s3; s4; s5; s6; s7; s8 noo: ' se eliminan los casos que incumplen filtros ----------
NEXT s8, s7, s6, s5, s4, s3, s2, s1 CLOSE #1 PRINT "fin"
Y las 92 soluciones encontradas que el programa guarda en un fichero TXT, éstas:
Registrado: Dom Mar 20, 2016 12:16 pm Mensajes: 430 Ubicación: Tenerife
Para facilita el uso del editor del QBasic64 (gratuito), adjunto una pantalla y las 3 principales funciones a conocer, y en serio, el QBasic no se come a nadie ¡¡
Pantalla del Editor (nos permite hacer pruebas con el código introducido, podemos guardar como .BAS (còdigo), o .EXE ejecutable en cualquier Windows.
PD: en la próxima entrega, en éste mismo hilo, como generar los 7 triples 100% (todas las columnas), y 7 triples con % para cada signo del partido.
posteriormente, podemos cruzar 2 ficheros de 7 triples (2.187 columnas cada fichero, como máximo) y obtendremos 14 triples, que se puede hacer con el free1x2 (en menú: Operaciones, Multiplicador)
si escogemos solo los signos más probables en cada fichero de 7 partidos, obtendremos un cruce con un gran ahorro de columnas en los 14 partidos.
todo ésto lo podemos hacer con el free1x2, pero a veces, nos interesa usar nuestros ficheros con determinadas columnas, ya preparadas con ciertas condiciones optimizadas por nosotros.
_________________ el Karma Instantáneo existe, REPARTE con los que COMPARTEN.
Lo hice hace más de 20 años y tardé varios años en hacerlo, mal programado y lleno de "GO TO"... pero todavía funciona y hace "buenas combinaciones" con DISTANCIAS, algo que entonces nadie usaba y por eso me lo programé.
Registrado: Dom Mar 20, 2016 12:16 pm Mensajes: 430 Ubicación: Tenerife
Hola PacoHH,
pues me alegro que también usaras éste lenguaje,.. heredado de los que traían los primeros computadoras personales, de principios de los 80, hablo del ZX Spectrun, Commodore, New Brain, etc., que tiempos,... no tenian pantalla, se conectaban a una TV ¡¡
el Basic es un lenguaje que hace lo que pide sin florituras y sin grandes alardes en pantalla, eso lo mató pero para utilidades personales, va de perlas.
ese programa que hiciste tiene buena pinta, en plan didáctico estaría genial, pero esas reliquias tienen un valor mas que nada sentimental, un incunable casi ¡?
seguimos aprendiendo...
_________________ el Karma Instantáneo existe, REPARTE con los que COMPARTEN.
Registrado: Dom Mar 20, 2016 12:16 pm Mensajes: 430 Ubicación: Tenerife
Muchas gracias por tu programa PacoHH
se ve que hay mucho trabajo ahí, dos años lo dice todo,...
aprovecho para poner el código de una rutina en BASIC, para averiguar que figuras entran en un determinado nº de triples a elegir (de 2 a 14) y las apuestas que conllevan aparejadas.
hace esto, (para caso de elegir 14 triples, 120 casos de figuras distintas): nos dará por pantalla y en un archivo TXT, que se llama por defecto: casos_figuras.txt
a lo largo de hoy, pondré el programa exe, que se podrá descargar.
el código de la utilidad: apuestas y figuras en N triples:
' PROGRAMA QUE CALCULA LAS APUESTAS DE CADA FIGURA (CONJUNTO DE COLUMNAS CON MISMO ' N.DE SIGNOS 1,X y 2 en cualquier posicion " ' Al inicio hay que introducir el N. de Triples donde se repartiran los signos de cada figura" ' ' Se crea un fichero TXT con el resumen de casos posibles y sus apuestas y precio en Eur. (100% y 66%) ' ' le fichero se denomina: casos_figuras.txt
10 INPUT " introduce no. de Triples para calcular el 100% de casos y sus Columnas"; nTrip1 IF nTrip1 < 2 OR nTrip1 > 14 THEN BEEP: GOTO 10 NN = nTrip1: GOSUB Fac: Fac_14 = fact
OPEN "casos_figuras.txt" FOR OUTPUT AS #1
GOSUB cabecera
FOR e = 0 TO nTrip1 FOR u = 0 TO nTrip1 FOR d = 0 TO nTrip1 IF u + e + d <> nTrip1 THEN GOTO 999
NN = u: GOSUB Fac: Fac_u = fact NN = e: GOSUB Fac: Fac_e = fact NN = d: GOSUB Fac: Fac_d = fact
cas = cas + 1: PRINT USING "### "; cas,: PRINT USING "## "; u; e; d;: PRINT " - "; PRINT #1, USING "### "; cas,: PRINT #1, USING "## "; u; e; d;: PRINT #1, " - "; ap = Fac_14 / (Fac_u * Fac_e * Fac_d):
PRINT USING "#,###,###"; ap;: PRINT USING "#,###,###.##"; ap * .75;: PRINT " "; ' <<<<<<<<<<<<<<<<<<<<<<<<< PRINT USING " ##,###,###"; INT(ap * 0.66);: PRINT USING " #,###,###.##"; INT(ap * 0.66) * .75
PRINT #1, USING "#,###,###"; ap; ap * .75;: PRINT #1, " "; PRINT #1, USING " ##,###,###"; INT(ap * 0.66);: PRINT #1, USING "#,###,###.##"; INT(ap * 0.66) * .75
IF cas / 20 = INT(cas / 17) THEN LOCATE 25, 1: INPUT " pulsa <Ù para continuar listado "; jj: CLS: GOSUB cabecera
999 NEXT d, u, e
LOCATE 25, 1: BEEP: INPUT " pulsa <Ù FIn r <Ù repite "; ff$: CLS: IF ff$ = "r" OR ff$ = "R" THEN GOTO 10 CLOSE #1 STOP '------------------------------------------------ FIN ------------------------------------------------------
Fac: ' haya Factorial de NN fact = 1 IF NN = 0 THEN NN = 1 FOR i = 1 TO NN fact = fact * i NEXT i
RETURN
cabecera: ' escribe cabecera cada 20 registros en pantalla y ficehro (#1) LOCATE 2, 1 PRINT "Fig. 1 X 2 100% Ap 100% Eur 66% Ap 66% Eur" PRINT "=== == == == ======== ========= ========= ============"
PRINT #1, "Fig. 1 X 2 100% Ap 100% Eur 66% Ap 66% Eur" PRINT #1, "=== == == == ======== ========= ========= ==========="
Registrado: Dom Mar 20, 2016 12:16 pm Mensajes: 430 Ubicación: Tenerife
Se añade la posibilidad de escoger el % de apuestas de las figuras a listar (en columnas 3 y 4), en todos los casos de triples escogidos, ademas del 100% (columnas 1 y 2):
' PROGRAMA QUE CALCULA LAS APUESTAS DE CADA FIGURA (CONJUNTO DE COLUMNAS CON MISMO N.DE SIGNOS 1,X y 2 en cualquier posicion " ' Al inicio hay que introducir el N. de Triples donde se repartiran los signos de cada figura (de 2 a 14)" ' Y el % de apuestas que queremos listar en columnas 3 y 4 ( entre 100% y 2%) ' ' Se crea un fichero TXT con el resumen de casos posibles y sus apuestas y precio en Eur. (100% y % escogido) ' ' el fichero se denomina: casos_figuras.txt
10 INPUT " introduce no. de Triples para calcular el 100% de casos y sus Columnas"; nTrip1 IF nTrip1 < 2 OR nTrip1 > 14 THEN BEEP: GOTO 10 PRINT 20: INPUT " introduce % de cada figura a listar (de 99% a 1%) y <Ù "; porc IF porc > 99 OR porc < 1 THEN BEEP: GOTO 20
NN = nTrip1: GOSUB Fac: Fac_14 = fact
OPEN "casos_figuras.txt" FOR OUTPUT AS #1
GOSUB cabecera
FOR e = 0 TO nTrip1 FOR u = 0 TO nTrip1 FOR d = 0 TO nTrip1 IF u + e + d <> nTrip1 THEN GOTO 999
NN = u: GOSUB Fac: Fac_u = fact NN = e: GOSUB Fac: Fac_e = fact NN = d: GOSUB Fac: Fac_d = fact
cas = cas + 1: PRINT USING "### "; cas,: PRINT USING "## "; u; e; d;: PRINT " - "; PRINT #1, USING "### "; cas,: PRINT #1, USING "## "; u; e; d;: PRINT #1, " - "; ap = Fac_14 / (Fac_u * Fac_e * Fac_d):
PRINT USING "#,###,###"; ap;: PRINT USING "#,###,###.##"; ap * .75;: PRINT " "; ' <<<<<<<<<<<<<<<<<<<<<<<<< PRINT USING " ##,###,###"; INT(ap * (porc / 100));: PRINT USING " #,###,###.##"; INT(ap * (porc / 100)) * .75
PRINT #1, USING "#,###,###"; ap;: PRINT #1, USING "###,###.##"; ap * .75;: PRINT #1, " "; PRINT #1, USING " ##,###,###"; INT(ap * (porc / 100));: PRINT #1, USING "#,###,###.##"; INT(ap * (porc / 100)) * .75
IF cas / 20 = INT(cas / 17) THEN LOCATE 25, 1: INPUT " pulsa <Ù para continuar listado "; jj: CLS: GOSUB cabecera
999 NEXT d, u, e
LOCATE 25, 1: BEEP: INPUT " pulsa <Ù FIn r <Ù repite "; ff$: CLS: IF ff$ = "r" OR ff$ = "R" THEN GOTO 10 CLOSE #1 STOP '------------------------------------------------ FIN ------------------------------------------------------
Fac: ' haya Factorial de NN fact = 1 IF NN = 0 THEN NN = 1 FOR i = 1 TO NN fact = fact * i NEXT i
RETURN
cabecera: ' escribe cabecera cada 20 registros en pantalla y ficehro (#1) LOCATE 2, 1
PRINT "Fig. 1 X 2 100% Ap 100% Eur "; porc; "% Ap "; porc; "% Eur" PRINT "=== == == == ======== ========= ========= ============"
PRINT #1, PRINT #1, "Fig. 1 X 2 100% Ap 100% Eur "; porc; "% Ap "; porc; "% Eur" PRINT #1, "=== == == == ======== ========= ========= ==========="
888 RETURN
_________________ el Karma Instantáneo existe, REPARTE con los que COMPARTEN.
Registrado: Dom Mar 20, 2016 12:16 pm Mensajes: 430 Ubicación: Tenerife
se documenta el código para ver que hace cada parte importante del programa y se corrige algún bug (error), que se generaba al elegir la opción reiniciar otro calculo al final de cada ejecución.
recordar que el presente hilo, es una ayuda para los que se inician en el BASIC, y no es un ejemplo "ideal" de como hacerlo (el autor es autodidacta), pero nos permite crear pequeñas utilidades a nuestro gusto y necesidad.
link descarga de 3 archivos: -el codigo BASIC, que corre en QB64 (copiar y pegar una ves instalado QB64):apuestas_figuras_triples.bas
-programa ejecutable en windows: apuestas_figuras_triples.exe
-fichero resumen tras la ejecución: txt para 14 triples (120 casos posibles): casos_figuras.txt http://ge.tt/5ukfEpp2
el código corregido y documentado:
[color=#008080][color=#00FF40]' PROGRAMA QUE CALCULA LAS APUESTAS DE CADA FIGURA (CONJUNTO DE COLUMNAS CON MISMO N.DE SIGNOS 1,X y 2 en cualquier posicion " ' ' Al inicio hay que introducir el N. de Triples donde se repartiran los signos de cada figura (de 2 a 14)" ' Y el % de apuestas que queremos listar en columnas 3 y 4 ( entre 100% y 2%) ' ' Se creara un fichero TXT con el resumen de casos posibles y sus apuestas y precio en Eur. (100% y % escogido) ' ' el fichero se denomina: casos_figuras.txt
' NOTA; el presente programa es un ejemplo del codigo BASIC (Lenguaje de los 90), para crear utilidades de ' aplicacion con Quinielas de futbol. ' El autor es autodidacta, por lo que no es un ejemplo ideal de programacion, pero se comparte con ' el unico animo de mostrar que se pueden programar pequeñas utilidades que solucionen nuestras ' necesidades de forma mas o menos sencilla, (se explica que hace cada linea de codigo importante). ' '[/color][/color]
10 CLEAR ' SE PONEN TODAS LAS VARIANTES A 0, POR SI SE ELIGE AL FINAL, REPETIR LA EJECUCION DEL PROGRAMA CON NUEVOS TRIPLES. ' RECORDAR QUE EN ESE CASO, SE SOBRE ESCRIBE EL FICHERO RESUMEN DE TOTAL DE CASOS, CREADO CON ANTERIORIDAD.
INPUT " introduce no. de Triples para calcular el 100% de casos y sus Columnas"; nTrip1 ' ENTRADA DE DATOS (N. DE TRIPLES) IF nTrip1 < 2 OR nTrip1 > 14 THEN BEEP: GOTO 10
PRINT 20: INPUT " introduce % de cada figura a listar (de 99% a 1%) y <Ù "; porc ' INTRODUCCION DE % A LISTAR JUNTO AL 100% IF porc > 99 OR porc < 1 THEN BEEP: GOTO 20
CLS: 'LIMPIAMOS PANTALLA
NN = nTrip1: GOSUB Fac: Fac_14 = fact ' SE MANDA A SUBRUTINA: FAC, PARA CALCULAR FACTORIAL DEL VALOR QUE LLAMEMOS NN
OPEN "casos_figuras.txt" FOR OUTPUT AS #1 ' ABRE FICHERO PARA ESCRITURA, SE SELECCIONA COMO CANAL 1 (#1), PARA ESCRIBIR, POR EJEMP. GOSUB cabecera ' CABECERA DE CADA PAGINA DE 20 REGISTROS (PANTALLA Y FICEHRO .TXT CREADO)
'SE GENERAN u(1), e(X) y d(2) unos, equis y doces FOR e = 0 TO nTrip1 FOR u = 0 TO nTrip1 FOR d = nTrip1 TO 0 STEP -1 IF u + e + d <> nTrip1 THEN GOTO 999 ' SE DESCARTAN SIGNOS GENERADOS, SI NO SUMAN EL No. de TRIPLES ELEGIDO (nTrip1).
NN = u: GOSUB Fac: Fac_u = fact ' SE MANDAN A LA SUBRUITNA: FAC (HALLAR FACTORIAL), previamente se renombra NN NN = e: GOSUB Fac: Fac_e = fact NN = d: GOSUB Fac: Fac_d = fact
cas = cas + 1: ' se acumulan CASOS VALIDOS PRINT USING "### "; cas,: PRINT USING "## "; u; e; d;: PRINT " - "; PRINT #1, USING "### "; cas,: PRINT #1, USING "## "; u; e; d;: PRINT #1, " - "; ap = Fac_14 / (Fac_u * Fac_e * Fac_d): ' SE HALLA LAS APUESTAS, VER FORMULA EN LINEA 500
PRINT USING "#,###,###"; ap;: PRINT USING "#,###,###.##"; ap * .75;: PRINT " "; ' IMPRESION EN PANTALLA PRINT USING " ##,###,###"; INT(ap * (porc / 100));: PRINT USING " #,###,###.##"; INT(ap * (porc / 100)) * .75
PRINT #1, USING "#,###,###"; ap;: PRINT #1, USING "###,###.##"; ap * .75;: PRINT #1, " "; ' IMPRESION FICHERO (#1) PRINT #1, USING " ##,###,###"; INT(ap * (porc / 100));: PRINT #1, USING "#,###,###.##"; INT(ap * (porc / 100)) * .75
IF cas / 20 = INT(cas / 17) THEN LOCATE 25, 1: INPUT " pulsa <Ù para continuar listado "; jj: CLS: GOSUB cabecera ' SE LISTANA 20 VALORES, BORRA PANTALLA (CLS), SE PONE CABECERA Y SE LLENA CON 20 NUEVOS REGISTROS (PANTALLA Y FICHERO)
999 NEXT d, u, e ' SE GENERAN NUEVOS CASOS DE UNOS, EQUIS Y DOCES (d, u, e) CLOSE #1 ' se cierra fichero creado. LOCATE 25, 1: BEEP: INPUT " pulsa <Ù FIn r <Ù repite "; ff$: CLS: IF ff$ = "r" OR ff$ = "R" THEN GOTO 10 ' reinicio de calculos, si introducimos r (o R)
STOP '------------------------------------------------ FIN ------------------------------------------------------
500 Fac: ' Surutina haya Factorial de NN (cualquier valor que llamemeos previamente: NN genera un factorial de NN)
' LA FORMULA PARA HALLAR EL No. TOTAL APUESTAS DE UNA FIGURA, EN NN TRIPLES ES: ' TOTAL DE APUESTAS DE UNA FIGURA = FACTORIAL(NN)/FACTORIAL DE UNOS*FACTORIAL DE EQUIS*FACTORIAL DE DOCES ' ' RECORDAR QUE FACTORIAL DE UN No. llamado NN, ES IGUAL AL PRODUTO DE ESE No. por NN-1 (HASTA QUE NN-1 VALGA 2) ' ' EJEMPLO 1: ' FACTORIAL DE 7 = 7*6*5*4*3*2 QUE ES IGUAL A: 5040 ' ' EJEMPLO 2: HALLAR TOTAL APUESTAS DE 7 TRIPLES CON ESTA FIGURA 4(1), 2(X) Y 1(2) ' ' TOTAL APUESTAS FIGURA 4 2 1 = FACTORIAL DE 7/ FACTORIAL DE 4*FACTORIAL DE 2*FACTORIAL DE 1 (QUE ES 1) ' ' 5040/4*3*2 * 2*1 = 5040/48=105 TOTAL: 105 APUESTAS. ' fact = 1 IF NN = 0 THEN NN = 1 ' igualamos factorial de NN a 1, como minimo para que ningun caso de 0 apuestas, al multiplicar por 0. FOR i = 1 TO NN fact = fact * i NEXT i
RETURN ' RETORNA LA EJECUCION A LA LINEA QUE ENVIO A ESTA SURUTINA
cabecera: ' escribe cabecera cada 20 registros en pantalla y fichero (#1) LOCATE 2, 1
PRINT "Fig. 1 X 2 100% Ap 100% Eur "; porc; "% Ap "; porc; "% Eur" PRINT "=== == == == ======== ========= ========= ============"
PRINT #1, PRINT #1, "Fig. 1 X 2 100% Ap 100% Eur "; porc; "% Ap "; porc; "% Eur" PRINT #1, "=== == == == ======== ========= ========= ==========="
' esta linea se usa solo para ubicar datos en pantalla, no se ve en el programa porque esta con el signo: ' equivale a REM ' PRINT "12345678901112233445566778899000111222333444555666777888"
888 RETURN ' RETORNA EJECUCION A LA LINEA DE CODIGO QUE LLAMO A LA SUBRUTINA: cabecera
_________________ el Karma Instantáneo existe, REPARTE con los que COMPARTEN.
Registrado: Mar Oct 02, 2007 2:17 pm Mensajes: 7538
Ahí va el código de cierto programilla mío. Seguro que no es un buen ejemplo de programación pero funciona y hace lo que yo quiero. Está hecho en CLIPPER, un lenguaje pensado para en manejo de bases de datos (DBASE IV qué cosa más viejuna) pero que yo he usado para la quiniela.
cls sele 8 use DATOS_RE go top numintentos=INT_COL reiniciar:="N" aestudiar=COMBIS_EST margen=MARGENM semilla=SEMI @12,25 say "Modificar datos (S/N):" get reiniciar valid reiniciar $ "NnSs" @14,25 say "Intentos por columna:" get numintentos @16,25 say "Combinaciones a estudiar:" get aestudiar @18,25 say "Distancia semilla:" get semilla valid semilla<10 @20,25 say "Margen de trabajo:" get margen read cls coljug:=0 totaldis:=0 intentos:=0 tabdisrecord:={coljug,0,0,0,0,0,0,0,0,0} auxj1:=" "; auxj2:=" "; auxj3:=" ";auxj4:=" "; auxj5:=" "; auxj6:=" ";auxj7:=" "; auxj8:=" "; auxj9:=" ";auxj10:=" "; auxj11:=" "; auxj12:=" ";auxj13:=" "; auxj14:=" " sele 4 use distanci sele 3 use signos if reiniciar $ "Nn" coljug:=N1+Nx+n2 sele 4 go top totaldis:=TOTAL for j:=1 to 10 tabdisrecord[j]:=columnas skip next j volcar_record() mostrar_distri() else @2,5 say "Columnas:" get coljug read tabdisrecord[1]:=coljug intro_distri() endif validas=0 estudiadas=0 record=0
@2,5 say "Combinaciones a estudiar:" +str(aestudiar,7) tabdis:={0,0,0,0,0,0,0,0,0,0}
sele 2 use jug zap
if reiniciar $ "Nn" @ 4,20 say "Record de distancias no mejorado todavia." endif
while estudiadas < aestudiar cargar_qsignos() *crear_columnas() if calcular_distancias() acturecord() endif @ 2,45 say "Estudiadas: "+str(++estudiadas,7) enddo
close all despedida() cls
return
***** PROCEDIMIENTOS Y FUNCIONES ***********
procedure acturecord() for q:=1 to 10 tabdisrecord[q]:= tabdis[q] next q volcar_buenas() volcar_record() @ 4,17 say "Record de distancias superado en el intento "+str(++estudiadas,8) return
procedure despedida() @ 23,2 say "Programa finalizado. Suerte con tus columnas. Recuerda que estan en col.txt" @ 24,20 say " Pulsa cualquier tecla para salir. " inkey(0) return
procedure intro_distri() @ 7,2 say "DISTRIBUCION DE SIGNOS.("+str(coljug,4)+" columnas)" @ 8,12 say " 1 " @ 8,17 say " X " @ 8,22 say " 2 " sele 4 go top replace total with 0 sele 3 for q:=1 to 14 @ 8+q,2 say "Par."+str(q,2)+"->" next j
for q:=1 to 14 aux1=0 auxx=0 aux2=0 @8+q,11 get aux1 picture "9999" valid aux1<=coljug @8+q,16 get auxx picture "9999" valid aux1+auxx<=coljug @8+q,21 get aux2 picture "9999" valid aux1+auxx+aux2=coljug read replace n1 with aux1, nx with auxx, n2 with aux2 skip next j mostrar_distri() return
procedure mostrar_distri() sele 3 go top @ 7,2 say "DISTRIBUCION DE SIGNOS.("+str(coljug,4)+" columnas)" @ 8,13 say " 1 " @ 8,18 say " X " @ 8,23 say " 2 " for q:=1 to 14 @ 8+q,2 say "Par."+str(q,2)+"->" next j
for q:=1 to 14 @8+q,11 say str(n1,4) @8+q,16 say str(nx,4) @8+q,21 say str(n2,4) skip next j return
procedure volcar_record() @ 7,50 say "RECORD DE DISTANCIAS" for kkk:=1 to 10 @ 10+kkk,45 say " Distancia "+str(kkk-1,1)+" -> "+str(tabdisrecord[kkk],3)+" columnas." next kkk shado=0 sele 4 go top replace TOTAL with totaldis for j:=1 to 10 replace columnas with tabdisrecord[j] shado=shado+(distancia*columnas) skip next j @ 9,45 say "Distancias: "+str(shado,5)+ " Media:" +str(shado/(coljug-margen),5,2) return
procedure volcar_buenas()
sele 8 *use DATOS_RE zap APPEND BLANK replace INT_COL with numintentos, COMBIS_EST with aestudiar, SEMI with semilla, MARGENM with margen
sele 2 go top
copy to jugbuena.dbf copy to col.txt SDF
return
function calcular_distancias() sele 4 go top recorddis=TOTAL sele 2 zap validas=0 auxposible:="S" while validas < coljug-margen //.and. auxposible="S" intentos=0 mejor=0 while intentos<numintentos intentos++ crear_columnas() auxdis=9 tabjug:={auxj1,auxj2,auxj3,auxj4,auxj5,auxj6,auxj7,auxj8,auxj9,auxj10,auxj11,auxj12,auxj13,auxj14} sele 2 go top while !eof() wdis=0 tabtot:={j1,j2,j3,j4,j5,j6,j7,j8,j9,j10,j11,j12,j13,j14} for j:=1 to 14 if tabtot[j]<>tabjug[j] wdis++ endif next j if wdis>9 wdis=9 endif if wdis<auxdis auxdis=wdis endif skip enddo *@23,20 say "auxdis-> "+ str(auxdis,1) +" Mejor-> " +str(mejor,1) *inkey(0) if validas=0 .or. auxdis>mejor mejor=auxdis if mejor>=semilla intentos=numintentos endif wauxj1=auxj1;wauxj2=auxj2;wauxj3=auxj3;wauxj4=auxj4;wauxj5=auxj5;wauxj6=auxj6;wauxj7=auxj7;wauxj8=auxj8;wauxj9=auxj9;wauxj10=auxj10;wauxj11=auxj11;wauxj12=auxj12;wauxj13=auxj13;wauxj14=auxj14 endif enddo auxj1=wauxj1;auxj2=wauxj2;auxj3=wauxj3;auxj4=wauxj4;auxj5=wauxj5;auxj6=wauxj6;auxj7=wauxj7;auxj8=wauxj8;auxj9=wauxj9;auxj10=wauxj10;auxj11=wauxj11;auxj12=wauxj12;auxj13=wauxj13;auxj14=wauxj14 grabar_nueva() validas++ enddo recontar_distancias() @24,20 say "Intento actual -> "+ str(totaldis,4) +" Record -> " +str(recorddis,4) if totaldis>recorddis xxx:=.t. else xxx:=.f. endif return xxx
procedure recontar_distancias() sele 2 go top actual=1 while actual<=coljug auxdis=9 go actual tabjug:={j1,j2,j3,j4,j5,j6,j7,j8,j9,j10,j11,j12,j13,j14} go top while !eof() wdis=0 if actual=recno() .and. !eof() skip endif tabtot:={j1,j2,j3,j4,j5,j6,j7,j8,j9,j10,j11,j12,j13,j14} for j:=1 to 14 if tabtot[j]<>tabjug[j] wdis++ endif next j if wdis>9 wdis=9 endif if wdis<auxdis auxdis=wdis endif *if wdis<P15 * replace P15 with auxdis *endif skip enddo go actual replace P15 with auxdis actual++ enddo totaldis:=0 tabdis:={0,0,0,0,0,0,0,0,0,0} go top while !eof() totaldis=totaldis+P15 tabdis[P15+1]:=tabdis[P15+1]+1 skip enddo return
function mejora_record()
posible="en estudio" kk=1 while kk<=10 .and. posible ="en estudio" if tabdis[kk]>tabdisrecord[kk] posible="fuera" elseif tabdis[kk]<tabdisrecord[kk] posible="dentro" endif kk++ enddo if posible="dentro" xxx:=.t. else xxx:=.f. endif return xxx
procedure crear_columnas()
sele 3 go top quedan_signos=Q1+QX+Q2 auxsigno=azar(quedan_signos,intentos) if auxsigno <= Q1 * replace Q1 with Q1-1 auxj1='1' elseif auxsigno <= Q1+QX * replace QX with QX-1 auxj1='X' else * replace Q2 with Q2-1 auxj1='2' endif skip
auxsigno=azar(quedan_signos,intentos) if auxsigno <= Q1 * replace Q1 with Q1-1 auxj2='1' elseif auxsigno <= q1+QX * replace QX with QX-1 auxj2='X' else * replace Q2 with Q2-1 auxj2='2' endif skip
auxsigno=azar(quedan_signos,intentos) if auxsigno <= Q1 * replace Q1 with Q1-1 auxj3='1' elseif auxsigno <= Q1+QX * replace QX with QX-1 auxj3='X' else * replace Q2 with Q2-1 auxj3='2' endif skip
auxsigno=azar(quedan_signos,intentos) if auxsigno <= Q1 * replace Q1 with Q1-1 auxj4='1' elseif auxsigno <= Q1+QX * replace QX with QX-1 auxj4='X' else * replace Q2 with Q2-1 auxj4='2' endif skip
auxsigno=azar(quedan_signos,intentos) if auxsigno <= Q1 * replace Q1 with Q1-1 auxj5='1' elseif auxsigno <= Q1+QX * replace QX with QX-1 auxj5='X' else * replace Q2 with Q2-1 auxj5='2' endif skip
auxsigno=azar(quedan_signos,intentos) if auxsigno <= Q1 * replace Q1 with Q1-1 auxj6='1' elseif auxsigno <= Q1+QX * replace QX with QX-1 auxj6='X' else * replace Q2 with Q2-1 auxj6='2' endif skip
auxsigno=azar(quedan_signos,intentos) if auxsigno <= Q1 * replace Q1 with Q1-1 auxj7='1' elseif auxsigno <= Q1+QX * replace QX with QX-1 auxj7='X' else * replace Q2 with Q2-1 auxj7='2' endif skip
auxsigno=azar(quedan_signos,intentos) if auxsigno <= Q1 * replace Q1 with Q1-1 auxj8='1' elseif auxsigno <= Q1+QX * replace QX with QX-1 auxj8='X' else * replace Q2 with Q2-1 auxj8='2' endif skip
auxsigno=azar(quedan_signos,intentos) if auxsigno <= Q1 * replace Q1 with Q1-1 auxj9='1' elseif auxsigno <= Q1+QX * replace QX with QX-1 auxj9='X' else * replace Q2 with Q2-1 auxj9='2' endif skip
auxsigno=azar(quedan_signos,intentos) if auxsigno <= Q1 * replace Q1 with Q1-1 auxj10='1' elseif auxsigno <= Q1+QX * replace QX with QX-1 auxj10='X' else * replace Q2 with Q2-1 auxj10='2' endif skip
auxsigno=azar(quedan_signos,intentos) if auxsigno <= Q1 * replace Q1 with Q1-1 auxj11='1' elseif auxsigno <= Q1+QX * replace QX with QX-1 auxj11='X' else * replace Q2 with Q2-1 auxj11='2' endif skip
auxsigno=azar(quedan_signos,intentos) if auxsigno <= Q1 * replace Q1 with Q1-1 auxj12='1' elseif auxsigno <= Q1+QX * replace QX with QX-1 auxj12='X' else * replace Q2 with Q2-1 auxj12='2' endif skip
auxsigno=azar(quedan_signos,intentos) if auxsigno <= Q1 * replace Q1 with Q1-1 auxj13='1' elseif auxsigno <= Q1+QX * replace QX with QX-1 auxj13='X' else * replace Q2 with Q2-1 auxj13='2' endif skip
auxsigno=azar(quedan_signos,intentos) if auxsigno <= Q1 * replace Q1 with Q1-1 auxj14='1' elseif auxsigno <= Q1+QX * replace QX with QX-1 auxj14='X' else * replace Q2 with Q2-1 auxj14='2' endif sele 2 * APPEND BLANK * replace J1 with auxj1, J2 with auxj2, J3 with auxj3, J4 with auxj4, J5 with auxj5, J6 with auxj6, J7 with auxj7,; * J8 with auxj8, J9 with auxJ9, J10 with auxJ10, J11 with auxj11, J12 with auxj12, J13 with auxj13, J14 with auxj14 return
procedure grabar_nueva() sele 2 APPEND BLANK replace J1 with auxj1, J2 with auxj2, J3 with auxj3, J4 with auxj4, J5 with auxj5, J6 with auxj6, J7 with auxj7,; J8 with auxj8, J9 with auxJ9, J10 with auxJ10, J11 with auxj11, J12 with auxj12, J13 with auxj13, J14 with auxj14
sele 3 go top if auxj1='1' replace Q1 with Q1-1 elseif auxj1='X' replace QX with QX-1 else replace Q2 with Q2-1 endif skip if auxj2='1' replace Q1 with Q1-1 elseif auxj2='X' replace QX with QX-1 else replace Q2 with Q2-1 endif skip if auxj3='1' replace Q1 with Q1-1 elseif auxj3='X' replace QX with QX-1 else replace Q2 with Q2-1 endif skip if auxj4='1' replace Q1 with Q1-1 elseif auxj4='X' replace QX with QX-1 else replace Q2 with Q2-1 endif skip if auxj5='1' replace Q1 with Q1-1 elseif auxj5='X' replace QX with QX-1 else replace Q2 with Q2-1 endif skip if auxj6='1' replace Q1 with Q1-1 elseif auxj6='X' replace QX with QX-1 else replace Q2 with Q2-1 endif skip if auxj7='1' replace Q1 with Q1-1 elseif auxj7='X' replace QX with QX-1 else replace Q2 with Q2-1 endif skip if auxj8='1' replace Q1 with Q1-1 elseif auxj8='X' replace QX with QX-1 else replace Q2 with Q2-1 endif skip if auxj9='1' replace Q1 with Q1-1 elseif auxj9='X' replace QX with QX-1 else replace Q2 with Q2-1 endif skip if auxj10='1' replace Q1 with Q1-1 elseif auxj10='X' replace QX with QX-1 else replace Q2 with Q2-1 endif skip if auxj11='1' replace Q1 with Q1-1 elseif auxj11='X' replace QX with QX-1 else replace Q2 with Q2-1 endif skip if auxj12='1' replace Q1 with Q1-1 elseif auxj12='X' replace QX with QX-1 else replace Q2 with Q2-1 endif skip if auxj13='1' replace Q1 with Q1-1 elseif auxj13='X' replace QX with QX-1 else replace Q2 with Q2-1 endif skip if auxj14='1' replace Q1 with Q1-1 elseif auxj14='X' replace QX with QX-1 else replace Q2 with Q2-1 endif
return
procedure cargar_qsignos() sele 3 go top while !eof() replace Q1 with N1, QX with NX, Q2 with N2 skip enddo return
Registrado: Dom Mar 20, 2016 12:16 pm Mensajes: 430 Ubicación: Tenerife
Hola JoseVicente,
pues veo ahora con detenimiento tu anterior post, y la verdad es que aunque usé el Dbase III, años ha, reconozco que no pasé de generar y listar bases de datos y poco mas,.. no me había detenido a verlo, al estar liado con asuntos de carácter personal y por lo que he desaparecido del foro durante meses,..
aprovecho para colgar el código que busca todos los premios de una columna, trabaja con numeros 1,2,3 en lugar de signos 1,X,2, nada que no se pueda solucionar en unos minutos retocando el código.
lo que hace la subrutina: A partir de una columna suministrada, busca todos sus premios y los clasifica por nº de aciertos y figuras (numero de signos fijos en cualquier posición) listando y guardando en un fichero, en nuestro caso, para la columna 11111111223333 equivalente a la 11111111XX2222, y lo guarda en el fichero: dosXcuatro2.txt que es la columna de la cual buscamos sus 19320 (falta la propia columna de 14, la 11111111223333 equivalente a la 11111111XX2222).
Espero sea de utilidad.
DIM tUN(15), tEQ(15), tDO(15), tX2(15, 15) DIM tX2_13(28, 28), tX2_12(28, 28), tX2_11(28, 28), tX2_10(28, 28)
A$ = "11111111223333" ' ésta es la columna a buscar sus 19320 columnas premiadas. OPEN "dosXcuatro2.txt" FOR OUTPUT AS #1
FOR s1 = 1 TO 3 a = s1 FOR s2 = 1 TO 3 b = s2 FOR s3 = 1 TO 3 c = s3 FOR s4 = 1 TO 3 d = s4 FOR s5 = 1 TO 3: e = s5 FOR s6 = 1 TO 3: f = s6 FOR s7 = 1 TO 3: g = s7
FOR s8 = 1 TO 3: h = s8 FOR s9 = 1 TO 3: i = s9 FOR d0 = 1 TO 3: j = d0 FOR d1 = 1 TO 3: k = d1 FOR d2 = 1 TO 3: l = d2 FOR d3 = 1 TO 3: m = d3 FOR d4 = 1 TO 3: n = d4
IF a = VAL(MID$(A$, 1, 1)) THEN az = az + 1 IF b = VAL(MID$(A$, 2, 1)) THEN az = az + 1 IF c = VAL(MID$(A$, 3, 1)) THEN az = az + 1 IF d = VAL(MID$(A$, 4, 1)) THEN az = az + 1 IF e = VAL(MID$(A$, 5, 1)) THEN az = az + 1 IF f = VAL(MID$(A$, 6, 1)) THEN az = az + 1 IF g = VAL(MID$(A$, 7, 1)) THEN az = az + 1
IF h = VAL(MID$(A$, 8, 1)) THEN az = az + 1 IF i = VAL(MID$(A$, 9, 1)) THEN az = az + 1 IF j = VAL(MID$(A$, 10, 1)) THEN az = az + 1 IF k = VAL(MID$(A$, 11, 1)) THEN az = az + 1 IF l = VAL(MID$(A$, 12, 1)) THEN az = az + 1 IF m = VAL(MID$(A$, 13, 1)) THEN az = az + 1 IF n = VAL(MID$(A$, 14, 1)) THEN az = az + 1 ' im = im + 1: IF im / 20 = INT(im / 20) THEN LOCATE 25, 1: INPUT " Pulsa <Ù para continuar "; ff: im = 0: CLS IF az < 10 THEN az = 0: casNP = casNP + 1: GOTO 500 IF az = 10 THEN az10 = az10 + 1: GOTO 400 IF az = 11 THEN az11 = az11 + 1: GOTO 400 IF az = 12 THEN az12 = az12 + 1: GOTO 400 IF az = 13 THEN az13 = az13 + 1: GOTO 400 IF az = 14 THEN az14 = az14 + 1
CLOSE #1 LOCATE 25, 1: INPUT " Pulsa <Ù para FIN"; HH: CLS: END
cuentasignos: tDO = 0: tUN = 0: tEQ = 0 IF s1 = 1 THEN tUN = tUN + 1 ELSE IF s1 = 2 THEN tEQ = tEQ + 1 IF s2 = 1 THEN tUN = tUN + 1 ELSE IF s2 = 2 THEN tEQ = tEQ + 1 IF s3 = 1 THEN tUN = tUN + 1 ELSE IF s3 = 2 THEN tEQ = tEQ + 1 IF s4 = 1 THEN tUN = tUN + 1 ELSE IF s4 = 2 THEN tEQ = tEQ + 1 IF s5 = 1 THEN tUN = tUN + 1 ELSE IF s5 = 2 THEN tEQ = tEQ + 1 IF s6 = 1 THEN tUN = tUN + 1 ELSE IF s6 = 2 THEN tEQ = tEQ + 1 IF s7 = 1 THEN tUN = tUN + 1 ELSE IF s7 = 2 THEN tEQ = tEQ + 1
IF s8 = 1 THEN tUN = tUN + 1 ELSE IF s8 = 2 THEN tEQ = tEQ + 1 IF s9 = 1 THEN tUN = tUN + 1 ELSE IF s9 = 2 THEN tEQ = tEQ + 1 IF d0 = 1 THEN tUN = tUN + 1 ELSE IF d0 = 2 THEN tEQ = tEQ + 1 IF d1 = 1 THEN tUN = tUN + 1 ELSE IF d1 = 2 THEN tEQ = tEQ + 1 IF d2 = 1 THEN tUN = tUN + 1 ELSE IF d2 = 2 THEN tEQ = tEQ + 1 IF d3 = 1 THEN tUN = tUN + 1 ELSE IF d3 = 2 THEN tEQ = tEQ + 1 IF d4 = 1 THEN tUN = tUN + 1 ELSE IF d4 = 2 THEN tEQ = tEQ + 1 tDO = 14 - (tUN + tEQ)
tX2(tEQ, tDO) = tX2(tEQ, tDO) + 1
IF az = 13 THEN tX2_13(tEQ, tDO) = tX2_13(tEQ, tDO) + 1 IF az = 12 THEN tX2_12(tEQ, tDO) = tX2_12(tEQ, tDO) + 1 IF az = 11 THEN tX2_11(tEQ, tDO) = tX2_11(tEQ, tDO) + 1 IF az = 10 THEN tX2_10(tEQ, tDO) = tX2_10(tEQ, tDO) + 1 RETURN
Registrado: Dom Mar 20, 2016 12:16 pm Mensajes: 430 Ubicación: Tenerife
a ver si se ve mejor así
para la columna 11111111 22 333 equivalente a: 11111111 XX 2222, y los 50 casos de figura distintas y sus premios, con detalles de figuras* que lo contienen
*figura: numero fijo de variantes, que se dan en una combinación, en cualquier posición posible.
y el resumen al final del listado:
para terminar, como ejemplo, para interpretar éstos datos: significa que en el caso 12 de 50, hay 478 columnas de UNA X y CINCO 2, que dan éstos premios: 2 columnas con 13 aciertos 16 columnas con 12 aciertos 84 columnas con 11 aciertos y 376 columnas con 376 aciertos.
_________________ el Karma Instantáneo existe, REPARTE con los que COMPARTEN.
Última edición por juanknito el Lun Jun 24, 2019 6:17 pm, editado 2 veces en total
Registrado: Vie Dic 30, 2011 2:25 pm Mensajes: 451
Hola Juanknito ,
Creo que no es necesario generar las 3^14 combinaciones e ir contando los aciertos ya que solo te interesa los mayores a 10
Diria yo que se puede simplificar el algoritmo e ir solamente a por estas 19.321 apuestas usando la combinatoria
Si para los de 13 son las apuestas que distan en un solo signo frente a la apuesta base , osea ir combinando los otros 2 signos restantes en cada una de las 14 posiciones Para los de 12 son las apuestas que distan en 2 signos frente a esta apuesta base , osea ir combinando 2 signos en cada 2 posiciones (2*2 = 2^2 = 4) con todas las posibilidades de Combinatoria de 14 en 2 Para los de 11 son las apuestas que distan en 3 signos frente a esta apuesta base , osea combinar 2 signos en 3 posiciones (2*2*2 = 2^3 = con todas las posibilidades de la combinatoria de 14 en 3 Etc etc
Registrado: Dom Mar 20, 2016 12:16 pm Mensajes: 430 Ubicación: Tenerife
buen apunte languineu, tu usas el ahorro de recursos, yo lo intenté bastante tiempo, sin éxito.
pero es que por fuerza bruta, (calculando todas, las 4782969), solo tarda unos segundos, en un i7, exactamente: 12'' segundos,.. no haberlo sabido hace 3 años.
_________________ el Karma Instantáneo existe, REPARTE con los que COMPARTEN.
No puede abrir nuevos temas en este Foro No puede responder a temas en este Foro No puede editar sus mensajes en este Foro No puede borrar sus mensajes en este Foro