Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1420 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2  3  4  5
Page Suivante
Auteur Sujet :

[Ada][Topic Unic][Open Source] Je fais péter mes codes.

n°2445248
rufo
Pas me confondre avec Lycos!
Posté le 24-04-2023 à 15:30:01  profilanswer
 

Reprise du message précédent :

MaybeEijOrNot a écrit :

Ah oui mais en ce moment donner de tels outils librement ça revient à soutenir le gouvernement dans sa politique, je n'aime donc pas trop ce logiciel macroniste. :/


 :whistle:  
 
De toute manière, la GPL v1 est obsolète comme le logiciel :o


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
mood
Publicité
Posté le 24-04-2023 à 15:30:01  profilanswer
 

n°2446758
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 20-05-2023 à 15:02:59  profilanswer
 


Je ne roule pas au GPL, ton soft n'est pas pour moi :/


---------------
J'ai un string dans l'array (Paris Hilton)
n°2448511
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 12-06-2023 à 16:18:21  profilanswer
 

c'était une blague, laisse couler...


---------------
J'ai un string dans l'array (Paris Hilton)
n°2483509
lady287
Posté le 02-11-2024 à 20:20:11  profilanswer
 

Bonsoir.
 
Si ça vous interresse, j'ai un code qui fais ça avec Ada.
 
Ca cherche le premier nom et ça lui colle tous les adjectifs.
 

Loading : Lexique383.tsv
 142673
Voici le décompte du lexique français :  
 48277 noms ;
 64929 verbes ;
 27002 adjectifs ;
 1841 adverbes ;
 88 auxiliaires ;
 35 conjonctions ;
 80 prepositions ;
 171 pronoms ;
 236 onomatopés ;
 0 sans genre ;
 142673Done
Ok !Begin...
word : je : PRO Ok !
word : suis : VER Ok !
word : un : PRO Ok !
word : homme : NOM Ok !
 
Line : le ciel est bleu.
word : le : PRO Ok !
word : ciel : NOM Ok !
word : est : NOM Ok !
word : bleu : ADJ Ok !
 suis
 un
 homme
 le
 ciel
 est bleu
 
 
Line : je suis un homme blanc.
word : je : PRO Ok !
word : suis : VER Ok !
word : un : PRO Ok !
word : homme : NOM Ok !
word : blanc : ADJ Ok !
 suis
 un
 homme
 le
 ciel
 est bleu
 je
 suis
 un
 homme blanc
 
 
Line : je mange une pomme rouge.
word : je : PRO Ok !
word : mange : VER Ok !
word : une : PRO Ok !
word : pomme : NOM Ok !
word : rouge : ADJ Ok !
 suis
 un
 homme
 le
 ciel
 est bleu
 je
 suis
 un
 homme blanc
 je
 mange
 une
 pomme rouge
 
 
Line :  
homme bleu blanc rouge
 
Line : je suis un homme intelligent.
word : je : PRO Ok !
word : suis : VER Ok !
word : un : PRO Ok !
word : homme : NOM Ok !
word : intelligent : ADJ Ok !
homme bleu blanc rouge suis
 un
 homme intelligent
 
 
Line :  
homme bleu blanc rouge intelligent suis
 un
 homme intelligent
 
 
Line :


Message édité par lady287 le 02-11-2024 à 20:22:54
n°2484328
lady287
Posté le 12-11-2024 à 18:36:27  profilanswer
 

Bonjour,
 
Vous aimerez peut-être jouer avec.
 
Le jeu consiste à trouver le nom du programme.
 
Il s'agit d'un programme Ada/Prolog dont le but est de sortir du programme en fournissant le bon nom.
 
Le script originel Prolog : nommé "main.pl"
 

Code :
  1. name(main).
  2. is_name(V) :-
  3. name(V), !,
  4. write('Eureka')
  5. ; write('false'),
  6. open('./error.txt', write, Stream),
  7. close(Stream).


 
Le script permettra à Swi-Prolog d'écrire "false" si le nom fourni n'est pas celui attendu puis d'écrire un ficher "error.txt" qui sera effcaer par le program Ada ou d'afficher Eureka si le nom est celui attendu.
 
Le programme Ada est le suivant : nommé main.adb, il est un peu long parce qu'on regénaire un ficher source... Pour le fun.
 

