Advertisement
Pug_coder

Try2

May 31st, 2021
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 2.94 KB | None | 0 0
  1. package main
  2.  
  3. import "fmt"
  4. //новый автомат
  5. type autoMealy struct {
  6.     start int
  7.     state [][]int
  8.     exSignals [][]string
  9. }
  10. //автомат который выведем
  11. type usedMealy struct {
  12.     state [][]int
  13.     exSignals [][]string
  14.     used []int
  15. }
  16. func input(n int, m int, q int, mealy autoMealy) autoMealy{
  17.     for i := 0; i < n; i++ {
  18.         for j := 0; j < m; j++ {
  19.             fmt.Scan(&mealy.state[i][j])
  20.         }
  21.     }
  22.     for i := 0; i < n; i++ {
  23.         for j := 0; j < m; j++ {
  24.             fmt.Scan(&mealy.exSignals[i][j])
  25.         }
  26.     }
  27.     mealy.start = q
  28.     return mealy
  29. }
  30. func (newAuto *autoMealy) NewMealy(n int ,m int) *autoMealy {
  31.     newAuto.state = make([][]int, n)
  32.     newAuto.exSignals = make([][]string, n)
  33.     for i := 0; i < n; i++ {
  34.         newAuto.state[i] = make([]int, m)
  35.         newAuto.exSignals[i] = make([]string, m)
  36.     }
  37.     return newAuto
  38. }
  39. func (newAuto *usedMealy) UsedMealy(n int ,m int) *usedMealy {
  40.     newAuto.state = make([][]int, n)
  41.     newAuto.exSignals = make([][]string, n)
  42.     newAuto.used = make([]int,n)
  43.     for i := 0; i < n; i++ {
  44.         newAuto.state[i] = make([]int, m)
  45.         newAuto.exSignals[i] = make([]string, m)
  46.  
  47.     }
  48.     for i := 0; i < n; i++ {
  49.         newAuto.used[i] = -1
  50.     }
  51.     return newAuto
  52. }
  53. func DFS(usedAuto usedMealy, mealy autoMealy, index *int, begin int, m int) {
  54.     // в этой пупк бесконечный цикл
  55.     // есть подозрение что нужно кинуть указатель на usedAuto
  56.     usedAuto.used[begin] = *index
  57.     *index++
  58.     for i := 0; i < m; i++ {
  59.         if usedAuto.used[mealy.state[mealy.start][i]] == -1 {
  60.             DFS(usedAuto, mealy, index, begin, m)
  61.         }
  62.     }
  63. }
  64. /*func DFS(usedAuto usedMealy, mealy autoMealy, ind int, begin int, m int, n int, k *int) {
  65.     for i:=0; i<n; i++ {
  66.         usedAuto.used[i] = -1
  67.     }
  68.     VisitVertex(usedAuto, mealy, ind, begin,m, n, k)
  69. }
  70.  
  71. func VisitVertex(usedAuto usedMealy, mealy autoMealy, ind int, begin int, m int, n int, k *int) {
  72.     usedAuto.used[begin] = *k
  73.     (*k)++
  74.     for i:=0; i<m; i++ {
  75.         if usedAuto.used[mealy.state[begin][i]] == -1 {
  76.             //ind++
  77.             VisitVertex(usedAuto, mealy, ind, mealy.state[begin][i], m, n, k)
  78.         }
  79.     }
  80. }*/
  81. func main() {
  82.     var n, m, q, index int
  83.     var mealy autoMealy
  84.     var usedAuto usedMealy
  85.     index = 0
  86.     fmt.Scanf("%d\n", &n)
  87.     fmt.Scanf("%d\n", &m)
  88.     fmt.Scanf("%d\n", &q)
  89.     mealy.NewMealy(n, m)
  90.     usedAuto.UsedMealy(n, m)
  91.     input(n, m, q, mealy)
  92.     //fmt.Println(mealy.start)
  93.     //DFS(usedAuto, mealy,index, q, m)
  94.     DFS(usedAuto, mealy, &index, q, m)
  95.  
  96.     for i := 0; i < n; i++ {
  97.         if usedAuto.used[i] != -1 {
  98.             usedAuto.exSignals[usedAuto.used[i]] = mealy.exSignals[i]
  99.             for j := 0; j < m; j++ {
  100.                 usedAuto.state[usedAuto.used[i]][j] = usedAuto.used[mealy.state[i][j]]
  101.             }
  102.         }
  103.     }
  104.     fmt.Print(index,"\n",m,"\n",0,"\n")
  105.     for i := 0; i < index; i++ {
  106.         for j := 0; j < m; j++ {
  107.             fmt.Print(usedAuto.state[i][j], " ")
  108.         }
  109.         fmt.Println()
  110.     }
  111.     for i := 0; i < index; i++ {
  112.         for j := 0; j < m; j++ {
  113.             fmt.Print(usedAuto.exSignals[i][j], " ")
  114.         }
  115.         fmt.Println()
  116.     }
  117. }
  118.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement