FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Función desde ActionScrip2 a Delphi
Hola, amigos.
Tengo un par de funciones en ActionScript2 y me gustaría incluirlas en código Delphi. LLevo varios días intentando traducirlas, pero no sé nada de ActionScript y (a parte de lo que me está costando) ni siquiera tengo la seguridad de hacerlo correctamente. Os pediría que, si alguien entiende los dos lenguajes y tiene media hora libre para hacerlo, me facilitara la tarea traduciéndolas, yo sólo soy aficionado y no no tengo ni idea de ActionScript (ni sabía que existía). Este es el código en ActionScrip2: Código:
function generar(n) { z="Un texto Unicode que no copio por lo raro que es"; f = Math.floor; r = Math.random; B = 4096; d1 = []; d2 = []; m = []; s0 = ""; kr = []; kf = []; ks = []; kt = []; rd = r()<.5; al = z.length; rg = f(al*r()); for (var j = 0; j<10; j += 9) { for (var h = 0; h<3; h++) { if (!h) { m2(j); } m1(m, j+3*h, 3*h+3+j); } } for (var j = 0; j<3; j++) { m[j] = m[9+j*3].concat(m[10+j*3].concat(m[11+j*3])); } m1(m, 0, 3); m[3] = m[0].concat(m[1].concat(m[2])); for (var j = 0; j<9; j++) { d1[j] = j+1; for (var h = 0; h<3; h++) { v = j*3+h; w = 9*(v%9)+f(v/9); m[0][v] = m[3][w]; m[1][v] = m[3][w+3]; m[2][v] = m[3][w+6]; } } m1(m, 0, 3); m1(d1, 0, 9); sl = m[0].concat(m[1].concat(m[2])); for (var v = 0; v<al; v++) { t = (rg+v)%al; k0 = z.charCodeAt(t); nv = (15 & k0)-n; if (k0<=B && nv>=0 && nv<6) { cn = 0; d = k0 >> 8; s = (240 & k0) >> 4; for (var h = 1+t; h<=s+t; h++) { k1 = z.charCodeAt(h)-B; kf[0] = 15 & k1; kf[1] = (240 & k1) >> 4; kf[2] = (3840 & k1) >> 8; kf[3] = k1 >> 12; for (var j = 0; j<4; j += 2) { cn += kf[j]; if (kf[j+1]) { ks.push(cn, kf[j+1]); cn++; } } } q = f(r()*2)+nv*2+f(r()*(nv+1)); for (var h = s+1+t; h<=s+d+t; h++) { kt[h-s-1-t] = z.charCodeAt(h)-B; } for (var h = 0; h<kt.length-1; h += 3) { m1(kt, 2, h+3); } for (var h = 0; h<q; h++) { k3 = f(kt[h]/10); ks.push(k3, kt[h]-k3*10); } lg = ks.length; break; } } for (var h = 0; h<lg-1; h += 2) { kr[sl[ks[h]]] = d1[ks[h+1]-1]; } for (var j = 0; j<81; j++) { s0 += kr[j] ? kr[j] : "."; } return s0; function m1(b, a, c) { for (var i = c-a; i>1; i--) { e = a+f(i*r()); o = b[i-1+a]; b[i-1+a] = b[e]; b[e] = o; } return (b); } function m2(a) { for (var j = 0; j<9; j++) { m[j+a] = []; for (var h = 0; h<9; h++) { m[j+a][h] = a == 0 ? rd ? j*9+h : h*9+j : m[h][j]; } } } } function resolver(m) { if (m == ".................................................................................") m = "13..........13..........13.............................13..........13..........13"; tablas(); s = []; q = []; ct = 0; act = []; aq = []; for (var j = 0; j<81; j++) { s[j] = 511; } e = m.split(""); for (var h = 0; h<e.length; h++) { if (e[h]>="1" && e[h]<="9") { colocar(s, h, e[h]); } } q[0] = resolver2(s).slice(); cons(q[0]); while (ct<81 && ct>-1) { if (ct2<0) { return q[ct].slice(81, 162).join(""); } colocar(q[ct], ct2, act[ct].pop()); if (!resolver2(q[ct])) { q[ct] = aq[ct].slice(); while (!act[ct][0] && ct>-1) { ct--; ct2 = q[ct][162]; q[ct] = aq[ct].slice(); } } else { ct++; q[ct] = q[ct-1].slice(); cons(q[ct]); } } return "sin solución"; function resolver2(s) { do { sp = []; for (var j = 0; j<81; j++) { if (!s[j+81]) { if (t4[s[j]] == 0) { return false; } if (t4[s[j]] == 1) { sp.push(j, t3[s[j]]); } } } for (var j = 0; j<27; j++) { s1 = []; s2 = 0; for (var h = 0; h<9; h++) { if (!s[t1[j][h]+81]) { s1[s2] = t1[j][h]; s2++; } } s5 = s1.length; if (!s5) { continue; } r1 = 0; r2 = s[s1[0]]; for (var h = 1; h<s5; h++) { r1 = (s[s1[h]] & r2) | r1; r2 = (s[s1[h]] ^ r2) & ~r1; } if (s5 != t4[r1]+t4[r2]) { return false; } if (r2) { for (var h = 0; h<9; h++) { if (s[s1[h]] & r2) { s3 = s1[h]; s4 = t3[s[s1[h]] & r2]; if (s4.length>1) { return false; } if (s3) { sp.push(s3, s4); } } } } } for (var v = 0; v<sp.length; v += 2) { for (var j = 0; j<21; j++) { sa = t[sp[v]][j]; if (sa != sp[v] && s[sa+81] == sp[v+1]) { return false; } } colocar(s, sp[v], sp[v+1]); } } while (sp[0]); return s; } function cons(s) { min = 9; ct2 = -1; for (var j = 0; j<81; j++) { if (!s[j+81] && t4[s[j]]<min) { min = t4[s[j]]; ct2 = j; } if (min == 2) { break; } } s[162] = ct2; aq[ct] = s.slice(); act[ct] = t3[s[ct2]].split(""); } function colocar(s, a, b) { s[81+a] = b; for (var h = 0; h<21; h++) { s[t[a][h]] &= ~(1 << (b-1)); } } function tablas() { t = []; t1 = []; t2 = []; t3 = []; t4 = []; for (var j = 0; j<512; j++) { rt = ""; for (var h = 0; h<9; h++) { if (j & (1 << h)) { rt += h+1; } } t3[j] = rt; t4[j] = t3[j].length; } for (var j = 0; j<81; j++) { t[j] = []; t2[j] = [Math.floor(j/9), 9+j%9, 3*Math.floor(j/27)+Math.floor(j%9/3)+18]; for (var v = 0; v<3; v++) { if (!t1[t2[j][v]]) { t1[t2[j][v]] = []; } t1[t2[j][v]].push(j); } } for (var j = 0; j<81; j++) { t[j] = t1[t2[j][0]].concat(t1[t2[j][1]]).concat(t1[t2[j][2]]); n = 0; t[j].sort(16); while (n<t[j].length-1) { t[j][n+1] == t[j][n] ? t[j].splice(n, 1) : n++; } } } } Este es el código que tengo traducido en 3 días. Ni siquiera sé si está correcto.
Gracias, al menos, por leerme. Lo dicho: si alguien puede ayudarme se lo agradezco. Mientras, seguiré peleándome con la traducción. Saludos a todos. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Acceder a Objetos desde una funcion | darkmir | C++ Builder | 3 | 09-12-2013 00:12:41 |
Traducción de función desde delphi | Novás | PHP | 1 | 14-07-2010 18:46:40 |
llamar una función desde un formulario | cjamacaru | PHP | 1 | 03-12-2009 12:52:53 |
Array devuelto desde una función | r1d2m3 | OOP | 3 | 26-11-2009 01:28:20 |
Llamar a una función de una DLL desde PHP | MON___ | Varios | 4 | 05-10-2007 23:06:48 |
|