Advertisement
Pug_coder

nonWorkingFirst

May 31st, 2021
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 3.01 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. type usedMealy struct {
  11.     state [][]int
  12.     exSignals [][]string
  13.     used []int
  14. }
  15. func input(n int, m int, q int, autom autoMealy) autoMealy{
  16.     for i := 0; i < n; i++ {
  17.         for j := 0; j < m; j++ {
  18.             fmt.Scan(&autom.state[i][j])
  19.         }
  20.     }
  21.     for i := 0; i < n; i++ {
  22.         for j := 0; j < m; j++ {
  23.             fmt.Scan(&autom.exSignals[i][j])
  24.         }
  25.     }
  26.     autom.start = q
  27.     return autom
  28. }
  29. func (newAuto *autoMealy) NewMealy(n int ,m int) *autoMealy {
  30.     newAuto.state = make([][]int, n)
  31.     newAuto.exSignals = make([][]string, n)
  32.     for i := 0; i < n; i++ {
  33.         newAuto.state[i] = make([]int, m)
  34.         newAuto.exSignals[i] = make([]string, m)
  35.     }
  36.     return newAuto
  37. }
  38. func (newAuto *usedMealy) UsedMealy(n int ,m int) *usedMealy {
  39.     newAuto.state = make([][]int, n)
  40.     newAuto.exSignals = make([][]string, n)
  41.     newAuto.used = make([]int,n)
  42.     for i := 0; i < n; i++ {
  43.         newAuto.state[i] = make([]int, m)
  44.         newAuto.exSignals[i] = make([]string, m)
  45.  
  46.     }
  47.     for i := 0; i < n; i++ {
  48.         newAuto.used[i] = -1
  49.     }
  50.     return newAuto
  51. }
  52. /*func DFS(usedAuto usedMealy, mealy autoMealy, index int, q int, m int) {
  53.     usedAuto.used[mealy.start] = index
  54.     index++
  55.     fmt.Println(index)
  56.     for i := 0; i < m; i++ {
  57.         if usedAuto.used[mealy.state[mealy.start][i]] == -1 {
  58.             DFS(usedAuto, mealy, index, q, m)
  59.         }
  60.     }
  61. }*/
  62. func DFS(usedAuto usedMealy, mealy autoMealy, ind int, begin int, m int, n int, k *int) {
  63.     for i:=0; i<n; i++ {
  64.         usedAuto.used[i] = -1
  65.     }
  66.     //for i:=0; i<n; i++ {
  67.     //if used[i] == -1 {
  68.     VisitVertex(usedAuto, mealy, ind, begin,m, n, k)
  69.     //}
  70.     //}
  71. }
  72.  
  73. func VisitVertex(usedAuto usedMealy, mealy autoMealy, ind int, begin int, m int, n int, k *int) {
  74.     for i := 0; i < n; i++ {
  75.         fmt.Println(usedAuto.state[i])
  76.     }
  77.     for i := 0; i < n; i++ {
  78.         fmt.Println(usedAuto.used[i])
  79.     }
  80.     for i := 0; i < n; i++ {
  81.         fmt.Println(usedAuto.exSignals[i])
  82.     }
  83.     usedAuto.used[begin] = *k
  84.     //fmt.Println(" i = ", ind)
  85.     (*k)++
  86.     for i:=0; i<m; i++ {
  87.         if usedAuto.used[mealy.state[begin][i]] == -1 {
  88.             //ind++
  89.             VisitVertex(usedAuto, mealy, ind, mealy.state[begin][i], m, n, k)
  90.         }
  91.     }
  92. }
  93. func main() {
  94.     var n, m, q, index,k int
  95.     var mealy autoMealy
  96.     var usedAuto usedMealy
  97.     index = 0
  98.     fmt.Scanf("%d\n", &n)
  99.     fmt.Scanf("%d\n", &m)
  100.     fmt.Scanf("%d\n", &q)
  101.     mealy.NewMealy(n, m)
  102.     usedAuto.UsedMealy(n, m)
  103.     input(n, m, q, mealy)
  104.     //fmt.Println(mealy.start)
  105.     //DFS(usedAuto, mealy,index, q, m)
  106.     DFS(usedAuto, mealy, index, q, m, n, &k)
  107.  
  108.     for i := 0; i < n; i++ {
  109.         if usedAuto.used[i] != -1 {
  110.             usedAuto.exSignals[usedAuto.used[i]] = mealy.exSignals[i]
  111.             for j := 0; j < m; j++ {
  112.                 usedAuto.state[usedAuto.used[i]][j] = usedAuto.used[mealy.state[i][j]]
  113.             }
  114.         }
  115.     }
  116.     fmt.Print(index,"\n",m,"\n",0,"\n")
  117.     for i := 0; i < index; i++ {
  118.         for j := 0; j < m; j++ {
  119.             fmt.Print(usedAuto.state[i][j], " ")
  120.         }
  121.         fmt.Println()
  122.     }
  123.     for i := 0; i < index; i++ {
  124.         for j := 0; j < m; j++ {
  125.             fmt.Print(usedAuto.exSignals[i][j], " ")
  126.         }
  127.         fmt.Println()
  128.     }
  129. }
  130.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement