PowerShell v3 +, 171 bayt
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, -Uniquebayrağı cmdlet'te tanıttı Sort-Object, bu yüzden Selectilk v2 sürümünden birkaç bayt daha kısa, çünkü ilk önce gerekmiyor .
v2 sürümü, 178 bayt:
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'de yerleşik izinler yok, bu yüzden kodumu Prime Factors Buddies'ten ödünç aldım ve burada kullanmak için hafifçe çimdikledim.
Bu, temelde aşağıda genişleyeceğim üç bölümdür.
param([char[]]$x)$a,$b=$x;$a=,$aGirdiyi alır $x, bir chardizi olarak atar , ilk harfi çıkarır $ave geri kalanını çıkarır $bve sonra $avirgül operatörüyle birlikte bir dizi olarak okunur .
while($b){$z,$b=$b;$a+=$a|%{0..($y=($c="$_").Length)|%{-join($c[0..$_]+$z+$c[++$_..$y])};"$z$c";"$c$z"}}Kalan harflerin ( $b) ilmekleri, her bir sonraki mektubu alan ve $zkalanları içine alan ve kalanları bırakan her bir yineleme $b, sonradan kendi döngüsünden $agönderme sonucu üzerine birleştirme yapar $a- $a(geçici olarak depolanan $c) öğelerinin her biri üzerinden çevrilir. kendi .lengthsonra ve $zprepending ile ekleme dahil her pozisyonda, içine yerleştirilir $z$cve $c$z. Örneğin, $c = '12've için $z = '3'bu, '132','312','123'yeniden bir araya getirilmesine neden olacaktır $a.
Son bölüm $a|?{$_.length-eq$x.count}|select -u|sort, her öğeyi alır $ave Where-Objectyalnızca girdi dizesiyle aynı uzunluğa sahip olanları filtrelemek için yan tümce öğelerini kullanır , ardından selectyalnızca -unique öğelerini ve son olarak da sortalfabetik olarak öğelerini siler . Sonuçta ortaya çıkan dizgilerin tümü boru hattında bırakılır ve örtülü yoluyla çıktı Write-Outputprogram tamamlandığında gerçekleşir.
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"]mi?