Advertisement
double_trouble

cows and oxes

Dec 23rd, 2015
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.05 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10.  
  11. namespace cows_and_oxes
  12. {
  13.     public partial class Form1 : Form
  14.     {
  15.         public Form1()
  16.         {
  17.             InitializeComponent();
  18.         }
  19.  
  20.         int k = 4;
  21.         int i;
  22.         const int n = 9001;
  23.         string[] list = new string[n];
  24.         int[] linkfrom = new int[n];
  25.         int[] linkto = new int[n];
  26.         int first = 0;
  27.         int p = n;
  28.         int m = 0;
  29.  
  30.         public void comp(string s1, string s2, ref int a1, ref int a2)
  31.         {
  32.             for (int i = 0; i < s1.Length; i++)
  33.                 for (int j = 0; j < s2.Length; j++)
  34.                 {
  35.                     if (s1[i] == s2[j])
  36.                     {
  37.                         if (i == j)
  38.                             a1++;
  39.                         else
  40.                             a2++;
  41.                     }
  42.                 }
  43.             if (s1 == s2)
  44.             {
  45.                 a1 = k;
  46.                 a2 = 0;
  47.             }
  48.         }
  49.  
  50.         private void Form1_Load(object sender, EventArgs e)
  51.         {
  52.             int r;
  53.             for (int i = 0; i < n; i++)
  54.                 list[i] = "";
  55.             for (i = 1000; i < 10000; i++)
  56.             {
  57.  
  58.                 string s = i.ToString();
  59.                 //while (s.Length < k)
  60.                 //{
  61.                 //    s = '0' + s;
  62.                 //}
  63.                 r = i - 1000;
  64.                 list[r] = s;
  65.                 linkto[r] = r + 1;
  66.                 linkfrom[r] = r - 1;
  67.             }
  68.             linkto[n - 1] = -1;
  69.             //for (i = 0; i < n; i++)
  70.             //    richTextBox1.AppendText(list[i] + '\n');
  71.  
  72.             richTextBox1.AppendText(list[0] + '\n');
  73.         }
  74.  
  75.         private void button1_Click(object sender, EventArgs e)
  76.         {
  77.             string input = textBox1.Text;
  78.             //richTextBox2.Text = string.Empty;
  79.             string[] el = input.Split(' ', '\n');
  80.             int cows = int.Parse(el[0]);
  81.             int oxes = int.Parse(el[1]);
  82.             int a1, a2;
  83.             int t;
  84.             if (m != -1 && p > 1)
  85.             {
  86.                 i = first;
  87.                 while (i != -1)
  88.                 {
  89.                     t = linkto[i];
  90.                     a1 = 0;
  91.                     a2 = 0;
  92.                     comp(list[m], list[i], ref a1, ref a2);
  93.                     if (a1 != cows || a2 != oxes)
  94.                     {
  95.                         if (i == first)
  96.                         {
  97.                             int b;
  98.                             if (linkto[i] != -1)
  99.                             {
  100.                                 b = linkto[linkto[i]];
  101.                                 first = linkto[i];
  102.                                 linkfrom[linkto[i]] = linkfrom[i];
  103.                                 linkto[i] = b;
  104.                             }
  105.                            // else
  106.                                 //linkfrom[linkto[i]] = linkfrom[i];
  107.                         }
  108.                         else
  109.                             if (linkto[i] == -1)
  110.                         {
  111.                             linkto[linkfrom[i]] = linkto[i];
  112.                         }
  113.                         else
  114.                         {
  115.                             linkto[linkfrom[i]] = linkto[i];
  116.                             linkfrom[linkto[i]] = linkfrom[i];
  117.                         }
  118.                         p--;
  119.                     }
  120.                     i = t;
  121.                 }
  122.                 m = linkto[m];
  123.                 if (m != -1)
  124.                     richTextBox1.AppendText(list[m] + '\n');
  125.                 textBox1.Text = string.Empty;
  126.             }
  127.             else
  128.             {
  129.                 richTextBox1.AppendText("Ваше число: " + list[first]);
  130.             }
  131.         }
  132.  
  133.         private void textBox1_TextChanged(object sender, EventArgs e)
  134.         {
  135.  
  136.         }
  137.     }
  138. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement