Форум Приднестровья, форум ПМР

Форум Приднестровья, форум ПМР (http://forum-pmr.net/index.php)
-   Программисты и компьютеры в ПМР (http://forum-pmr.net/forumdisplay.php?f=16)
-   -   алгоритм перебора знаков (http://forum-pmr.net/showthread.php?t=110678)

avrudoi 13.04.2013 20:53

Всем привет. Помогите проверить алгоритм. Алгоритм переберает все комбинации цифр и букв, сторки в 50 символов. Уж нему.
вот алгоритм. C#

namespace WindowsFormsApplication8
**
public partial class Form1 : Form
**

public string str = "";

public int DlinaStrok = 0;


public Form1()
**
InitializeComponent();
**

public void gette(int a, object sender)
**
string c="";
for (int b = 0; b > 50; b++)
**
if (DlinaStrok <= 50)
**
c = char.ToString((char)a);
str = str + c;
listBox1.Items.Add(str);
DlinaStrok = DlinaStrok + 1;
**
else
**
DlinaStrok = 0;
str = "";
**
**

**

private void button1_Click(object sender, EventArgs e)
**
for (int a = 48;
(a >= 48) || (a <= 57) ||
(a >= 65) || (a <= 90) ||
(a >= 97) || (a <= 122); a++)
**
gette(a,sender);
**

for (int b = 1040; (b >= 1040) || (b <= 1105); b++)
**
gette(b,sender);
**
**

**
**

PMR 15.04.2013 20:28

Re: алгоритм перебора знаков
 
Поступила информация о создателя темы, что тот, кто откомпилирует рабочий код на си шщарпе для данного алгоритма - получит бутылку коньяка!

Mongoose 15.04.2013 20:33

Re: алгоритм перебора знаков
 
Цитата:

PMR писал (а) (Сообщение 219300)
получит бутылку коньяка!

[кастует в тред Стю] Кажись, я знаю, кому она достаться может...

PMR 16.04.2013 10:00

Re: алгоритм перебора знаков
 
Вот рабочий код на C#, неси коньяк.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication2
**
public partial class Form1 : Form
**
public Form1()
**
InitializeComponent();
**
public string str = "";
public int DlinaStrok = 0;

public void gette(int a, object sender)
**
string c = "";
for (int b = 0; b < 50; b++)
**
if (DlinaStrok <= 50)
**
c = char.ToString((char)a);
str = str + c;
listBox1.Items.Add(str);
DlinaStrok = DlinaStrok + 1;
**
else
**
DlinaStrok = 0;
str = "";
**
**

**

private void button1_Click(object sender, EventArgs e)
**
for (int a = 48; a <= 122; a++)
**
if (a >= 48 && a <= 57)
**
gette(a, sender);
**

if (a >= 65 && a <= 90)
**
gette(a, sender);
**

if (a >= 97 && a <= 122)
**
gette(a, sender);
**

**

for (int b = 1040; b <= 1105; b++)
** gette(b, sender); **
**
**
**

avrudoi 16.04.2013 19:49

Re: алгоритм перебора знаков
 
Всем большое спосибо бутылка коньяка ушла админу форума.

PMR 17.04.2013 10:26

Re: алгоритм перебора знаков
 
avrudoi, ты проверил код на работоспособность?
** надо заменить на левую скобку, это что то форум заменяет её.
Ну и сам алгоритм твой изначальный неверный, его нужно дорабатывать.
Сначала в массив вносишь все варианты "a" - от "0" до "Я" к примеру.
Выбираешь все элементы массива максимальной длины.
Потом уже к этому массиву добавляешь все варианты "a" - от "0" до "Я".
И так цикл.
Это уже сам доделывай.

avrudoi 17.04.2013 14:54

Re: алгоритм перебора знаков
 
Цитата:

PMR писал (а) (Сообщение 219582)
avrudoi, ты проверил код на работоспособность?
** надо заменить на левую скобку, это что то форум заменяет её.
Ну и сам алгоритм твой изначальный неверный, его нужно дорабатывать.
Сначала в массив вносишь все варианты "a" - от "0" до "Я" к примеру.
Выбираешь все элементы массива максимальной длины.
Потом уже к этому массиву добавляешь все варианты "a" - от "0" до "Я".
И так цикл.
Это уже сам доделывай.

незнаю как, но вчера потратил 2 часа на изучение алгоритма, все зарабоатло елочкой. кроме того есть недроботки алгоритм, как я понял должен работать и переберать все все до конца т.е. до буквы "я". но дело втом что не то что мне надо, алгоритм зделан не доконца. Проблемма не регена и все остаеться в силе.

как Должен работать алгоритм. Допустим нужно перебрать все варианты строки abc, это будет так выгледит, a, b, c, ab, ac, bc, ab, abc, acb, bac cab и т.д. при этом нуэно исключить повторные ваиранты, это наверника должен быть массив запоминающий все строки.

avrudoi 17.04.2013 18:19

Re: алгоритм перебора знаков
 
Цитата:

avrudoi писал (а) (Сообщение 219630)
незнаю как, но вчера потратил 2 часа на изучение алгоритма, все зарабоатло елочкой. кроме того есть недроботки алгоритм, как я понял должен работать и переберать все все до конца т.е. до буквы "я". но дело втом что не то что мне надо, алгоритм зделан не доконца. Проблемма не регена и все остаеться в силе.

как Должен работать алгоритм. Допустим нужно перебрать все варианты строки abc, это будет так выгледит, a, b, c, ab, ac, bc, ab, abc, acb, bac cab и т.д. при этом нуэно исключить повторные ваиранты, это наверника должен быть массив запоминающий все строки.

Предложение о бытылке коньяка остатьяс в силе.

avrudoi 18.04.2013 22:23

Re: алгоритм перебора знаков
 
Цитата:

avrudoi писал (а) (Сообщение 219669)
Предложение о бытылке коньяка остатьяс в силе.

так что никому не посилу, а я то думал - это осуществимо;

PMR 18.04.2013 23:34

Re: алгоритм перебора знаков
 
avrudoi, будет свободное время, займусь алгоритмом твоим.

avrudoi 19.04.2013 18:05

Re: алгоритм перебора знаков
 
Цитата:

PMR писал (а) (Сообщение 219877)
avrudoi, будет свободное время, займусь алгоритмом твоим.

да я уже наврное сам допетрю ло него.

PMR 26.04.2013 10:10

Re: алгоритм перебора знаков
 
Вот все таки я разобрался с твоим алгоритмом.
4-ядерный i5 3.3 ГГерц выполняет генерацию строк длиной 3 (в коде найди dlina <= 3) символа минут 10.

Вот сам код программы:
Код:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace boris_app
**
    public partial class Form1 : Form
    **
        public int i = 0;
        public string[] mas = new string[1];
        public int dlina;

        public Form1()
        **
            InitializeComponent();
        **

        public string Rec()
        **
         
            int max = mas.Length;
            for (int a = 0; a < max; a++)
                **
                    for (int b = 0; b < 62; b++)
                    **
                        string dl = mas[a] + mas[b];
                        if (dl.Length == dlina)
                        **
                            mas[i] = mas[a] + mas[b];
                            listBox1.Items.Add(mas[i]);
                            Array.Resize(ref mas, mas.Length + 1);
                            i = i + 1;
                        **
                    **
                **
           
                return "1";
        **


        private void button1_Click(object sender, EventArgs e)
        **


          for (int a = 48; a <= 122; a++)
          **
              if ((a >= 48 && a <= 57) || (a >= 65 && a <= 90) || (a >= 97 && a <= 122))
              **
                  mas[i] = char.ToString((char)a);
                  listBox1.Items.Add(mas[i]);
                  Array.Resize(ref mas, mas.Length + 1);
                  i = i + 1;
              **
          **

          for (dlina = 2; dlina <= 3; dlina++)
          ** string f = Rec(); **

           
        **
    **
**

Так что завози смело ко мне на работу бутылочку коньяка!

avrudoi 07.05.2013 18:03

Re: алгоритм перебора знаков
 
Агоримт работает.


Текущее время: 06:13. Часовой пояс GMT +2.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot