• STATISTIQUES
  • Il y a eu un total de 0 membres et 33376 visiteurs sur le site dans les dernières 24h pour un total de 33 376 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [EN] Lost-chall
    Site de challenge présenté sous la forme de différente saison. Pour passer une saison vous devez avoir accumulÃ...
    Challenges
    [EN] Astalavista
    JavaScript: 1, Exploit: 2, Crypto: 34, CrackIt: 15, Stegano: 8, Programming: 12, Logic: 36, Special: 6, Science: 4, Info...
    Challenges
    [FR] frameip
    le site de partage des connaissances du monde TCPIP
    Protocole
    [FR] Infomirmo
    Challenge présenté sous la forme de 6 niveaux de difficultés diverses et variées avec chacun plusieurs chall...
    Challenges
    [FR] Hackfest
    Le Hackfest est un évènement de sécurité et de piratage informatique au Québec reg...
    Hacking
    [FR] apprendre-a-manipuler
    Site d'apprentissage de la manipulation d'autrui.
    Hacking
    [EN] Hack This Site
    Hack This Site est considéré comme un réel terrain d'entraînement légal pour le...
    Hacking

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!

    €



Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
chercher des sous-chaines dans une chaine et dans l'ordre
20-03-2014, 16h45
Message : #1
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
chercher des sous-chaines dans une chaine et dans l'ordre
bon dit comme ça c'est peut-être pas très parlant, j'ai :
- d'un coté la chaine STR = "titi toto coincoin bouzin gruik pouet toto bouzin gruik bouzin"
- de l'autre une liste/un tableau de mots ARRAY = "toto", "bouzin", "pouet"

je veux à chaque fois que dans STR on trouve un mot qui appartient à ARRAY effectuer une action, disons appeller la fonction FUNC(), le tout dans l'ordre de la chaine, c'est à dire à l'exécution ça doit donner un truc comme ça :

Code :
str = "titi toto coincoin bouzin gruik pouet toto bouzin gruik bouzin"
FUNC(toto)
FUNC(bouzin)
FUNC(pouet)
FUNC(toto)
FUNC(bouzin)
FUNC(bouzin)

si possible de manière élégante en Perl (parcequ'y a toujours moyen d'être élégant avec Perl), sinon au moins en pseudo-code

des idées ?
+1 (0) -1 (1) Répondre
20-03-2014, 16h53 (Modification du message : 20-03-2014, 16h54 par ark.)
Message : #2
ark Hors ligne
Psyckomodo!
*****



Messages : 1,033
Sujets : 48
Points: 317
Inscription : Sep 2011
RE: chercher des sous-chaines dans une chaine et dans l'ordre
Yop

En python, je ferrais un truc comme :
Code PYTHON :

str = "titi toto coincoin bouzin gruik pouet toto bouzin gruik bouzin"
arr = ["toto", "bouzin", "pouet"]

[func(x) for x in str.split() if x in arr]
 


Mais bon ça génère un tableau... x)
+1 (1) -1 (0) Répondre
20-03-2014, 17h04
Message : #3
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: chercher des sous-chaines dans une chaine et dans l'ordre
oui forcément en python ici y'a moyen de faire très simple Smile
mais pour le coup je le code en perl donc je peux pas astucer de la même façon qu'en python, je gère nettement moins le langage ;p
+1 (0) -1 (1) Répondre
20-03-2014, 17h09 (Modification du message : 20-03-2014, 17h13 par Junky.)
Message : #4
Junky Hors ligne
Snorky Master
*



Messages : 228
Sujets : 35
Points: 203
Inscription : Mar 2013
RE: chercher des sous-chaines dans une chaine et dans l'ordre
Un truc dans le genre:

Code PERL :

#!/usr/bin/perl
#

$gruik="toto titi plop";

@prout = split(/ /, $gruik);

foreach my $i (@prout) {
    print "FUNC($i)\n";
}

#########
Sortie
#########
FUNC(toto)
FUNC(titi)
FUNC(plop)

 


EDIT: hummm viens de m'appercevoir qu'il manque un truc... :/
Junky,
Pour la sécurité, sous linux, le principal soucis est l'interface chaise/clavier

+1 (0) -1 (0) Répondre
20-03-2014, 17h15 (Modification du message : 20-03-2014, 17h16 par fr0g.)
Message : #5
fr0g Hors ligne
NTEuNDI2MzcsLTEuNzc4NDg4
*****



Messages : 348
Sujets : 22
Points: 56
Inscription : Aug 2011
RE: chercher des sous-chaines dans une chaine et dans l'ordre
En python (en restant sur du code "générique" vu que les tricks/fonctions sont pas forcément les mêmes en perl :$)

Code PYTHON :

def func(word):
    print "THE WORD IS : "+word

tab = ["toto", "lol", "tata"]

string = "poazeriutotoazpoetrilolpoazerirtataporize"

i = 0
case = 0
s_len = len(string)
t_len = len(tab)
while (i < s_len and case < t_len):
    j = i
    while ((j - i) < len(tab[case])):
        if (string[j] == tab[case][(j - i)]):
            j += 1
        else:
            break
    if ((j - i) == len(tab[case])):
        func(tab[case])
        case += 1
    i += 1
 


output :
Code :
██ [ ~ ] [ 16:12:46 ]
██ python gruik.py
THE WORD IS : toto
THE WORD IS : lol
THE WORD IS : tata
+1 (1) -1 (0) Répondre
20-03-2014, 17h23
Message : #6
ark Hors ligne
Psyckomodo!
*****



Messages : 1,033
Sujets : 48
Points: 317
Inscription : Sep 2011
RE: chercher des sous-chaines dans une chaine et dans l'ordre
Snorky: Bah tu les prend pas dans l'ordre de la chaine la :p

en se basant sur ton code, je dirais un truc du genre:
Code PERL :

#!/usr/bin/perl
#

$str="titi toto coincoin bouzin gruik pouet toto bouzin gruik bouzin";
@arr=("toto", "bouzin", "pouet");

foreach my $i (split(/ /, $str)) {
    foreach my $j (@arr) {
    if ($i eq $j) {
        print "FUNC($i)\n";
    }
    }
}
 
+1 (2) -1 (0) Répondre
20-03-2014, 17h35
Message : #7
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: chercher des sous-chaines dans une chaine et dans l'ordre
ok autant pour moi, disons que la chaine c'est pas :
Code :
"titi toto coincoin bouzin gruik pouet toto bouzin gruik bouzin"
mais :
Code :
"titi toto coincoin bouzin gruik pouet totobouzingruik bouzin"

c'est plus proche de ce que je cherche ^^
+1 (0) -1 (1) Répondre
20-03-2014, 17h38
Message : #8
ark Hors ligne
Psyckomodo!
*****



Messages : 1,033
Sujets : 48
Points: 317
Inscription : Sep 2011
RE: chercher des sous-chaines dans une chaine et dans l'ordre
Apparement, avec ta nouvelle chaine, le code suivant fonctionne:

Code PERL :

#!/usr/bin/perl

$str="titi toto coincoin bouzin gruik pouet totobouzingruik bouzin";
@arr=("toto", "bouzin", "pouet");

foreach my $i (split(/ /, $str)) {
    foreach my $j (@arr) {
    print "FUNC($j)\n" if ($i =~ $j);
    }
}
 
+1 (0) -1 (0) Répondre
20-03-2014, 18h31
Message : #9
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: chercher des sous-chaines dans une chaine et dans l'ordre
l'implementation naïve en Perl donnerait ça :
Code PERL :
#!/usr/bin/perl
use strict;
use warnings;

my $str="titi toto coincoin bouzin gruik pouet bouzintotogruik bouzin";
my @arr=("toto", "bouzin", "pouet");

print $str."\n";
for (my $i = 0; $i < length($str); $i++) {
        foreach my $j (@arr) {
                if (index (substr($str, $i, length($str)), $j) eq 0) {
                        print "FUNC($j)\n";
                        next;
                }
        }
}

Code :
titi toto coincoin bouzin gruik pouet bouzintotogruik bouzin
FUNC(toto)
FUNC(bouzin)
FUNC(pouet)
FUNC(bouzin)
FUNC(toto)
FUNC(bouzin)

si quelqu'un a une implémentation plus propre/astucieuse/perleuse je prends !
+1 (1) -1 (1) Répondre
20-03-2014, 18h48
Message : #10
Booster2ooo Hors ligne
Contributeur
*****



Messages : 165
Sujets : 14
Points: 63
Inscription : Aug 2011
RE: chercher des sous-chaines dans une chaine et dans l'ordre
RegExp? Mais j'imagine que ça sera moins performant que la petite boucle
+1 (0) -1 (0) Répondre
20-03-2014, 18h50
Message : #11
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: chercher des sous-chaines dans une chaine et dans l'ordre
nop, sauf astuce utiliser les regex (via grep par exemple) ce sera pas une bonne idée ici, même pas tant pour la rapidité d'exécution mais ça risque d'être moins "précis"
+1 (0) -1 (1) Répondre
20-03-2014, 21h07
Message : #12
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: chercher des sous-chaines dans une chaine et dans l'ordre
je me doutais bien qu'il devait y avoir une solution qui troue le fion, et elle est d'un bon calibre :
Code PERL :
#!/usr/bin/perl
my $str="titi toto coincoin bouzin gruik pouet bouzintotogruik bouzin";
my @arr=("toto", "bouzin", "pouet");

print $str."\n";

sub FUNC { print "FUNC(".$_[0].")\n"; }
my $pattern = '('.join('|',@arr).')';
$str =~ s/$pattern/FUNC($1)/eg;

Code :
titi toto coincoin bouzin gruik pouet bouzintotogruik bouzin
FUNC(toto)
FUNC(bouzin)
FUNC(pouet)
FUNC(bouzin)
FUNC(toto)
FUNC(bouzin)

thx b0fh Wink
+1 (3) -1 (1) Répondre
21-03-2014, 13h19
Message : #13
Booster2ooo Hors ligne
Contributeur
*****



Messages : 165
Sujets : 14
Points: 63
Inscription : Aug 2011
RE: chercher des sous-chaines dans une chaine et dans l'ordre
sexy Smile
+1 (0) -1 (0) Répondre
21-03-2014, 14h02
Message : #14
b0fh Hors ligne
Membre actif
*



Messages : 210
Sujets : 17
Points: 309
Inscription : Jul 2012
RE: chercher des sous-chaines dans une chaine et dans l'ordre
Y'a un problème potentiellement de taille: @arr ne peut pas contenir de métacaractères de regex, sinon ça explose. Une petite modification pour que ça soit moins dangereux:

Code PERL :
my $pattern = '('.join('|',map(quotemeta,@arr)).')';
+1 (1) -1 (0) Répondre


Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  Tester les sous-domaines d'un site cacaphonie 5 376 29-12-2014, 04h23
Dernier message: GreenBlood
  [Bash] explorer son /home dans un pipemenu Openbox supersnail 2 218 28-10-2013, 17h08
Dernier message: thxer
  [Php] Chiffrement/Stéganographie de donnée sous la forme d'un array multi-dimension InstinctHack 12 793 09-08-2012, 10h45
Dernier message: InstinctHack
  [Php] Metre le contenu d'un include dans une string CyberSee 1 173 06-03-2012, 11h38
Dernier message: Quentin
  |Php] Enregistrer l'ip des visiteurs dans une base de données Drku 4 398 01-03-2012, 12h19
Dernier message: InstinctHack

Atteindre :


Utilisateur(s) parcourant ce sujet : 2 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut