Skip to content

Instantly share code, notes, and snippets.

@mzaks
Created June 4, 2021 09:22
Show Gist options
  • Save mzaks/af45205effb56514b18156374c5a3cc3 to your computer and use it in GitHub Desktop.
Save mzaks/af45205effb56514b18156374c5a3cc3 to your computer and use it in GitHub Desktop.
func barBellNet() -> PetriNet {
let totoalWeightInGram = Place(name: "tototalWeightInGram")
let barBellSelected = Place(name: "BarBellSelected")
let barBellNotSelected = Place(name: "BarBellNotSelected", initNumberOfTokens: 1)
let barBell10Kg = Place(name: "10KgBarBell", initNumberOfTokens: 1)
let barBell15Kg = Place(name: "15KgBarBell", initNumberOfTokens: 1)
let barBell17_5Kg = Place(name: "17.5_KgBarBell", initNumberOfTokens: 1)
let barBell20Kg = Place(name: "20_KgBarBell", initNumberOfTokens: 1)
let weight0_5kg = Place(name: "0.5_KgWeight", initNumberOfTokens: 4)
let weight1kg = Place(name: "1_KgWeight", initNumberOfTokens: 4)
let weight1_25kg = Place(name: "1.25_KgWeight", initNumberOfTokens: 4)
let weight2kg = Place(name: "2_KgWeight", initNumberOfTokens: 4)
let weight2_5kg = Place(name: "2.5_KgWeight", initNumberOfTokens: 4)
let weight3kg = Place(name: "3_KgWeight", initNumberOfTokens: 4)
let weight5kg = Place(name: "5_KgWeight", initNumberOfTokens: 4)
let weight10kg = Place(name: "10_KgWeight", initNumberOfTokens: 4)
let weight15kg = Place(name: "15_KgWeight", initNumberOfTokens: 4)
let weight20kg = Place(name: "20_KgWeight", initNumberOfTokens: 4)
let weight25kg = Place(name: "25_KgWeight", initNumberOfTokens: 4)
return PetriNet(transitions: [
Transition(name: "Pick10KgBarBell", take: [(barBellNotSelected, 1), (barBell10Kg, 1)], put: [(barBellSelected, 1), (totoalWeightInGram, 10_000)]),
Transition(name: "Pick15KgBarBell", take: [(barBellNotSelected, 1), (barBell15Kg, 1)], put: [(barBellSelected, 1), (totoalWeightInGram, 15_000)]),
Transition(name: "Pick17.5KgBarBell", take: [(barBellNotSelected, 1), (barBell17_5Kg, 1)], put: [(barBellSelected, 1), (totoalWeightInGram, 17_500)]),
Transition(name: "Pick20KgBarBell", take: [(barBellNotSelected, 1), (barBell20Kg, 1)], put: [(barBellSelected, 1), (totoalWeightInGram, 20_000)]),
Transition(name: "Pick0.5KgWeight", take: [(barBellSelected, 1), (weight0_5kg, 2)], put: [(barBellSelected, 1), (totoalWeightInGram, 1_000)]),
Transition(name: "Pick1KgWeight", take: [(barBellSelected, 1), (weight1kg, 2)], put: [(barBellSelected, 1), (totoalWeightInGram, 2_000)]),
Transition(name: "Pick1.25KgWeight", take: [(barBellSelected, 1), (weight1_25kg, 2)], put: [(barBellSelected, 1), (totoalWeightInGram, 2_500)]),
Transition(name: "Pick2KgWeight", take: [(barBellSelected, 1), (weight2kg, 2)], put: [(barBellSelected, 1), (totoalWeightInGram, 4_000)]),
Transition(name: "Pick2.5KgWeight", take: [(barBellSelected, 1), (weight2_5kg, 2)], put: [(barBellSelected, 1), (totoalWeightInGram, 5_000)]),
Transition(name: "Pick3KgWeight", take: [(barBellSelected, 1), (weight3kg, 2)], put: [(barBellSelected, 1), (totoalWeightInGram, 6_000)]),
Transition(name: "Pick5KgWeight", take: [(barBellSelected, 1), (weight5kg, 2)], put: [(barBellSelected, 1), (totoalWeightInGram, 10_000)]),
Transition(name: "Pick10KgWeight", take: [(barBellSelected, 1), (weight10kg, 2)], put: [(barBellSelected, 1), (totoalWeightInGram, 20_000)]),
Transition(name: "Pick15KgWeight", take: [(barBellSelected, 1), (weight15kg, 2)], put: [(barBellSelected, 1), (totoalWeightInGram, 30_000)]),
Transition(name: "Pick20KgWeight", take: [(barBellSelected, 1), (weight20kg, 2)], put: [(barBellSelected, 1), (totoalWeightInGram, 40_000)]),
Transition(name: "Pick25KgWeight", take: [(barBellSelected, 1), (weight25kg, 2)], put: [(barBellSelected, 1), (totoalWeightInGram, 50_000)]),
])
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment