#1 Le 10/06/2012, à 00:21
- gadgetroch
Permutation de chaînes de caracteres
Bonjour
En fait je cherche une commande permettant la permutation de chaines de caracteres.
Exemple :
@%%%%
%@%%%
%%@%%
%%%@%
%%%%@
ou encore :
@@%%%
@%%%@
%%%@@
etc...
Existe-il une commande ou une suite de commande permettant de faire cela facilement ?
Merci
Hors ligne
#2 Le 10/06/2012, à 03:51
- nesthib
Re : Permutation de chaînes de caracteres
Il y a des dizaines de façons d'effectuer cette opération.
Voici un exemple simple en bash pur.
pour une permutation vers la gauche :
VAR='12345'
for ((i=1;i<=${#VAR};i++))
do
VAR=${VAR:1}${VAR:0:1}
echo ${VAR}
done
pour une permutation vers la droite :
VAR='12345'
for ((i=1;i<=${#VAR};i++))
do
VAR=${VAR: -1:1}${VAR:0:-1}
echo ${VAR}
done
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#3 Le 10/06/2012, à 05:21
- pingouinux
Re : Permutation de chaînes de caracteres
Bonjour,
En python, il y a la fonction permutations, du module itertools, qui fait ça :
$ cat permutations.py
#! /usr/bin/python
# -*- coding: utf-8 -*-
import sys
from itertools import permutations
def print_iterateur(it) :
while True :
try : print(''.join(next(it)))
except StopIteration : break
it=permutations(sys.argv[1])
print_iterateur(it)
$ ./permutations.py 456
456
465
546
564
645
654
Hors ligne
#4 Le 10/06/2012, à 05:45
- nesthib
Re : Permutation de chaînes de caracteres
@pingouinux : j'avais compris la demande de gadgetroch comme étant une permutation de caractères dans le sens d'une rotation de la chaîne, mais c'est vrai qu'on peut aussi le prendre du point de vue de dénombrement.
Le résultat est cependant totalement différent.
Les exemples de gadgetroch sont un peu ambigus mais je dois dire que je les ai compris dans le sens d'une rotation de la chaîne de caractères, auquel cas ta solution ne correspondrait pas. À l'inverse, d'un point de vue dénombrement par permutation ma solution ne donnerait pas tous les composants.
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#5 Le 10/06/2012, à 05:55
- gadgetroch
Re : Permutation de chaînes de caracteres
Et si je souhaite une repetition sans double ?
Exemple : (et si je peux avoir du concret pour celui ci s'il vous plait)
@@%%%
@%@%%
@%%@%
@%%%@
etc...
Y a t il un moyen ? De preference en commande linux, sinon autrement
Hors ligne
#6 Le 10/06/2012, à 06:01
- pingouinux
Re : Permutation de chaînes de caracteres
@nesthib :
Je suis d'accord avec toi, la demande est ambiguë, et nos solutions respectives ne répondent pas à la même question.
On peut aussi envisager d'utiliser plusieurs fois le même caractère, comme dans la seconde série de gadgetroch. À lui de nous préciser sa demande.
Hors ligne
#7 Le 10/06/2012, à 06:04
- pingouinux
Re : Permutation de chaînes de caracteres
$ ./permutations.py @@%%% | sort -u
@@%%%
@%@%%
@%%@%
@%%%@
%@@%%
%@%@%
%@%%@
%%@@%
%%@%@
%%%@@
Hors ligne
#8 Le 10/06/2012, à 06:19
- nesthib
Re : Permutation de chaînes de caracteres
@gadgetroch : au vu de ton second message, la demande est effectivement ambiguë. Pour une séquence '123' veux tu :
une rotation de la chaîne de caractère
123
231
312
ou une permutation au sens mathématique du terme :
123
132
213
231
312
321
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#9 Le 10/06/2012, à 08:19
- gadgetroch
Re : Permutation de chaînes de caracteres
Une permutation
Hors ligne
#10 Le 10/06/2012, à 17:28
- nesthib
Re : Permutation de chaînes de caracteres
Donc la solution de pingouinux.
Sinon une question de curiosité, pourquoi cherches-tu à faire ça ?
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#11 Le 11/06/2012, à 09:30
- gadgetroch
Re : Permutation de chaînes de caracteres
J'essai de m'améliorer en linux c'est pour ça, la j'ai fait des recherche sur le grep ( voir un autre post ) je me suis aussi amusé avec le sed pour essayer d'ajouter des lignes dans un fichier mais pour les permut j'avais vraiment du mal
Hors ligne
#12 Le 11/06/2012, à 13:15
- nesthib
Re : Permutation de chaînes de caracteres
OK. C'est tout à ton honneur de vouloir t'améliorer !
Je ne sais pas quels sont tes objectifs mais il y a deux composantes à ce que tu appelles (un peu abusivement) « s'améliorer en *linux* », apprendre à se servir de la ligne de commande et des outils existants, et apprendre à créer des choses un peu plus évoluées (scripts, petits programmes).
Bon courage
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#13 Le 11/06/2012, à 15:37
- gadgetroch
Re : Permutation de chaînes de caracteres
J'ai déjà créer des scripts ^^
Hors ligne