Си диез / Говнокод #5295 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
//1.    Реализовать с помощью персептронов распознавание изображений букв, заданных в виде матриц (4x4, 8x8 или др.). 
//Набор букв для распознавания определяется фамилией студента (‘Иванов‘ = ‘И‘, ‘В‘, ‘А‘, ‘Н‘, ‘О‘).
//Выполнить в виде сети из одного слоя. Необходимо выполнить обучение сети на требуемый набор букв. 
namespace lab1_1
{
    class Program
	{
		 static int[,] wRe = new int[5,25] { 
			{1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1 },
			{1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1 }, ...
		};
...
		///  Дельта обучение 
		static int delta()
		{
			bool p = true;
			while (p){
				p = false;
				int yRes1 = 0, yRes2 = 0, yRes3 = 0, yRes4 = 0, yRes5 = 0;
				if ((y[0, 0] == 1) && (y[0, 1] == 0) && (y[0, 2] == 0) && (y[0, 3] == 0) && (y[0, 4] == 0)) yRes1 = 1;
				if ((y[1, 0] == 0) && (y[1, 1] == 1) && (y[1, 2] == 0) && (y[1, 3] == 0) && (y[1, 4] == 0)) yRes2 = 1;
....
 
				for (int i = 0; i < 25; i++) w[i]=wRe[0, i];
					// суматоры 
				int s1 = b[0] + w[0] * iBukva[0, 0] + w[1] * iBukva[0, 1] + w[2] * iBukva[0, 2] + w[3] * iBukva[0, 3] + w[4] * iBukva[0, 4] +
					w[5] * iBukva[1, 0] + w[6] * iBukva[1, 1] + w[7] * iBukva[1, 2] + w[8] * iBukva[1, 3] + w[9] * iBukva[1, 4] +
....
				 t1 = s1 < fi ? 0 : 1;
				int yResT1 = 0;
				if ((t1 == 1) && (t2 == 0) && (t3 == 0) && (t4 == 0) && (t5 == 0)) yResT1 = 1;
				// первая буква
				if ((yRes1 != yResT1) && (yRes1 == 0))
				{
					for (int i = 0; i < 5; i++)
						for (int j = 0; j < 5; j++)
							if (iBukva[i, j] == 1) w[5 * i + j]--;
					b[0]--;
					p = true;
				}
				 if ((yRes1 != yResT1) && (yRes1 == 1))
				{
					for (int i = 0; i < 5; i++)
						for (int j = 0; j < 5; j++)
							if (iBukva[i, j] == 1) w[5 * i + j]++;
					b[0]++;
					p = true;
				}
				 for (int i = 0; i < 25; i++) wRe[0, i] = w[i];
 
				for (int i = 0; i < 25; i++) w[i] = wRe[1, i];
				int s2 = b[1] + w[0] * vBukva[0, 0] + w[1] * vBukva[0, 1] + w[2] * vBukva[0, 2] + w[3] * vBukva[0, 3] + w[4] * vBukva[0, 4] +
					w[5] * vBukva[1, 0] + w[6] * vBukva[1, 1] + w[7] * vBukva[1, 2] + w[8] * vBukva[1, 3] + w[9] * vBukva[1, 4] +
...
				 t2 = s2 < fi ? 0 : 1;
				int yResT2 = 0;
				if ((t1 == 0) && (t2 == 1) && (t3 == 0) && (t4 == 0) && (t5 == 0)) yResT2 = 1;
				//вторая буква
				if ((yRes2 != yResT2) && (yRes2 == 0))
				{
					for (int i = 0; i < 5; i++)
						for (int j = 0; j < 5; j++)
							if (vBukva[i, j] == 1) w[5 * i + j]--;
					b[1]--;
					p = true;
				}
				 if ((yRes2 != yResT2) && (yRes2 == 1))
				{
					for (int i = 0; i < 5; i++)
						for (int j = 0; j < 5; j++)
							if (vBukva[i, j] == 1) w[5 * i + j]++;
					b[1]++;
					p = true;
				}
				 for (int i = 0; i < 25; i++) wRe[1, i] = w[i];
 
				for (int i = 0; i < 25; i++) w[i] = wRe[2, i];
				int s3 = b[2] + w[0] * aBukva[0, 0] + w[1] * aBukva[0, 1] + w[2] * aBukva[0, 2] + w[3] * aBukva[0, 3] + w[4] * aBukva[0, 4] +
					w[5] * aBukva[1, 0] + w[6] * aBukva[1, 1] + w[7] * aBukva[1, 2] + w[8] * aBukva[1, 3] + w[9] * aBukva[1, 4] +
					w[10] * aBukva[2, 0] + w[11] * aBukva[2, 1] + w[12] * aBukva[2, 2] + w[13] * aBukva[2, 3] + w[14] * aBukva[2, 4] +
					w[15] * aBukva[3, 0] + w[16] * aBukva[3, 1] + w[17] * aBukva[3, 2] + w[18] * aBukva[3, 3] + w[19] * aBukva[3, 4] +
					w[20] * aBukva[4, 0] + w[21] * aBukva[4, 1] + w[22] * aBukva[4, 2] + w[23] * aBukva[4, 3] + w[24] * aBukva[4, 4];
...

Запостил: qbasic qbasic, (Updated )

Комментарии (2) RSS

  • трудно понять алгоритм проги, но выглядит, как решение "в лоб", причем все на одном дыхании, в одной куче.
    впрочем, это уже уныло, бо лаба.
    Ответить
  • Bukva[0, 0] + w[1] * aBukva[0, 1] + w[2] * aBukva[0, 2] + w[3] * aBukva[0, 3] + w[4] * aBukva[0, 4] +
    					w[5] * aBukva[1, 0] + w[6] * aBukva[1, 1] + w[7] * aBukva[1, 2] + w[8] * aBukva[1, 3] + w[9] * aBukva[1, 4] +
    					w[10] * aBukva[2, 0] + w[11] * aBukva[2, 1] + w[12] * aBukva[2, 2] + w[13] * aBukva[2, 3] + w[14] * aBukva[2, 4] +
    					w[15] * aBukva[3, 0] + w[16] * aBukva[3, 1] + w[17] * aBukva[3, 2] + w[18] * aBukva[3, 3] + w[19] * aBukva[3, 4] +
    					w[20] * aBukva[4, 0] + w[21] * aBukva[4, 1] + w[22] * aBukva[4, 2] + w[23] * aBukva[4, 3] + w[24] * aBukva[4, 4];
    Цикл бы не помешал.

    А вообще, стандартная проблема студентов. Не умеют разбивать код на модули/функции.
    Ответить

Добавить комментарий

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8