From 8b322974ecb5af69be28009093b52770cddbeec0 Mon Sep 17 00:00:00 2001 From: MSilva95 Date: Thu, 12 Mar 2020 17:30:13 +0000 Subject: [PATCH] foldint subject --- subjects/foldint.en.md | 64 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 subjects/foldint.en.md diff --git a/subjects/foldint.en.md b/subjects/foldint.en.md new file mode 100644 index 00000000..58266875 --- /dev/null +++ b/subjects/foldint.en.md @@ -0,0 +1,64 @@ +## foldint + +## **WARNING! VERY IMPORTANT!** + +For this exercise a function will be tested **with the exam own main**. However the student **still needs** to submit a structured program: + +This means that: + +- The package needs to be named `package main`. +- The submitted code needs one declared function main(```func main()```) even if empty. +- The function main declared needs to **also pass** the `Restrictions Checker\`(illegal functions tester). It is advised for the student to just empty the function main after its own testings are done. +- Every other rules are obviously the same than for a `program`. + +### Instructions + +Write a function called `FoldInt` that simulates the behavior of reduce from JavaScript. + +The function should have as parameters a function, `f func(int, int) int` a slice of integers, `slice []int` and an int `acc int`. You should apply for each element of the slice the arithmetic function, saving and printing it. The function will be tested with our own functions `Add, Sub, and Mul`. + +### Expected function + +```go +func FoldInt(f func(int, int) int, slice []int, acc int) { + +} +``` + +### Usage + +Here is a possible program to test your function: + +```go +package main + +func main() { + table := []int{1, 2, 3} + ac := 93 + FoldInt(Add, table, ac) + FoldInt(Mul, table, ac) + FoldInt(Sub, table, ac) + fmt.Println() + + table = []int{0} + FoldInt(Add, table, ac) + FoldInt(Mul, table, ac) + FoldInt(Sub, table, ac) +} + +``` + +And its output : + +```console +student@ubuntu:~/[[ROOT]]/test$ go build +student@ubuntu:~/[[ROOT]]/test$ ./test +99 +558 +87 + +93 +0 +93 +student@ubuntu:~/[[ROOT]]/test$ +```