The *list-anagrams.ps1* Script =========================== This PowerShell script lists all anagrams of the given word. Parameters ---------- ```powershell /home/markus/Repos/PowerShell/scripts/list-anagrams.ps1 [[-Word] ] [[-Columns] ] [] -Word Specifies the word to use Required? false Position? 1 Default value Accept pipeline input? false Accept wildcard characters? false -Columns Specifies the number of columns Required? false Position? 2 Default value 8 Accept pipeline input? false Accept wildcard characters? false [] This script supports the common parameters: Verbose, Debug, ErrorAction, ErrorVariable, WarningAction, WarningVariable, OutBuffer, PipelineVariable, and OutVariable. ``` Example ------- ```powershell PS> ./list-anagrams Baby ``` Notes ----- Author: Markus Fleschutz | License: CC0 Related Links ------------- https://github.com/fleschutz/PowerShell Script Content -------------- ```powershell <# .SYNOPSIS Lists all anagrams of the given word .DESCRIPTION This PowerShell script lists all anagrams of the given word. .PARAMETER Word Specifies the word to use .PARAMETER Columns Specifies the number of columns .EXAMPLE PS> ./list-anagrams Baby .LINK https://github.com/fleschutz/PowerShell .NOTES Author: Markus Fleschutz | License: CC0 #> param([string]$Word = "", [int]$Columns = 8) function GetPermutations { [cmdletbinding()] Param( [parameter(ValueFromPipeline=$True)] [string]$String = 'the' ) Begin { Function NewAnagram { Param([int]$NewSize) if ($NewSize -eq 1) { return } for ($i=0;$i -lt $NewSize; $i++) { NewAnagram -NewSize ($NewSize - 1) if ($NewSize -eq 2) { New-Object PSObject -Property @{ Permutation = $stringBuilder.ToString() } } MoveLeft -NewSize $NewSize } } Function MoveLeft { Param([int]$NewSize) $z = 0 $position = ($Size - $NewSize) [char]$temp = $stringBuilder[$position] for ($z=($position+1);$z -lt $Size; $z++) { $stringBuilder[($z-1)] = $stringBuilder[$z] } $stringBuilder[($z-1)] = $temp } } Process { $size = $String.length $stringBuilder = New-Object System.Text.StringBuilder -ArgumentList $String NewAnagram -NewSize $Size } End {} } try { if ($Word -eq "" ) { $Word = read-host "Enter word" $Columns = read-host "Enter number of columns" } GetPermutations -String $Word | Format-Wide -Column $Columns exit 0 # success } catch { "⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])" exit 1 } ``` *(generated by convert-ps2md.ps1 as of 11/08/2024 12:40:17)*