PowerShell/Docs/list-anagrams.md

118 lines
3.0 KiB
Markdown
Raw Normal View History

2022-11-17 20:05:34 +01:00
## The PowerShell Script: list-anagrams.ps1
2021-11-08 21:36:42 +01:00
2022-02-10 09:01:07 +01:00
This PowerShell script lists all anagrams of the given word.
2021-11-08 21:36:42 +01:00
## Parameters
```powershell
2021-12-09 16:19:09 +01:00
list-anagrams.ps1 [[-Word] <String>] [[-Columns] <Int32>] [<CommonParameters>]
2021-11-08 21:36:42 +01:00
-Word <String>
Specifies the word to use
Required? false
Position? 1
Default value
Accept pipeline input? false
Accept wildcard characters? false
-Columns <Int32>
Specifies the number of columns
Required? false
Position? 2
Default value 8
Accept pipeline input? false
Accept wildcard characters? false
[<CommonParameters>]
This script supports the common parameters: Verbose, Debug, ErrorAction, ErrorVariable, WarningAction,
WarningVariable, OutBuffer, PipelineVariable, and OutVariable.
```
## Example
```powershell
PS> ./list-anagrams Baby
```
## Notes
2022-11-17 19:46:02 +01:00
Author: Markus Fleschutz | License: CC0
2021-11-08 21:36:42 +01:00
## Related Links
https://github.com/fleschutz/PowerShell
2022-11-17 20:02:26 +01:00
## Source Code
2022-11-17 20:05:34 +01:00
```powershell
2022-11-17 20:02:26 +01:00
<#
.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
}
2022-11-17 20:05:34 +01:00
```
2022-11-17 20:02:26 +01:00
2021-11-08 21:36:42 +01:00
*Generated by convert-ps2md.ps1 using the comment-based help of list-anagrams.ps1*