all tasks
This commit is contained in:
parent
b83f433714
commit
68f8f3e56b
14735 changed files with 178959 additions and 0 deletions
51
Task/Y-combinator/PowerShell/y-combinator.psh
Normal file
51
Task/Y-combinator/PowerShell/y-combinator.psh
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
$fac = {
|
||||
param([ScriptBlock] $f)
|
||||
invoke-expression @"
|
||||
{
|
||||
param([int] `$n)
|
||||
if (`$n -le 0) {1}
|
||||
else {`$n * {$f}.InvokeReturnAsIs(`$n - 1)}
|
||||
}
|
||||
"@
|
||||
}
|
||||
|
||||
$fib = {
|
||||
param([ScriptBlock] $f)
|
||||
invoke-expression @"
|
||||
{
|
||||
param([int] `$n)
|
||||
switch (`$n)
|
||||
{
|
||||
0 {1}
|
||||
1 {1}
|
||||
default {{$f}.InvokeReturnAsIs(`$n-1)+{$f}.InvokeReturnAsIs(`$n-2)}
|
||||
}
|
||||
}
|
||||
"@
|
||||
}
|
||||
|
||||
$Z = {
|
||||
param([ScriptBlock] $f)
|
||||
invoke-expression @"
|
||||
{
|
||||
param([ScriptBlock] `$x)
|
||||
{$f}.InvokeReturnAsIs(`$(invoke-expression @`"
|
||||
{
|
||||
param(```$y)
|
||||
{`$x}.InvokeReturnAsIs({`$x}).InvokeReturnAsIs(```$y)
|
||||
}
|
||||
`"@))
|
||||
}.InvokeReturnAsIs({
|
||||
param([ScriptBlock] `$x)
|
||||
{$f}.InvokeReturnAsIs(`$(invoke-expression @`"
|
||||
{
|
||||
param(```$y)
|
||||
{`$x}.InvokeReturnAsIs({`$x}).InvokeReturnAsIs(```$y)
|
||||
}
|
||||
`"@))
|
||||
})
|
||||
"@
|
||||
}
|
||||
|
||||
$Z.InvokeReturnAsIs($fac).InvokeReturnAsIs(5)
|
||||
$Z.InvokeReturnAsIs($fib).InvokeReturnAsIs(5)
|
||||
Loading…
Add table
Add a link
Reference in a new issue