diff options
author | Braxton Hall | 2022-10-24 03:39:32 +0000 |
---|---|---|
committer | GitHub | 2022-10-24 03:39:32 +0000 |
commit | 9d4f90f35e10269e64b7329460cef728bf0cd7d9 (patch) | |
tree | 6c872e6969224ac4189ef9ce17b0c965d6006331 /entries/perryliao/fib.groovy | |
parent | 40317f6d4228ad435c699d17a9b4545041c0f3ee (diff) | |
parent | 5a918f5a59e0e3b3af1ef75b5251b9f7ae7a15e8 (diff) |
Merge pull request #14 from perryliao/main
lemme see your groovy
Diffstat (limited to 'entries/perryliao/fib.groovy')
-rw-r--r-- | entries/perryliao/fib.groovy | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/entries/perryliao/fib.groovy b/entries/perryliao/fib.groovy new file mode 100644 index 0000000..af1c4df --- /dev/null +++ b/entries/perryliao/fib.groovy @@ -0,0 +1,48 @@ +pipeline { + agent any + + parameters { + string defaultValue: '2', description: 'Number to compute in the Fibonacci Sequence', name: 'num', trim: true + } + + stages { + stage('Create Cache') { + steps { + script { + if (!fileExists("fibbonacciCache")) { + sh 'echo "0\n1" > fibbonacciCache' + } + } + } + } + stage('Validate Parameter') { + steps { + script { + assert params.num.isInteger() + } + } + } + stage('Get Fibbonacci') { + steps { + script { + result = fib(params.num.toInteger()) + println("The result is F(${params.num}) = ${result}") + } + } + } + } +} + +int fib(int n, cache = 'fibbonacciCache') { + nComputed = sh(returnStdout: true, script: "wc -l < ${cache}").trim().toInteger() + if (n >= nComputed) { + // Need to do more recursion + result = fib(n - 2, cache) + fib(n - 1, cache) + sh "echo '${result}' >> ${cache}" + return result + } else { + // Already have what we need, so read from cache + return sh(returnStdout: true, script: "sed -n '${n + 1}p' ${cache}").trim().toInteger() + } +} + |