Nantes Université

Skip to content
Extraits de code Groupes Projets
Valider 642db543 rédigé par Titouan's avatar Titouan
Parcourir les fichiers

auto

parent 025a0281
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="openjdk-21 (WSL)" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>
\ No newline at end of file
package Automates
import Etat
class Adresse() : Automate() {
init {
var E0 = Etat()
var E1 = Etat()
var E2 = Etat()
var E3 = Etat()
var chars = arrayOf("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ".", "-", "_")
S = arrayOf<Etat>(E0, E1, E2, E3)
A = arrayOf("@", ";")
A += chars
delta = arrayOf(
arrayOf(E0, chars, E1),
arrayOf(E1, chars, E1),
arrayOf(E1, "@", E2),
arrayOf(E2, chars, E3),
arrayOf(E3, chars, E3),
arrayOf(E3, ";", E0)
)
s0 = E0
sf = arrayOf(E3)
init_transitions_by_delta()
}
override fun run_automate(str : String) : String{
var etatCourant = s0
var OK : Boolean = false
for (char in str){
var charCourant = char.toString()
if(charCourant in A) {
var etatSuivant = etatCourant.donne_suivant(charCourant)
if (etatSuivant != null){
etatCourant= etatSuivant
OK = false
if (etatCourant in sf) {
OK = true
}
}else{
OK = false
}
}else{
OK = false
}
}
if (OK){
return "OK"
}else{
return "KO"
}
}
}
\ No newline at end of file
......@@ -16,8 +16,15 @@ abstract class Automate (){
for (etat in S){
for (transition in delta){
if (etat == transition[0]){
key.add(transition[1] as String)
value.add(transition[2] as Etat)
if (transition[1] is Array<*>){
for (elmt in transition[1] as Array<*>){
key.add(elmt as String)
value.add(transition[2] as Etat)
}
}else {
key.add(transition[1] as String)
value.add(transition[2] as Etat)
}
}
}
etat.init_transition(key,value)
......@@ -26,14 +33,13 @@ abstract class Automate (){
}
}
fun run_automate(str : String) : String{
open fun run_automate(str : String) : String{
var etatCourant = s0
var currentChar : String
for (index in 0..str.length){
currentChar = str[index].toString()
if(currentChar in A) {
var etatSuivant = etatCourant.donne_suivant(currentChar)
var charCourant : String
for (char in str){
charCourant = char.toString()
if(charCourant in A) {
var etatSuivant = etatCourant.donne_suivant(charCourant)
if (etatSuivant != null){
etatCourant= etatSuivant
if (etatCourant in sf) {
......
......@@ -2,6 +2,7 @@ package Automates
import Etat
class HHMM() : Automate() {
init{
var E0 = Etat()
var H1 = Etat()
......@@ -10,32 +11,26 @@ class HHMM() : Automate() {
var M1 = Etat()
var M2 = Etat()
var M = Etat()
var ZeroToOne = arrayOf("0", "1")
var ZeroToNine = arrayOf("0","1","2","3","4","5","6","7","8","9")
var ZeroToFive = arrayOf("0","1","2","3","4","5")
var ZeroToThree = arrayOf("0", "1", "2", "3")
S = arrayOf(E0,H1,H2,H,M1,M2,M)
A = arrayOf(":","0","1","2","3","4","5","6","7","8","9")
delta = arrayOf(
arrayOf(E0,"0",H1),
arrayOf(E0,"1",H1),
arrayOf(E0,"2",H2),
arrayOf(H,":",M),
arrayOf(E0, ZeroToOne, H1),
arrayOf(E0, "2", H2),
arrayOf(H, ":", M),
arrayOf(H1, ZeroToNine, H),
arrayOf(M2, ZeroToNine, M),
arrayOf(M1, ZeroToFive, M),
arrayOf(H2, ZeroToThree, H)
)
for(etat in S){
if(etat == H1){
for(i in 0..9){
delta += arrayOf(H1,i.toString(),H)
delta += arrayOf(M2,i.toString(),M)
}
}else if(etat == M1){
for(i in 0..5){
delta += arrayOf(M1,i.toString(),M)
}
} else if(etat == H2){
for(i in 0..3){
delta += arrayOf(H2,i.toString(),H)
}
}
}
s0 = E0
sf = arrayOf(M)
init_transitions_by_delta()
}
}
\ No newline at end of file
......@@ -2,27 +2,79 @@ package Automates
import Etat
class JJMMAAAA() : Automate() {
init{
init {
var E0 = Etat()
var E1 = Etat()
var E2 = Etat()
var E3 = Etat()
var E4 = Etat()
S = arrayOf(E0,E1,E2,E3,E4)
A = arrayOf(";",":","]","=","-","(",")")
var E5 = Etat()
var E6 = Etat()
var E7 = Etat()
var E8 = Etat()
var E9 = Etat()
var E10 = Etat()
var E11 = Etat()
var E12 = Etat()
var E13 = Etat()
var E14 = Etat()
var E15 = Etat()
var E16 = Etat()
var E17 = Etat()
var E18 = Etat()
var E19 = Etat()
var E20 = Etat()
var E21 = Etat()
var E22 = Etat()
var action_list1 = arrayOf("0", "1", "2", "3", "4", "5", "6", "7", "8", "9")
var action_list2 = arrayOf("0", "1", "2", "3", "4", "5", "6", "7", "8")
var action_list3 = arrayOf("0", "1", "2", "3", "4", "5", "6", "7", "8", "9")
var action_list4 = arrayOf("0", "1", "2")
var action_list5 = arrayOf("1", "3", "5", "7", "8")
var action_list6 = arrayOf("0", "2")
var action_list7 = arrayOf("1", "3", "4", "5", "6", "7", "8", "9")
S = arrayOf(E0, E1, E2, E3, E4, E5, E6, E7, E8, E9, E10, E11, E12, E13, E14, E15, E16, E17, E18, E19, E20, E21, E22)
A = arrayOf("/", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9")
delta = arrayOf(
arrayOf(E0,":",E1),
arrayOf(E0,";",E2),
arrayOf(E0,"]",E2),
arrayOf(E1,"=",E3),
arrayOf(E1,"-",E3),
arrayOf(E1,"(",E4),
arrayOf(E1,")",E4),
arrayOf(E2,"-",E3),
arrayOf(E3,")",E4)
arrayOf(E0, "0", E4),
arrayOf(E0, "1", E3),
arrayOf(E0, "2", E2),
arrayOf(E0, "3", E1),
arrayOf(E1, "1", E7),
arrayOf(E1, "0", E6),
arrayOf(E2, "9", E6),
arrayOf(E2, action_list2, E5),
arrayOf(E3, action_list1, E5),
arrayOf(E4, action_list3, E5),
arrayOf(E7, "/", E8),
arrayOf(E6, "/", E9),
arrayOf(E5, "/", E10),
arrayOf(E8, "0", E11),
arrayOf(E8, "1", E12),
arrayOf(E9, "0", E13),
arrayOf(E9, "1", E14),
arrayOf(E10, "1", E14),
arrayOf(E10, "0", E15),
arrayOf(E11, action_list5, E16),
arrayOf(E12, action_list6, E16),
arrayOf(E13, action_list7, E16),
arrayOf(E14, action_list4, E16),
arrayOf(E15, action_list3, E16),
arrayOf(E16, "/", E17),
arrayOf(E17, action_list1, E18),
arrayOf(E18, action_list1, E19),
arrayOf(E19, action_list3, E20),
arrayOf(E19, "0", E21),
arrayOf(E20, action_list1, E22),
arrayOf(E21, action_list3, E22)
)
s0 = E0
sf = arrayOf(E4)
sf = arrayOf(E22)
init_transitions_by_delta()
}
}
\ No newline at end of file
import Automates.HHMM
import Automates.Smiley
import Automates.*
import kotlin.system.exitProcess
fun main(args: Array<String>) {
println("Hello World!")
var continu = true
while (continu) {
println(
"------------------------- Menu -------------------------\n" +
"1. Smiley (pour reconnaitre un des smileys)\n" +
"2. HH:MM (pour reconnaitre une heure bien formée)\n" +
"3. JJ/MM/AAAA\n" +
"4. Adresses électroniques\n" +
"...\n" +
"99. Arrêt de l'application\n" +
"Votre choix (1-99) ?\n" +
"Je vous demanderai ensuite la chaîne à analyser, Merci\n" +
"--------------------------------------------------------\n"
)
var input = readLine()
var autoChoice = ""
var automate : Automate = Smiley()
if (input == "1") {
automate = Smiley()
autoChoice = "Smiley"
} else if (input == "2") {
automate = HHMM()
autoChoice = "HHMM"
} else if (input == "3") {
automate = JJMMAAAA()
autoChoice = "JJMMAAAA"
} else if (input == "4") {
automate = Adresse()
autoChoice = "Adresse"
} else if (input == "99") {
println("Bye")
exitProcess(0)
}
println("Vous avez choisi ${autoChoice}. Tapez la chaîne à analyser")
input = readLine()
var str = input.toString()
var OKKO = automate.run_automate(str)
println("Résultat de l'analyse : ${OKKO}")
println(" ")
println("Entrée pour continuer ou quitter")
input = readLine()
}
// Try adding program arguments via Run/Debug configuration.
// Learn more about running applications: https://www.jetbrains.com/help/idea/running-applications.html.
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter