Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "fmt"
- "github.com/skorobogatov/input"
- )
- type Pair struct {
- number,place int
- symbol string
- }
- type Set struct {
- set []Pair
- }
- func (set *Set) add(p Pair)bool{
- for _,v:=range set.set{
- if v.number==p.number && p.symbol==v.symbol{
- return false
- }
- }
- set.set = append(set.set, p)
- return true
- }
- func main(){
- var(
- edges,output []string
- n,m,k int
- delta [][]int
- phi [][]string
- )
- input.Scanf("%d",&n)
- edges=make([]string,n)
- readData:= func(container []string) {
- for i:=range container{
- input.Scanf("%s ",&container[i])
- }
- }
- readData(edges)
- input.Scanf("%d",&m)
- output=make([]string,m)
- readData(output)
- states:=Set{}
- input.Scanf("%d",&k)
- delta,phi=make([][]int,k),make([][]string,k)
- for i:=range delta{
- delta[i]=make([]int,n)
- phi[i]=make([]string,n)
- }
- for i:=range delta{
- for j:=range delta[i]{
- input.Scanf("%d",&delta[i][j])
- }
- }
- for i:=range delta{
- for j:=range delta[i]{
- input.Scanf("%s",&phi[i][j])
- }
- }
- m=0
- for i:=range delta{
- for j:=range delta[i]{
- if states.add(Pair{
- number: delta[i][j],
- place: m,
- symbol: phi[i][j],
- }){
- m++
- }
- }
- }
- fmt.Println("digraph{\nrankdir = LR")
- getElem:= func(i,j int) Pair{
- for _,p:=range states.set{
- if p.number==delta[i][j] && p.symbol==phi[i][j]{
- return p
- }
- }
- panic("Error")
- }
- for i:=range states.set{
- fmt.Print(states.set[i].place," [label=\"(",)
- fmt.Print(states.set[i].number)
- fmt.Print(",")
- fmt.Print(states.set[i].symbol)
- fmt.Println(")\"]")
- for j:=range delta[0]{
- fmt.Print(states.set[i].place,"->",getElem(states.set[i].number,j).place," [label=\"")
- fmt.Print(edges[j])
- fmt.Println("\"]")
- }
- }
- fmt.Println("}")
- }
Advertisement
Add Comment
Please, Sign In to add comment