#!/bin/csh ####################################################################################################################################### # # # G E N E R A T I O N D E L A D E F I N I T I O N # # D ' U N A U T O M A T E C E L L U L A I R E B I D I M E N S I O N N E L B I N A I R E : # # # # # # Utilisation : # # # # $xci/AutoC_2DB.01$Z <nom_definition> "<regle1> ... <regleN>" [<EditerRegles>] # # # # # # Author of '$xci/AutoC_2DB.01$Z' : # # # # Jean-Francois Colonna (LACTAMME, 20030116171028). # # # ####################################################################################################################################### set Definition=$1 set Regles=($2) set EditerRegles=$3 # L'argument '$EditerRegles' a ete introduit le 20030123001229, apres que les conventions # # {N,B} aient ete remplacees par les conventions {B,W}... # setArgum EditerRegles $NEXIST $xci/init$X niveau=$NOIR R=$Definition \ $formatI # Initialisation a '$NOIR' de la definition... # source $xci/AutoC_NDB$vv$Y # Definitions utiles a la definition d'un automate cellulaire binaire. # if ($#Regles > $dimY) then EROR "Le nombre de regles maximal est $dimY alors qu'il y en a $#Regles." else endif set Ycourant=$Ymin # La coordonnee 'Y' represente le numero des regles. # if ($EditerRegles == $EXIST) then echo "Regles utilisees : {$Regles}." else endif foreach Regle ($Regles) set Xcourant=$Xmin # La coordonnee 'X' represente l'index des points de chaque regle. # set Points=`echo "$Regle" | $SE -e "s/$SeparateuR/ /g"` if ($#Points == 2) then set Spirale=$Points[1] set Niveau=$Points[2] set Spirale=`echo "$Spirale" | $SE -e "s/\(.\)/\1 /g" -e 's/ *$//'` set Niveau=`echo "$Niveau" | $SE -e "s/\(.\)/\1 /g" -e 's/ *$//'` if ($#Spirale == 0) then EROR "La regle '$Regle' est mal formee (1)." else endif if ($#Niveau != 1) then EROR "La regle '$Regle' est mal formee (2)." else endif set RegleC=($Niveau $Spirale) foreach Point ($RegleC) if ($Point == $PointNoir_) then else if ($Point == $PointBlanc) then else EROR "La regle '$Regle' est mal formee (3)." endif endif end set RegleC=`echo "$RegleC" | $SE -e "s/ *//g"` $xci/S_points$X A=$Definition \ X=$Xcourant Y=$Ycourant \ iX=1 iY=0 \ niveaux=$RegleC \ R=$Definition \ $formatI else EROR "La regle '$Regle' est mal formee (4)." endif @ Ycourant = $Ycourant + 1 end $xci/substitue$X A=$Definition \ substitution=L_SUBSTITUTION_ROUGE \ p=$PaletteNoirBlanc \ $formatI | \ $xci/acces$X \ convertir=VRAI \ R=$Definition \ $formatI # ATTENTION : '$xci/substitue$X' ne peut evidemment avoir lieu qu'une seule fois sur # # l'image '$Definition', et ce tout a la fin. La conversion en une image non standard # # a ete introduite le 20030123165835 afin de prevoir des extensions futures... #