LabtechConsulting
12/2/2016 - 4:46 AM

``````\$List = (Invoke-WebRequest 'https://gist.githubusercontent.com/LabtechConsulting/10dcec9713a56830b178d4bfec5a5b75/raw/bd57f1335350a6f76e3292a4a124a338e04ee529/new_gist_file_0').Content
\$List = (\$List -split ',').trim()
\$hash = @{}

function Find-HQ{
param(
[parameter(ValueFromPipeline=\$True)]
\$Instruction,
\$Dir
)
begin{
\$x = 0
\$y = 0
switch(\$Dir) {
'n'{ \$Dir = 0}
'e'{ \$Dir = 1}
's'{ \$Dir = 2}
'w'{ \$Dir = 3}
}
\$Found = 0
\$hash[[tuple]::Create(\$x,\$y)] = 1
}
process{
\$Steps = [convert]::ToInt32(\$Instruction.trim('LR'), 10)
\$Direction = \$Instruction.replace(\$Steps,'')
if(\$Direction -eq 'r'){\$Dir ++}
else{\$Dir --}
if(\$Dir -gt 3){\$Dir = 0}
if(\$Dir -lt 0){\$Dir = 3}
for (\$i=1; \$i -le \$Steps -and \$Found -ne 1; \$i++){
switch(\$Dir) {
1{ \$x += 1}
3{ \$x -= 1}
0{ \$y += 1}
2{ \$y -= 1}
}
\$hash[[tuple]::Create(\$x,\$y)] += 1
if(\$hash.ContainsValue(2)){
\$Found = 1
Write-Output "HQ at x:\$x y:\$y"
if(\$x -lt 0){\$x *= -1}
if(\$y -lt 0){\$y *= -1}
\$Total = \$x + \$y
Write-Output "Bunny is \$Total blocks away"
}
}
if(\$Found -eq 1){continue}
}
end{}
}

\$list | Find-HQ -Dir n``````