Code :
  1. with Ada.Text_Io;
  2. use Ada;
  3. with System.Os_Lib;
  4. use System;
  5. with Ada.Characters.Handling;
  6. use Ada.Characters;
  7. with Ada.Command_Line;
  8. use Ada.Command_Line;
  9. with Ada.Directories;
  10. use Ada.Directories;
  11. procedure Main is
  12.  
  13.   function System(Cmd : in String) return Integer;
  14.   pragma Import(C, System, "system" );
  15.   Errno : Integer := 0;
  16.  
  17.   Verax : Boolean := False;
  18.   Args   : Os_Lib.Argument_List_Access := new Os_Lib.Argument_List(1..0);
  19.   Pid    : Os_Lib.Process_Id;
  20.   Prolog : Text_Io.File_Type;
  21.   Ada    : Text_Io.File_Type;
  22. begin
  23.  
  24.   Text_Io.Put("Name : " );
  25.   declare
  26.      Name : String := Text_Io.Get_Line;
  27.   begin
  28.      
  29.      Name := Handling.To_Lower(Name);
  30.      
  31.      Errno := System("echo is_name\(" & Name & "\). | /usr/bin/swipl -q -f " & Base_Name(Command_Name) & ".pl" & Character'Val(0));
  32.  
  33.      if Os_Lib.Is_Regular_File("./error.txt" ) then
  34.  
  35.         Os_Lib.Delete_file("./error.txt", Verax);
  36.         Text_Io.Create(Prolog, Text_Io.Out_File, Name & ".pl" );
  37.         Text_Io.Put_Line(Prolog, "name(" & Name & " )." );
  38.         Text_Io.Put_Line(Prolog, "is_name(V) :-" );
  39.         Text_Io.Put_Line(Prolog, " name(V), !," );
  40.         Text_Io.Put_Line(Prolog, " write('Eureka')" );
  41.         Text_Io.Put_Line(Prolog, "; write('false')," );
  42.         Text_Io.Put_Line(Prolog, "open('./error.txt', write, Stream)," );
  43.         Text_Io.Put_Line(Prolog, "close(Stream)." );
  44.         Text_Io.Close(Prolog);
  45.        
  46.         Errno := System("ln -s main bin/" & Name & Character'Val(0));
  47.         if Errno = 0 then
  48.            Text_Io.Create(Ada, Text_Io.Out_File, Name & ".adb" );
  49.  
  50.            
  51.            Text_Io.Put_line(Ada, "with Ada.Text_Io;" );
  52.            Text_Io.Put_line(Ada, "use Ada;" );
  53.            Text_Io.Put_line(Ada, "with System.Os_Lib;" );
  54.            Text_Io.Put_line(Ada, "use System;" );
  55.            Text_Io.Put_line(Ada, "with Ada.Characters.Handling;" );
  56.            Text_Io.Put_line(Ada, "use Ada.Characters;" );
  57.            Text_Io.Put_line(Ada, "with Ada.Command_Line;" );
  58.            Text_Io.Put_line(Ada, "use Ada.Command_Line;" );
  59.            Text_Io.Put_line(Ada, "with Ada.Directories;" );
  60.            Text_Io.Put_line(Ada, "use Ada.Directories;" );
  61.            
  62.            Text_Io.Put_line(Ada, "procedure " & Name & " is" );
  63.            Text_Io.New_Line(Ada);
  64.            Text_Io.Put_Line(Ada, "   function System(Cmd : in String) return Integer;" );
  65.            Text_Io.Put_Line(Ada, "   pragma Import(C, System, ""system"" );" );
  66.            Text_Io.Put_Line(Ada, "   Errno : Integer := 0;" );
  67.            Text_Io.Put_Line(Ada, "   Verax : Boolean := False;" );  
  68.            Text_Io.Put_Line(Ada, "   Args   : Os_Lib.Argument_List_Access;" );
  69.            Text_Io.Put_Line(Ada, "   Pid    : Os_Lib.Process_Id;" );
  70.            Text_Io.Put_Line(Ada, "   Prolog : Text_Io.File_Type;" );
  71.            Text_Io.Put_Line(Ada, "   Ada    : Text_Io.File_Type;" );
  72.            Text_Io.Put_Line(Ada, "begin" );
  73.            Text_Io.New_Line(Ada);
  74.            Text_Io.Put_Line(Ada, "   Text_Io.Put(""Name : "" );" );
  75.            Text_Io.Put_Line(Ada, "   declare" );
  76.            Text_Io.Put_Line(Ada, "      Name : String := Text_Io.Get_Line;" );
  77.            Text_Io.Put_Line(Ada, "   begin" );
  78.            Text_Io.New_Line(Ada);
  79.            Text_Io.Put_Line(Ada, "      Name := Handling.To_Lower(Name);" );
  80.            Text_Io.Put_Line(Ada, "      Errno := System(""echo is_name\("" & Name & ""\). | /usr/bin/swipl -q -f "" & Base_Name(Command_Name) & "".pl"" & Character'Val(0));" );
  81.            Text_Io.Put_Line(Ada, "      if Errno /= 0 then" );
  82.            Text_Io.Put_Line(Ada, "         Text_Io.Create(Prolog, Text_Io.Out_File, Name & "".pl"" );" );
  83.            Text_Io.Put_Line(Ada, "         Text_Io.Put_Line(Prolog, ""name("" & Name & "" )."" );" );
  84.            Text_Io.Put_Line(Ada, "         Text_Io.Put_Line(Prolog, ""is_name(V) :-"" );" );
  85.            Text_Io.Put_Line(Ada, "         Text_Io.Put_Line(Prolog, "" name(V), !,"" );" );
  86.            Text_Io.Put_Line(Ada, "         Text_Io.Put_Line(Prolog, "" write('Eureka')"" );" );
  87.            Text_Io.Put_Line(Ada, "         Text_Io.Put_Line(Prolog, ""; write('false'),"" );" );
  88.            Text_Io.Put_Line(Ada, "         Text_Io.Put_Line(Prolog, ""open('./error.txt', write, Stream),"" );" );
  89.            Text_Io.Put_Line(Ada, "         Text_Io.Put_Line(Prolog, ""close(Stream)."" );" );
  90.            Text_Io.Put_Line(Ada, "         Text_Io.Close(Prolog);" );
  91.            Text_Io.Put_Line(Ada, "         Errno := System(""ln -s main bin/"" & Name & Character'Val(0));" );
  92.            Text_Io.Put_Line(Ada, "         pid := Os_Lib.Non_Blocking_Spawn(""./bin/"" & Name, Args.all);" );
  93.            Text_Io.Put_Line(Ada, "      end if;" );Errno := System("ln -s main bin/" & Name & Character'Val(0));
  94.            Text_Io.Put_Line(Ada, "   end;" );
  95.            Text_Io.Put_Line(Ada, "end " & Name & ";" );
  96.  
  97.            Text_Io.Close(Ada);
  98.  
  99.            Os_Lib.Spawn("./bin/" & Name, Args.all, verax);
  100.            
  101.         else
  102.            Text_Io.Put("Faillure" );
  103.         end if;
  104.      end if;
  105.  
  106.   end;
  107. exception
  108.   when Text_Io.End_Error =>
  109.      Text_Io.Put_Line("bye!" );
  110. end Main;


 
Ce programme est à compiler pour produire un exécutable qui faudra placer dans le répertoire "$HOME/bin".
 
Celui ci appelle Swi-Prolog avec à l'origine le fichier main.pl en argument puis, si un fichier "error.txt" est présent, regénaire un fichier source, donc ; Et crée un lien sur "bin/main" avec le nom fourni puis appelle le programme main en utilisant le lien nouvellement créé ; Si non termine normalement.
 
 
Test :

XTERM:  9.5%: 18:17:52: 0.00$ main            
Name : Manuel
false
true.
 
 
Name : Manuel
Eureka
true.
 
 
 
 


Message édité par lady287 le 12-11-2024 à 19:19:13
n°2484458
lady287
Posté le 13-11-2024 à 19:19:49  profilanswer
 

Bonjour,
 
J'ai trouvé une amélioration à apporter qui donne le résultat voulu en fait.
 
Il faudrait modifier le fichier main.adb en conséquence.
 

Code :
  1. name(main).
  2. is_name(V) :-
  3. name(V), !,
  4. write('Eureka')
  5. ; open('./error.txt', write, Stream),
  6.     close(Stream),
  7.     name(V), !,
  8.     write('').


 
Test :

XTERM: 17.8%: 18:19:18: 0.00$ main            
Name : Manuel
false.
 
 
Name : Manuel
Eureka
true.
 
 
 
 

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
Probleme robot google ? Ma source internet ? aidez moiInterface ADA avec C
Projet de frontend Open-Source pour émulateursOpen Office: Base de données
code source pdf ?Modifier le code source de SIP-Communicator
[JS] Pb avec un page de javascripts et module open flash chart[ADA] /!\ Combien on peux boire de biere JEUDI MIDI §§§ la defense ??
Fonction window.open (javascript) 
Plus de sujets relatifs à : [Ada][Topic Unic][Open Source] Je fais péter mes codes.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR