28-03-2014, 11:33
|
|
מנהל משבראש, בלשנות, תכנות ויהדות
|
|
חבר מתאריך: 04.06.06
הודעות: 33,130
|
|
|
אתה יכול משהו כזה (בפסאודו־קוד):פרמוטציה ( התחלה, סוף ):
←אם התחלה ריק:
←←הוסף את סוף למערך הדו־ממדי כאובייקט חדש.
←עבור כל x בהתחלה:
←←בצע פרמוטציה (התחלה פחות x, סוף ועוד x)
הקריאה היא כאשר "התחלה" הוא המערך הנתון, ו"סוף" ריק.
דוגמא בפייתון (השתמשתי במחרוזת לשם נוחות):
קוד PHP:
>>> permutation_list = []
>>> def permute( start, end ):
if not start:
permutation_list.append( end )
for i, x in enumerate( start ):
permute( start[:i] + start[i+1:], end + x )
>>> permute( "abc", "" )
>>> permutation_list
['abc', 'acb', 'bac', 'bca', 'cab', 'cba']
|