Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Keyen Night

#141
Es un TrackBar Vertical con un Menú ese control no existe en .Net pero lo puedes crear como un UserControl.
#142
La tomare mucho en cuenta si la llegase a necesitar, voy a descargarla ahora, Gracias por compartirla ;) hay una página WolframAlpha que también resuelve cualquier cosa, ofrece una API pero es paga :-\

Para usar Regex debes importar System.Text.RegularExpressions.

Mi código será siempre más lento, porque está en .Net y porque así como he agregado muchas cosas también faltaran otras, pero es solo practica lo que buscaba era entender la teoría de los problemas y las ventajas de factorizar un número que se supone compuesto en sus primos ;D.
#143
Yo publico uno hace tiempo, mejore el código como por un año investigando bastante me obsesiono por un tiempo este tema :xD y en verdad va bastante rápido, claro hay números que por alguna razón matemática que aun no entiendo tardan demasiado, como por ejemplo 444445555511122222 o de ese tipo.

http://foro.elhacker.net/net/aporte_factorizacion_a_maxima_velocidad_actualizado_21102011-t321927.0.html

Normalmente siempre se recorren los números de 0 a N para hallar si un número es primo, eso serían N operaciones para cualquier N, si N es 100 mil millones entonces 100 mil millones serán las operaciones necesarias, a eso se debe la demora, sin embargo hay muchos métodos para acortar el tiempo, todos los que pude descubrir están aplicados en ese ejemplo, en tu código aplicas varios, como comenzar desde el 3, porque se sabe que el 2 es primo y el 1 no, avanzar de 2 en 2, porque sabemos que ningún primo es par, además de estos hay otros importantes como por ejemplo ningun número que se presume compuesto tiene más de un factor primo que supere su raíz por el simple hecho de que si F1 es una factor de N y es mayor que la raíz de N, N no puede tener 2 F1 de factores por que superarían a N, en otras palabras 2*F1>N, otros varios están explicados en esa publicación, nada más estos 3 disminuyen la cantidad de operaciones en

RaízCuadrada(N-3/2) en vez de N operaciones.

Como sea al menos hasta ahora no existe un método para factorizar en primos números grandes de una manera rápida, si alguien lo logra o lo matan o la seguridad informática debe volver a plantearse desde el principio :xD
#144
No entiendo que intentas hacer :-\

La Variable Xcoord es Object, guardas un String y luego intentas transformarla en Integer para compararla con Boolean D:

En principio que quieres hacer con ese trozo de código...

¿Qué es lo que hay almacenado en Xcoord?
#145
Busca en GoogleCode o en SourceForge proyectos yo eche un ojo rápido con "youtube to mp3" y salen proyectos que vale la pena ver...
#146
Puede ser que DownloadData no se completo correctamente o que "Elemento" no contenga el atributo href, guarda DownloadData en una variable y verifica que el resultado de GetAttribute no es nulo.
#147
Con Images se filtra más

Código (vb.net) [Seleccionar]
       For Each ele As HtmlElement In WebBrowser1.Document.Images
           MessageBox.Show(ele.GetAttribute("href"))
       Next


Aquí un ejemplo de lo que te venia hablando, con un Panel1 y un WebBrowser1
Código (vb.net) [Seleccionar]

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        WebBrowser1.Navigate("http://www.google.co.ve")
    End Sub

    Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted

        Dim Descarga As New Net.WebClient
        Dim Imagen As Image
        Dim ImagenStream As IO.MemoryStream
        Dim PictureBoxActual As PictureBox

        For Each Elemento As HtmlElement In WebBrowser1.Document.Images

            ImagenStream = New IO.MemoryStream(Descarga.DownloadData(Elemento.GetAttribute("href")))

            Imagen = Image.FromStream(ImagenStream)

            ImagenStream.Dispose()

            PictureBoxActual = New PictureBox() With {.Name = "P" & Panel1.Controls.Count.ToString, _
                                                      .Location = New Point((32 * Panel1.Controls.Count) - (Math.Floor(Panel1.Controls.Count / 3) * 32) * 3, _
                                                                            Math.Floor(Panel1.Controls.Count / 3) * 32), _
                                                      .BackgroundImage = Imagen.Clone, _
                                                      .Size = New Size(32, 32), _
                                                      .BackgroundImageLayout = ImageLayout.Stretch}

            Panel1.Controls.Add(PictureBoxActual)

            Imagen.Dispose()

        Next

    End Sub

