Question

In: Computer Science

You must write each of the following scheme functions. You must use only basic scheme functions,...

You must write each of the following scheme functions. You must use only basic scheme functions, do not use third-party libraries to support any of your work. Do not use any function with side effects.

This problem need to use DrRacket software. Racket Language.

Write a function named (first-n L1 N) that returns the first N elements of L1. If N is negative, return the empty list. If N exceeds the length of L1 return all elements of L1.

(first-n '(a b c d e f) 3) ---> (a b c)
(first-n '(a b c d e f) -3) ---> ()
(first-n '(a b c d e f) 33) ---> (a b c d e f)
(first-n '() 0) ---> ()

Write a function named (forget-n L1 N) that returns the elements of L1 except for the first N. If N is negative, return all elements. If N exceeds the length of L1 return the empty list.

(forget-n '(a b c d e f) 3) ---> (d e f)
(forget-n '(a b c d e f) -3) ---> (a b c d e f)
(forget-n '(a b c d e f) 33) ---> ()
(forget-n '() 0) ---> ()

Solutions

Expert Solution

1)

Code:

#lang scheme

(define count 1) ;;Initialized count = 1 to keep track our traversal of list

(define (first-n L1 N) ;;MAIN_FUNCTION
(first L1 N count)) ;;calls sub-function Which returns first N-number of elements of list


(define (first L1 N count) ;;SUB_FUNCTION
(cond ((null? L1) L1) ;;if list is empty returns List
((< N 0) '()) ;;if (N < 0) RETURNS NULL LIST
((= N 0) '()) ;;if (N == 0) reurns NULL list
((= N 1) (car L1)) ;;if (N == 1) Returns 1st element
((= N count) (cons (car L1) '())) ;;if (N == count) returns list which contains elelemnt at index N

(else (cons (car L1) (first (cdr L1) N (+ 1 count)))))) ;;else construct list with first element and continue

Snapshot of Code and Output:

2)

CODE:

(define count 1) ;;Initialized count = 1 to keep track our traversal of list

(define (forget-n L1 N) ;;MAIN_FUNCTION
(forget L1 N count)) ;;calls sub-function Which returns elements of list except for the first N


(define (forget L1 N count) ;;SUB_FUNCTION
(cond ((null? L1) '()) ;;if list is empty returns NULL
((< N 0) L1) ;;if (N < 0) RETURNS ENTIRE LIST
((= N 0) L1) ;;if (N == 0) reurns enire list
((= N 1) (cdr L1)) ;;if (N == 1) Returns entire list except 1st element
((= N count) (cdr L1)) ;;if (N == count) returns rest of the list index starting from count + 1
(else (forget (cdr L1) N (+ 1 count))))) ;;else continue

Snapshot of Code and Output:


Related Solutions

You must write each of the following scheme functions. You must use only basic scheme functions...
You must write each of the following scheme functions. You must use only basic scheme functions do not use third-party libraries to support any of your work. Do not use any function with side effects. Write a function (merge-sorter L1) that takes list-of-integers L1 and returns all elements of L1 in sorted order. You must use a merge-sort technique that, in the recursive case, a) splits L1 into two approximately-equal-length lists, b) sorts those lists, and then c) merges the...
You must write each of the following scheme functions. You must use only basic scheme functions...
You must write each of the following scheme functions. You must use only basic scheme functions do not use third-party libraries to support any of your work. Do not use any function with side effects. This problem need to use DrRacket software. Racket Language. Write a function named (forget-n L1 N) that returns the elements of L1 except for the first N. If N is negative, return all elements. If N exceeds the length of L1 return the empty list....
You must write each of the following scheme functions. You must use only basic scheme functions...
You must write each of the following scheme functions. You must use only basic scheme functions do not use third-party libraries to support any of your work. Do not use any function with side effects. This problem needs to use DrRacket software. Racket Language. Write a function (indices L1 X) that takes a list of elements L1 and an element X. The function returns a list of the indices in L1 that contain X. See the following examples for clarification....
You must write each of the following scheme functions. You must use only basic scheme functions...
You must write each of the following scheme functions. You must use only basic scheme functions do not use third-party libraries to support any of your work. Do not use any function with side effects. This problem need to use DrRacket software. Racket Language. Write a function (join-together L1 L2) that takes a sorted list (ascending) of integers L1 and a sorted list of elements L2 and returns a sorted list containing all elements of both L1 and L2. See...
You must write each of the following scheme functions. You must use only basic scheme functions...
You must write each of the following scheme functions. You must use only basic scheme functions do not use third-party libraries to support any of your work. Do not use any function with side effects. Write a function (indices L1 X) that takes a list of elements L1 and an element X. The function returns a list of the indices in L1 that contain X. See the following examples for clarificaton. (indices '(a b c a e f a) 'a')...
You must write each of the following scheme functions. You must use only basic scheme functions...
You must write each of the following scheme functions. You must use only basic scheme functions do not use third-party libraries to support any of your work. Do not use any function with side effects. Write a function named (list-replace ALIST SYM VAL) that accepts a list of elements and returns that list where all SYM's (a single symbol) have been replaced by the VAL (some scheme value). The replacement must occur even within nested lists. For example: (list-replace '(a...
Implement each of the following functions and write a basic main() function that tests each. For...
Implement each of the following functions and write a basic main() function that tests each. For convenience, you should be able to find this starter class under Mimir's assignment 4 starter code. Do not change the name, parameters, or returns of any of these functions or of the name of the class itself. There is also no need in this assignment for any global variables. You are strongly encouraged to use your solution for some of these functions in others...
You can only use built in Lisp functions and you cannot use setq function. Write a...
You can only use built in Lisp functions and you cannot use setq function. Write a function in Lisp called f1 that counts the number of lists in a list. Example: (f1 ‘(a (a b (b c)) c d (e))) returns 2
Scheme Programming - Racket R5RS Longest Non-Decreasing Subsequence You will write two Scheme functions that compute...
Scheme Programming - Racket R5RS Longest Non-Decreasing Subsequence You will write two Scheme functions that compute a longest non-decreasing subsequence from a list of numbers. For example, if you type > (lis '(1 2 3 2 4 1 2)) you might get (1 2 3 4) Note that there may be more than one longest non-decreasing subsequence. In the above example, your program might also find (1 2 2 4) or (1 2 2 2). You should concentrate first on...
Assignment Write each of the following functions. The function header must be implemented exactly as specified....
Assignment Write each of the following functions. The function header must be implemented exactly as specified. Write a main function that tests each of your functions. Specifics In the main function ask for a filename and fill a list with the values from the file. Each file should have one numeric value per line. This has been done numerous times in class. You can create the data file using a text editor or the example given in class – do...
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT