## The PowerShell Script: list-anagrams.ps1 This PowerShell script lists all anagrams of the given word. ## Parameters ```powershell 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 ## Source Code ```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 using the comment-based help of list-anagrams.ps1*