PowerShell v3 +, 171 बाइट्स
param([char[]]$x)$a,$b=$x;$a=,$a;while($b){$z,$b=$b;$a+=$a|%{0..($y=($c="$_").Length)|%{-join($c[0..$_]+$z+$c[++$_..$y])};"$z$c";"$c$z"}}$a|?{$_.length-eq$x.count}|sort -u
PowerShell v3 ने cmdlet -Uniqueपर ध्वज को पेश किया Sort-Object, इसलिए यह नीचे दिए गए v2 संस्करण से कुछ बाइट्स छोटा है, क्योंकि हमें Selectपहले इसकी आवश्यकता नहीं है ।
v2 संस्करण, 178 बाइट्स:
param([char[]]$x)$a,$b=$x;$a=,$a;while($b){$z,$b=$b;$a+=$a|%{0..($y=($c="$_").Length)|%{-join($c[0..$_]+$z+$c[++$_..$y])};"$z$c";"$c$z"}}$a|?{$_.length-eq$x.count}|select -u|sort
PowerShell के पास कोई भी अंतर्निहित परमिट नहीं है, इसलिए मैंने प्राइम फैक्टर के दोस्तों से अपना कोड उधार लिया और यहां उपयोग के लिए इसे थोड़ा ट्वीक किया।
यह अनिवार्य रूप से तीन भाग हैं, जिनका मैं नीचे विस्तार करूँगा।
param([char[]]$x)$a,$b=$x;$a=,$aइनपुट लेता है $x, इसे एक char-रे के रूप में रखता है, पहले अक्षर को $aऔर बाकी में स्ट्रिप्स करता है $b, और फिर $aअल्पविराम के साथ एक सरणी के रूप में पुन: बनाता है ।
while($b){$z,$b=$b;$a+=$a|%{0..($y=($c="$_").Length)|%{-join($c[0..$_]+$z+$c[++$_..$y])};"$z$c";"$c$z"}}शेष अक्षरों ( $b) के माध्यम से लूप्स , प्रत्येक पुनरावृति अगले अक्षर को ले जाता है और इसे स्टोर करता है $zऔर शेष को अंदर छोड़ता है $b, फिर अपने स्वयं के लूप के माध्यम $aसे भेजने के परिणाम पर सरणी-कंक्रीटिंग $a- $a( प्रत्येक आइटम अस्थायी रूप से संग्रहीत $c) पर लूप किया जाता है अपने स्वयं के .length, और फिर $zहर स्थिति में डाला जाता है, जिसमें शामिल है और साथ प्रस्तुत करना $z$cऔर $c$z। उदाहरण के लिए, इसके लिए, $c = '12'और $z = '3'इसके परिणामस्वरूप '132','312','123'वापस समवर्ती किया जाएगा $a।
अंतिम भाग $a|?{$_.length-eq$x.count}|select -u|sortप्रत्येक तत्व को लेता है $aऔर Where-Objectकेवल उन लोगों को फ़िल्टर करने के लिए क्लॉज का उपयोग करता है जिनकी इनपुट स्ट्रिंग के समान लंबाई है, फिर selectकेवल -uनिक आइटम हैं, और अंत में sortउन वर्णानुक्रम में हैं। परिणामी तार सभी पाइप लाइन पर छोड़ दिए जाते हैं, और निहितार्थ के माध्यम से आउटपुट Write-Outputप्रोग्राम पूरा होने पर होता है।
PS C:\Tools\Scripts\golfing> .\alphabetically-permute-a-string.ps1 'PPCG'
CGPP
CPGP
CPPG
GCPP
GPCP
GPPC
PCGP
PCPG
PGCP
PGPC
PPCG
PPGC
["buzz" "bzuz" "bzzu" "ubzz" "uzbz" "uzzb" "zbuz" "zbzu" "zubz" "zuzb" "zzbu" "zzub"]?