CvdB
programa en Basic para el juego de los dos baldes
APENDICE.
10. REM JUEGO DE LOS DOS BALDES
15. REM INICIALIZACION
20, CLEAR
25. DIM X(30), XX(30),Y(35),P(7),R(7),Z(30):REM X y XX son abiertas, Y es cerrada y Z es auxiliar
30, INPUT "VOL.CHICO (p.ej.3)", C
35, INPUT "VOL.GRANDE (p.ej.4)", G
40, IF G< C then print "ERROR EN VALORES"
45. INPUT "SUMANDO (p.ej. 1)", K
50. IF K >=C-1 THEN GOSUB 5400
55. GOL=G-C+K: AB=1: REM AB es largo de abierta,
57, PAUSE "GOL", GOL
60. POR N=O TO 35:REM Ciclos
65. REM Cuerpo Pasaje de lista
70. J=1: PR= XX(J)
74. POR K=1 TO 1+INT (.8*N)
75. POR I=1 TO CE: REM CE es largo de cerrada
80, IF INT PR = INT Y(I) THEN LET J=J+1
85. IF INT PR = INT Y(I) THEN LET PR XX(J)
90. NEXT I: NEXT K
95. POR I=1 TO AB-1: Z(I) = XX(J+I): NEXT 1: REM Corrida por salida de PR
97. POR I=AB TO AB+5:Z(I)=O:XX(I)=O:NEXT I
100. POR I=1 TO AB:XX(I)=Z(I):NEXT I
105, DJ=INT PR:DK=PR*10- INT(PR*10)
114. PAUSE "PR=",PR 116. CE=CE+1: Y(CE)=PR: REM Incorporación del preferido a cerrada
120. REM Operadores
125. REM Exito
130. IF INT PR=GOL THEN GOTO 900
135. A9=PR-INT PR: A8 = A9*10^DI
140. IF A8 - INT A8> 0
THEN LET DI = DI+l
145, A = INT (PR/10): B = INT PR- 1O*A
150. GOSUB 5500
160. GOSUB 5600
170. GOSUB 5700
180. GOSUB 5800
190, GOSUB 5900
200. GOSUB 6000
210. REM Ingreso a abierta
220, J=O
230. FOR I= AB TO AB+6: J=J+l:XX(I)=R(J):NEXT I
240. AB=AB+6 250. REM Muerte duplicados de abierta y de privilegiado
260. FOR I=1 TO AB: Z(I)=XX(I):NEXT I
280, FOR I=1 TO AB
290. FOR J=1 TO AB
300. IF I=J THEN GOTO 340
310. IF XX(I)=0 THEN GOTO 390
320. IF INT XX(J) = INT PR THEN LET XX(J)=0
330, IF INT XX(J)=INT Z(I) THEN LET XX(J)=0
340. NEXT J
350. NEXT I
360. L=0: FOR I=1 TO AB 3709 IF XX(I)=Z(I) THEN LET L=L+1
380. IF XX(I)=Z(I) THEN LET X(L)=XX(I)
390, IF XX(I)=Z(I) THEN LET XX(L)=X(L)
400, NEXT I
410. AB=L
420, REM Fracaso
430. A7=N+PR-INT PR: IF A7 <3 THEN GOTO 460
440. IF A7- INT A7> 0 THEN GOTO 460. PRINT "Fracaso":GOTO 410
460. NEXT N 470. END
500. PAUSE "Exito con". PR
510, PAUSE "Trayecto=", PRINT PR
520. PAUSE "Numero nodos revisados=",CE
540. GOTO 15
3400. PAUSE "Achicar sumando, valor grande"
5410. RETURN
5500, REM Operador 1
5510. H=1:P(H)=(A*1)*10
5520. GOSUB 6100
5530. RETURN
5600, REM Operador 2
5610, H=2:P(H)=B*1 + (A*O)*10
5620. GOSUB 6100 5630. RETURN
5700, REM Operador 3
5710, H=3:
5720. IF A+B > G THEN GOTO 57 50
5730. P(H)=(A+B)*10
5740. GOTO 5770
5750. AU=(G-A)/B
5760. PM=(A+B*AU)*10+(1-AU)*B
5770. GOSUB 6100
5780. RETURN
5800. REM Operador 4
5810. H= 4
5820. IF A=0 THEN GOTO 5850
5830, AU=A+B-C:AU=AU/A
5835. IF AU
5840,P(H)=A*AU*1O+A*(1-AU)+B*1
5845. GOTO 5875
5850. P(H)=INT PR
5860. GOTO 5875 5870. P(H)=A+B
5875. GOSUB 61oo 5880. RETURN
5900. REM Operador 5
5910. H=5: P(H)= A*10 + C
5920. GOSUB 6100
5930. RETURN
6000, REM Operador 6
6010. H=6: P(H)= G*10+B*1
6020. GOSUB 6100
6030. RETURN
6100. REM ESTADO + TRAYECTO
6110, BC=10
6130. R(H)=(P(H)*10^DI+H/BC)/(10^DI)+A9:RETURN
PRIMER EJEMPLO DE APLICACION C = 39 G m 4, Sumando = 1 GOL es 6 2 (2L en chico)
El primer PR os 0, significa estado inicial 0 0
El segundo es 3.5 que significa mediante el operador 5 se obtiene el estado 0 3
El tercero es 40.6 (con el operador 6 se logra el estado 4 0 (4 L en grande))
El cuarto es 30.53 (significa primero aplicar el operador 5 Y luego el 3 .0
sea primero llenar el chico y luego pasar del chico al grande, resultando
3 0 que implica 3 L en el grande)
El quinto es 43.56 (significa llenar ambos baldes, resultando ambos baldes llenos
El sexto es 13.64 (significa llenar el grande y transferir de grande a chico,
quedando 1 L en grande y 3 L en chico, o sea estado 13 y trayectoria 64.
El séptimo es 33.535 (hay que usar tres operadores sucesivamente, los dos primeros coinciden con el cuarto y el último repite el llenado del chico, el resultado son 3 L en cada balde , de allí 33)
El octavo es 10.641 (o sea con la trayectoria 641, sucesora del sexto PR, se llega al estado 1 0 , o sea un litro en el grande)
El noveno es 42.5353 (con la trayectoria 5353 se llega al estado 42)
El décimo es 1.6414,
El final (éxito) es 2.53532 (se obtiene el GOL = 02 repitiendo dos veces las operaciones del cuarto y luego vaciando el grande)
Queda claro que los sucesivos estados son 00, 03, 30, 33, 42 y gol.
SEGUNDO EJEMPLO DE APLICACION
C = 8, G = 9, Sumando = 5, GOL es 06 (6 L en chico)
El primer PR es 0; significa estado inicial 0 0
Luego 8,5 (con el operador 5 se llega al estado 8 L en chico, 0 8)
Luego 90.6 (con el operador 6 es llega a 9 L en grande
9 0)
Luego 80.53 (cm los dos operadores secuenciales 5 v 3 es llega a estado 8 0)
Luego 98,56 (llenando ambos baldes,
ambos quedan llenos en el estado 9 8)
Luego 18.64 (se llena el grande y se transfiere al chico a ras, quedan 1 8)
Luego 88,535 (oon la secuencia 535 se logra el estado 8 8 9 8 L en cada uno)
Luego 10.641 (con la secuenoia 641 se logra el estado 1 0 y 1 L
en grande)
Luego 97,5353 (se repito dos veces la secuencia 53 de operadores)
Luego 1.6414
Luego 7.53532 (al oaso anterior es sigue drenando el grande, tenemos 7 L en chico
Luego 70.535323 (al caso anterior, ahora se transfiere de chico a grande)
Luego 78,5353235
Luego 96,53532353
Finalmente 6.535323532 que es gol. La rutina exitosa es empezar con operador 5 y luego repetir dos veces la secuencia 3532. Buen éxito.
TERCER EJEMPLO DE APLICACION, con C= 6 G=9 Sumando = 2; GOL=05
El primer PR es como siempre 0 0
El segundo es 6.5; el tercero es 90,6; el cuarto es 60.53; el quinto es 96,56; el sexto es 36.64; el séptimo 66,535; el octavo 30.641; el noveno 93.5353; el décimo 3.6414 . Fracaso (no hay novedades en la lista abierta
13.may.2001
Pulsar tecla de vuelta
Vuelta a Portada
Glosario de Bioingeniería del Conocimiento - Carlos von der Becke.