Script: *list-anagrams.ps1* ======================== This PowerShell script lists all anagrams of the given word. Parameters ---------- ```powershell PS> ./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 using the comment-based help of list-anagrams.ps1 as of 08/15/2024 09:50:48)*