End Class


Allí en Size puedes modificar el tamaño de cada Picturebox, y en Location, está calculado para que entren Imágenes de 3 en 3 de izquierda a derecha y de arriba a abajo. Es solo un ejemplo, si quieres que entren Imagenes hasta que cubran el Panel entonces el 3 sería Panel1.Width / 32 o entre la medida que tenga cada PictureBox de ancho.
#148
Esa función que obtiene una imagen de un URL te ayudara mucho, yo te recomiendo descargar el Source de la búsqueda de Google, el problema es que aún no veo como sacar el link correcto para una búsqueda de "zapato", por ejemplo.

Una simple búsqueda de la palabra "ejemplo", tiene una cantidad enorme de parámetros en el URL >:(

http://www.google.co.ve/search?num=10&hl=es&site=imghp&tbm=isch&source=hp&biw=1360&bih=638&q=ejemplo&oq=ejemplo&gs_l=img.3..0l10.1763.2508.0.2745.7.6.0.1.1.1.391.844.2j2j0j1.5.0...0.0...1ac.3wlEkzZCgp0

Lo que si se es que luego de tener el Source las imágenes vienen en este estilo

imgurl="XXX"&amp

Que se puede capturar con expresiones regulares, para luego ir agregando los PictureBox e ir colocando las imagenes con las URL que sacaste y la función que hiciste.

La otra forma que es el doble de lenta :silbar:, pero más sencilla :xD es cargar la búsqueda en un WebBrowser, y solicitar las etiquetas de las imágenes con Document.Images -> OuterHtml, estas estiquetas vienen en el formato común para agregar una imagen en HTML

<img src=...></img>

También sacarías el link con expresiones regulares y lo cargarías a cada PictureBox, el problema de este método es que cada imagen cargara 2 veces.
#149
Se puede lograr usando un Panel con la propiedad AutoScroll en True, e ir agregando PictureBox con la imagen correspondiente en tiempo de ejecución, los PictureBox podrían tener un tamaño fijo para que se te haga más fácil calcular la posición que tendrán dentro del Panel, puedes usar la propiedad de los PictureBox BackgroundImageLayout en Strech para ajustar la imagen al PictureBox, si quieres que se vea mejor entonces cámbiale el tamaño proporcional con Graphics o con New Bitmap(Imagen , Ancho, Alto).

¿Ya tienes hecho el motor que saca las URL de las imágenes?, si no ya se me dices porque ya encontré una forma ;)
#150
Ahora ya habiendo preguntado todo. Da ese error por que los valores no están, tu estas pidiendo los valores de los cuadros vacíos y eso es precisamente lo que estas buscando. Te doy un ejemplo:

Con el cuadro de 3x3 que tu me diste:

x - x + x    =8
-   +    +
x+ n  / x    =2
/    -    *  
x +x+  x   =9

=   =   =
2    4    8

Aquí hay 6 ecuaciones o formulas, como les quieras decir:

x-x+x=8
x+n/x=2
x+x+x=9
x-x/x=2
x+n-x=4
x+x*x=9


Entonces como estás haciendo debes dividir, sumar, restar o multiplicar los números del 1 al 9 con la formula que posees hasta hallar todas las posibles soluciones.

Coloquemosle nombre a las "x" que son los TextBox para confundirnos menos:

Por ejemplo:
x-x+x=8

Código (vb.net) [Seleccionar]
       Dim resultado As Integer = 8

       For x1 As Integer = 1 To 9
           For x2 As Integer = 1 To 9
               For x3 As Integer = 1 To 9
                   If x1 - x2 + x3 = resultado Then
                       MessageBox.Show(String.Format("{0}-{1}+{2}={3}", x1, x2, x3, resultado))
                   End If
               Next
           Next
       Next


Este código hallo 52 soluciones posibles.


1-1+8=8
1-2+9=8
2-1+7=8
2-2+8=8
2-3+9=8
3-1+6=8
3-2+7=8
3-3+8=8
3-4+9=8
4-1+5=8
4-2+6=8
4-3+7=8
4-4+8=8
4-5+9=8
5-1+4=8
5-2+5=8
5-3+6=8
5-4+7=8
5-5+8=8
5-6+9=8
6-1+3=8
6-2+4=8
6-3+5=8
6-4+6=8
6-5+7=8
6-6+8=8
6-7+9=8
7-1+2=8
7-2+3=8
7-3+4=8
7-4+5=8
7-5+6=8
7-6+7=8
7-7+8=8
7-8+9=8
8-1+1=8
8-2+2=8
8-3+3=8
8-4+4=8
8-5+5=8
8-6+6=8
8-7+7=8
8-8+8=8
8-9+9=8
9-2+1=8
9-3+2=8
9-4+3=8
9-5+4=8
9-6+5=8
9-7+6=8
9-8+7=8
9-9+8=8


Ahora esas son posibles soluciones para esa fila, te recomiendo almacenar esas soluciones en algún sitio, porque cuando vayas a hallar los valores en las columnas que interceptan esa fila la solución correcta solo será unas pocas si que acaso una sola de las N que existan.

Ahora solucionaremos la primera columna:

x1-x4/x7=2

Debemos probar con los números del 1-9 para las "x" que no conocemos y usar los valores que hemos almacenado para las "x" que conocemos hasta que nos de 2 que es el resultado que buscamos.

Ejemplo:

Código (vb.net) [Seleccionar]
 'Aqui almacenaremos las x1, x2 y x3 que dan solución'
       Dim _x1 As New List(Of Integer)
       Dim _x2 As New List(Of Integer)
       Dim _x3 As New List(Of Integer)

       Dim resultado_fila_1 As Integer = 8
       Dim resultado_columna_1 As Integer = 2

       For x1 As Integer = 1 To 9
           For x2 As Integer = 1 To 9
               For x3 As Integer = 1 To 9
                   If x1 - x2 + x3 = resultado_fila_1 Then
                       If Not _x1.Contains(x1) Then
                           _x1.Add(x1)
                       End If
                       If Not _x2.Contains(x2) Then
                           _x2.Add(x2)
                       End If
                       If Not _x3.Contains(x3) Then
                           _x3.Add(x3)
                       End If
                   End If
               Next
           Next
       Next

       For x4 As Integer = 1 To 9
           For x7 As Integer = 1 To 9
               For Each x1 As Integer In _x1
                   If x1 - x4 / x7 = resultado_fila_1 Then
                       MessageBox.Show(String.Format("{0}-{1}/{2}={3}", x1, x4, x7, resultado_columna_1))
                   Else
                       _x1.Remove(x1)
                   End If
               Next
           Next
       Next


Este código calcula que de las 52 soluciones solo hay 9 que satisfacen la columna 1 cuando intercepta la fila 1, este procedimiento hay que seguirlo aplicando hasta hallar la solución completa, es bastante trabajo pero al terminarlo es una obra de arte Los juegos de computadora son la máxima expresión de la lógica y la matemática aplicada :xD

Mira que si no se satisface la condición el valor es removido de _x1, vas realizando el procedimiento una y otra vez, y cuando finalices todas las filas y columnas te quedara una lista de valores x1, x2, x3, x4, x5 y x6 que guardan las combinaciones perfectas que llegan a la solución.