For the final exercise, we are going to create a 2D Array tester. We want our tester to be versatile, so the class has been designed to take any 2D Object. Polymorphism will allow us to pass any Object type in and do a comparision using that object’s .equal method.

This can get a little tricky, so you are given a bit of the structure to help make this happen. You are also given a complete tester code that will compare 4 different arrays for you. The first two should be the same and return true, the second two are different and should return false.

Your task is to complete the equals method. Two arrays are equal if all the elements are the same. As you develop your logic, be sure to consider the case when two arrays may be different sizes.

public class TwoDTester {

public static void main(String[] args) {

Integer[][] firstArray = {{2,3}, {3,4}, {4,5}};

Integer[][] secondArray = {{2,3}, {3,4}, {4,5}};

TwoDArray first = new TwoDArray(firstArray);

System.out.println(first.equals(secondArray));

String[][] thirdArray = {{"Hello", "Goodbye"},

{"Hola", "Adios"},

{"Bonjour", "Au revoir"}};

String[][] fourthArray = {{"Hello", "Goodbye"},

{"Ciao", "Addio"},

{"Bonjour", "Au revoir"}};

TwoDArray third = new TwoDArray(thirdArray);

System.out.println(third.equals(fourthArray));

}

}

public class TwoDArray {

private Object[][] myArray;

public TwoDArray(Object[][] input){

myArray = input;

}

public boolean equals(Object[][] other){

// Add your code here

}

}

Answers

Answer 1

Polymorphism will allow us to pass in any type of object and do a comparison using that object's equal method.

We will see how to create 2 dimensions with the help of an example. Before that let's see, we have two index values for a 2d array. we can iterate to compare, but the time complexity is too high, so we can change the way of thinking. We can add each row, column, and diagonal. The need for two-dimensional arrays. Using 2d arrays, you can store so much data at a time, that it can be passed to any number of functions when needed. For the final exercise, we are going to create a 2D matrix tester. We want our tester to be versatile, polymorphism will allow us to pass in any type of object and do a comparison using that object's .equal method. This can be a bit tricky.

To learn more about Polymorphism please click on below link:

https://brainly.com/question/29241000

#SPJ4


Related Questions

Exercise 8.2.1: Identifying properties of relations.
For each relation, indicate whether the relation is:
reflexive, anti-reflexive, or neither
symmetric, anti-symmetric, or neither
transitive or not transitive
Justify your answer.
(f) The domain for relation R is the set of all real numbers. xRy if x - y is rational. A real number r is rational if there are two integers a and b, such that b ≠ 0 and r = a/b. You can use the fact that the sum of two rational numbers is also rational.
(g) The domain for the relation is Z×Z. (a, b) is related to (c, d) if a ≤ c and b ≤ d.
(h) The domain for the relation is Z×Z. (a, b) is related to (c, d) if a ≤ c or b ≤ d (inclusive or).
(i) The domain for relation T is the set of real numbers. xTy if x + y = 0.

Answers

(f) The relation R is neither reflexive nor anti-reflexive because xRx is false for all real numbers x. The relation R is not symmetric since if x - y is rational, then y - x is the negative of x - y, which is also rational, and hence not necessarily equal to x - y.

The relation R is not anti-symmetric either, since there exist pairs of distinct real numbers, such as (1, 2) and (2, 1), such that both (1, 2)R(2, 1) and (2, 1)R(1, 2). The relation R is transitive because if x - y and y - z are both rational, then their sum (x - y) + (y - z) = x - z is also rational.

(g) The relation is reflexive since (a, b) ≤ (a, b) for all pairs (a, b) in Z×Z. The relation is anti-symmetric because if (a, b) ≤ (c, d) and (c, d) ≤ (a, b), then a ≤ c and c ≤ a, which implies a = c, and likewise b = d. Therefore, (a, b) = (c, d). The relation is transitive because if (a, b) ≤ (c, d) and (c, d) ≤ (e, f), then a ≤ c ≤ e and b ≤ d ≤ f, which implies (a, b) ≤ (e, f).

(h) The relation is neither reflexive nor anti-reflexive since (a, b) is not related to itself in general, but it may be related to itself if a ≤ b. The relation is not symmetric because if (a, b) is related to (c, d), then either a ≤ c or b ≤ d, but it is not necessary that either c ≤ a or d ≤ b. The relation is transitive because if (a, b) is related to (c, d) and (c, d) is related to (e, f), then either a ≤ c or b ≤ d, and either c ≤ e or d ≤ f, which implies either a ≤ e or b ≤ f, and hence (a, b) is related to (e, f).

Learn more about reflexive here:

https://brainly.com/question/29119461

#SPJ11

someone makes a claim that "parameters are always passed by value in java". provide arguments for and against this statement (i.e., provide statements to support and statements against it).

Answers

In Java, the passing of parameters is always done by value.

What happens when a method is called?

When a method is called in Java, it generates a replicated version of the parameter's value which is subsequently transferred to the method. Any adjustments that are made to the parameter within the method have no impact on the initial value outside the method.

In Java, the method invocation generally operates on a "call by value" principle where the argument's value, irrespective of its type (primitive or reference), is transmitted to the method.

When dealing with reference types or objects, the value that is passed represents the reference to the object rather than the object itself. Modifications to the state of the object in the method are noticeable beyond the method's scope.

The object being referred to can still be changed internally even though it is passed by value as a reference.

To put it simply, although the assertion is generally accurate, it is vital to take into account the conduct of reference types when utilizing Java's "call by value" methodology.


Read more about java here:

https://brainly.com/question/26789430

#SPJ1

which icon / tool allows you to edit a report toolbar in epic so that it retains your preferences epic

Answers

  In Epic, the tool or icon that allows you to edit a report toolbar and retain your preferences is called "Personalize Toolbar." This feature enables users to customize the toolbar by adding or removing buttons and rearranging them according to their preferences.

  The "Personalize Toolbar" option provides a way to tailor the report toolbar to meet individual needs and streamline workflows. By clicking on this tool or icon, users can access a menu that allows them to modify the toolbar layout. They can add commonly used buttons for quick access, remove buttons that are not frequently used, and rearrange the buttons in a way that makes the most sense for their workflow. This customization ensures that the toolbar reflects the user's preferences, making it easier and more efficient to navigate and utilize the Epic reporting functionalities.

Learn more about Toolbar here: brainly.com/question/31553300

#SPJ11

A computer using which of the following would be considered a legacy device? (Choose all that apply.)
A. A 386 processor
B. The IPX/SPX protocol
C. An application developed in 1983
D. Only 1GB RAM

Answers

A computer using the following options would be considered a legacy device: A. A 386 processor, B. The IPX/SPX protocol, and C. An application developed in 1983.

A legacy device refers to outdated or obsolete technology that is no longer widely used or supported. In the given options, several characteristics indicate legacy devices.

First, a computer using a 386 processor (option A) would be considered a legacy device. The 386 processor is an early generation of processors that was commonly used in the late 1980s and early 1990s. It is significantly outdated compared to modern processors.

Second, the IPX/SPX protocol (option B) is a network protocol primarily used in older versions of Novell NetWare, which is no longer widely used in modern networking environments. Its usage has been largely replaced by TCP/IP, which is the dominant protocol today.

Third, an application developed in 1983 (option C) is likely to be considered a legacy application. It was developed several decades ago and may not be compatible with modern operating systems or hardware.

On the other hand, the option D, only 1GB RAM, does not necessarily indicate a legacy device as 1GB RAM is still commonly used in many devices today

Learn more about legacy device here:

https://brainly.com/question/29468465

#SPJ11

What is the equivalent assembly code for this line of C code? *p = 45; O movq (%rax), $45 movq $45, %rax movq $45, (%rax) movq %rbx, (%rax)

Answers

The equivalent assembly code for the C code *p = 45; depends on the type of pointer p. If p is a pointer to a character, then the equivalent assembly code would be movb $45, (%rax).

If p is a pointer to an integer, then the equivalent assembly code would be movl $45, (%rax) or movq $45, (%rax) depending on the architecture. If p is a pointer to a long integer, then the equivalent assembly code would be movq $45, (%rax). The option movq (%rax), $45 is not valid since it would be trying to move a value into a memory address instead of the other way around. The option movq %rbx, (%rax) would move the value of the register %rbx into the memory address pointed to by p, but it would not set the value to 45 as requested in the C code.

To know more about C code visit:

https://brainly.com/question/15301012

#SPJ11

when a process requests pages, linux loads them into memory. when the kernel needs the memory space, the pages are released using a most recently used (mru) algorithm. T/F

Answers

The statement is false. When a process requests pages in Linux, they are loaded into memory. However, when the kernel needs memory space, the pages are released using a least recently used (LRU) algorithm, not a most recently used (MRU) algorithm.

In Linux, when a process requests pages, the operating system loads those pages into memory from secondary storage (such as a hard disk) to provide faster access for the process. This is known as demand paging. The pages are brought into memory based on the process's memory needs and the availability of physical memory. When the kernel needs memory space for other processes or system operations, it uses a page replacement algorithm to determine which pages should be evicted from memory. The most commonly used algorithm is the least recently used (LRU) algorithm. The LRU algorithm identifies the pages that have been least recently accessed or modified and selects them for removal from memory.

The LRU algorithm ensures that the pages that have not been accessed or modified for a long time are evicted, allowing the most frequently used and important pages to remain in memory. This helps optimize memory usage and improve overall system performance. Therefore, the statement that pages are released using a most recently used (MRU) algorithm in Linux is false. The correct algorithm used for page replacement is the least recently used (LRU) algorithm.

Learn more about memory here: https://brainly.com/question/30925743

#SPJ11

state_diagram : process(clk, reset) begin if reset = '1' then y <= '0'; elsif rising_edge(clk) then

Answers

Using a state diagram, we can represent a process that is regulated by two inputs - "clk" and "reset. "

What is the step to take using conditional statements and commands?

If the "reset" signal is activated with a value of '1', the outcome or "y" is instantly changed to '0'. However, in case a trigger is observed on the "clk" input that indicates an increase, the procedure advances to the subsequent phase.

The image offers a broad perspective of how the process operates and reacts to the inputs.

Look below to see an example of a state diagram

Read more about state diagram here:

https://brainly.com/question/31987751

#SPJ4

instructions from your teacher: switch the last element in an array with the first and return the array. example: do_switch([1,2,3,4]) returns:[[4,2,3,1] do_switch([7,2,3,5]) returns:[5,2,3,7]

Answers

To write a function called do_switch that takes in an array as an argument, switches the last element with the first element, and then returns the modified array.

Access the first element in the array using index notation arr[0] and store it in a variable called first element. Access the last element in the array using index notation arr[-1] (negative index indicates counting from the end of the array) and store it in a variable called last element. Assign the value of last_element to the first element in the array arr[0].  Assign the value of first_element to the last element in the array arr[-1]. Return the modified array using the return keyword.

Here's the code for the do_switch function:
```
def do_switch(arr):
   first_element = arr[0]
   last_element = arr[-1]
   arr[0] = last_element
   arr[-1] = first_element
   return arr
```

To know more about array visit:-

https://brainly.com/question/31605219

#SPJ11

Consider the following two methods, which appear within a single class public static void changeIt (int] arr, int val, string word) arr = new int [5]; val = 0; word word. substring ( 0 , 5 ) ; for (int k = 0; k < arr. length; k++) arr[k]0: public static void start) int I] nums (1, 2, 3, 4. 5) int value = 6; String name "bláckboard"; changeIt (nums, value, name); for (int k 0; k < nums.1ength: k++) System.out.print (nums [k] + System.out.print (value *)i System.out.print (name) What is printed as a result of the call start) ? (A) 0 0 0 0 0 0 black (BD0 00 0 0 6 blackboard (C) 1 2 3 4 5 6 black (D) 1 2 3 4 5 0 black (E) 1 2 3 4 5 6 blackboard

Answers

The method start() initializes an integer array called nums with values 1, 2, 3, 4, and 5, and sets an integer variable called value to 6, as well as a string variable called name to "blackboard". Then it calls the method changeIt() with arguments nums, value, and name.

The method changeIt() takes in three arguments: an integer array called arr, an integer value called val, and a string called word. Inside the method, arr is assigned a new array of size 5, val is set to 0, and word is modified to only include the first 5 characters of the original string. Then, a for loop is used to iterate through arr, and each element is set to 0.After the method changeIt() is called in start(), the for loop in start() is used to iterate through the nums array and print out each element, followed by the value variable multiplied by the current index i, and then the string variable name. Therefore, the output of the call start() would be "1 0 blackboard 2 0 blackboard 3 0 blackboard 4 0 blackboard 5 0 blackboard". This is because the changeIt() method creates a new array for arr and assigns all its values to 0, and also sets the value variable to 0. However, the original nums array is not modified by the changeIt() method, and so the original values 1, 2, 3, 4, and 5 are printed out by the for loop in start(). The value variable, which was set to 6 initially, is never used after the call to changeIt(), and so its value is not printed out. Finally, the name variable, which was set to "blackboard", remains unchanged by the changeIt() method, and so "blackboard" is printed out after each element in the nums array.

For such more question on integer

https://brainly.com/question/929808

#SPJ11

The output of the code will be:

Copy code

0 0 0 0 0

6

blackboard

Here's why:

When the changeIt method is called with arguments nums, value, and name, the arr parameter of changeIt is assigned a new array of length 5. This new array is completely unrelated to the nums array in the start method, so changing its contents will not affect nums.

The val parameter of changeIt is assigned the value 0, but this assignment has no effect outside of the changeIt method because val is a primitive type passed by value.

The word parameter of changeIt is assigned the substring of name from index 0 to index 5. This means word is assigned the value "black".

Inside the changeIt method, the for loop sets every element of arr to 0, so when nums is printed in the start method, all its elements are 0.

The value variable in the start method is not changed by the changeIt method because val is passed by value.

The name variable in the start method is not changed by the changeIt method because word is a separate variable that is assigned a substring of name.

Finally, the for loop in the start method prints the contents of nums (which are all 0), then prints the value of value (which is 6), and finally prints the value of name (which is "blackboard").

Learn more about output here:

https://brainly.com/question/13736104

#SPJ11

the clock on most computers is continually updated and reset via an internet connection to a time server. in this example, the time server acts as a(

Answers

The time server acts as a reliable and accurate reference point for synchronizing the clock on computers.

It provides the current time information to connected devices, allowing them to update and reset their clocks accordingly.

The time server serves as a centralized source of accurate time information. It uses highly precise atomic clocks and synchronization protocols to maintain accurate timekeeping. When a computer connects to the internet, it queries the time server for the current time.

The time server responds with the exact time, which the computer then uses to adjust its clock. This synchronization process ensures that the computer's clock remains accurate and consistent, aligning it with global time standards.

By relying on the time server, computers can maintain synchronized time across different time zones and prevent clock drift or inaccuracies.

Learn more about global click here:

brainly.com/question/30331929

#SPJ11

the function that has no two arrows that start in the domain point to the same element of the co-domain is called:

Answers

The function that has no two arrows that start in the domain point to the same element of the co-domain is called an "injective" or "one-to-one" function.

An injective function is a type of function in which each element of the domain is mapped to a unique element in the co-domain. In other words, for every element in the domain, there is no other element in the domain that maps to the same element in the co-domain. Mathematically, if f is a function from a domain set A to a co-domain set B, then f is injective if and only if for every pair of distinct elements a and b in A, f(a) and f(b) are also distinct elements in B. This property ensures that no two arrows from the domain point to the same element in the co-domain.

Injective functions are often referred to as "one-to-one" functions because each element in the domain has a unique mapping to an element in the co-domain. This property is useful in various mathematical and computational applications, such as data analysis, cryptography, and database design.

Learn more about cryptography here: https://brainly.com/question/88001

#SPJ11

in cell c6, before the comma in the iferror function, create a formula without using a function that divides the amount of automobile insurance sales (cell b6) by the total sales (cell b11).

Answers

By using this formula, we are able to calculate the percentage of automobile insurance sales without using any functions.

To calculate the percentage of automobile insurance sales in cell c6, before the comma in the iferror function, we can use a simple arithmetic formula. We divide the amount of automobile insurance sales in cell b6 by the total sales in cell b11 and then multiply the result by 100 to get the percentage.

So the formula would be: =(b6/b11)*100

This will give us the percentage of automobile insurance sales as a number. We can then include this formula in cell c6, before the comma, in the iferror function to handle any errors that may occur.

This formula simply uses arithmetic operations to calculate the percentage, making it a quick and easy solution. Additionally, this formula is easy to understand and can be modified to calculate the percentage of any type of sales, not just automobile insurance sales.

Learn more on automobile insurance sales here:

https://brainly.com/question/14504577

#SPJ11

compared to other group baby boomers are especially motivated to learn if they beleive

Answers

Baby boomers are especially motivated to learn if they believe that the knowledge or skill they acquire will enhance their personal growth, career advancement, or improve their quality of life.

Baby boomers, born between 1946 and 1964, have distinct characteristics that set them apart from other generational groups. They often possess a strong work ethic and value lifelong learning. Baby boomers are motivated to learn when they perceive a direct benefit from the knowledge or skill they acquire. They are driven by personal growth and development, as well as the potential for career advancement. Baby boomers also prioritize improving their quality of life, whether it's through health and wellness, financial literacy, or personal hobbies. They see learning as a means to stay relevant, adapt to changing times, and maintain an active and fulfilling lifestyle in their later years.

Learn more about compared here:

https://brainly.com/question/31877486

#SPJ11

In Unit 5, we are introduced to the concepts of Data Backup and Recovery Plans. The readings discuss 10 and 14 tape rotations option for a full backup schedule.
For your assignment, discuss the pros and cons on each option and discuss a third option by consulting a source from the required websites.
You must post your initial response (with references) before being able to review other student’s responses. Once you have made your first response, you will be able to reply to other student’s posts. You are expected to make a minimum of 3 responses to your fellow student’s posts.

Answers

By opting for a complete backup schedule that involves rotating 10 tapes, you can effectively reduce the number of tapes required and optimize storage space.

What are the drawbacks?

Nonetheless, it could offer diminished duplication and heightened vulnerability in the event of tape malfunction. By offering the choice of 14 different tapes, there is added protection against the potential loss of data as a result of tape malfunction.

On the other hand, additional tapes and storage capacity are necessary. Another viable choice is to seek guidance from a trustworthy resource like the National Institute of Standards and Technology (NIST) website. Here, you can gain further knowledge on other backup methods like disk-based or cloud-based solutions, each with its own set of advantages and disadvantages.

Read more about data recovery here:

https://brainly.com/question/17968818

#SPJ1

Which of the following database types would be best suited for storing multimedia? A) SQL DBMS B) Open-source DBMS C) Non-relational DBMS

Answers

The non-relational DBMS would be best suited for storing multimedia.

Storing multimedia, such as images, audio, and video, typically involves handling large volumes of data with complex structures. In this context, non-relational DBMS, also known as NoSQL databases, are often better suited compared to SQL and open-source DBMS.

Non-relational DBMS, unlike SQL DBMS, do not rely on the traditional relational model and provide greater flexibility in managing unstructured and semi-structured data. They are designed to handle the scalability and performance requirements of multimedia applications. NoSQL databases employ various data models, such as document-oriented, key-value, columnar, or graph, which can better accommodate the storage and retrieval needs of multimedia content.

SQL DBMS, on the other hand, are well-suited for structured data and complex query requirements, making them more appropriate for traditional relational data management scenarios. Open-source DBMS refers to the licensing model of the database software and can include both SQL and non-relational databases.

Learn more about DBMS here:

https://brainly.com/question/30637709

#SPJ11

modify the extended_add procedure in section 7.5.2 to add two 256-bit (32-byte) integers. data vall BYTE '8' val2 BYTE '9' . code mov ah,0 mov al, vall sub al, val2 = ; AX ; AX aas ; AX 0038h = OFFh FFO9h save the Carry flag FF39h restore the Carry flag i pushf or al,30h popf ; AX = i

Answers

To modify the extended_add procedure to add two 256-bit integers, you need to change the loop counter to 32, since we will process the integers 8 bytes at a time (32 pairs of 8 bytes). You also need to define two arrays of 32 bytes each to hold the two 256-bit integers, and a third array of 32 bytes to hold the result.

How can you modify the extended_add procedure to add two 256-bit integers in Assembly language?

To modify the extended_add procedure in section 7.5.2 to add two 256-bit (32-byte) integers, you can use the following code:

.data
val1 QWORD 0x1234567890ABCDEF
val2 QWORD 0x9876543210FEDCBA
result QWORD ?

.code
extended_add PROC
pushf ; Save the flags
xor rax, rax ; Clear the accumulator
mov rcx, 4 ; Loop counter
loop_start:
mov rdx, 0 ; Clear the carry flag
mov r8, [val1 + rcx*8] ; Load 8 bytes from val1
adc rax, r8 ; Add 8 bytes to the accumulator
mov r8, [val2 + rcx*8] ; Load 8 bytes from val2
adc rax, r8 ; Add 8 bytes to the accumulator
mov [result + rcx*8], rax ; Store 8 bytes in result
sub rcx, 1 ; Decrement loop counter
jnz loop_start ; Loop until all 32 bytes are processed
popf ; Restore the flags
ret
extended_add ENDP

In this code, we define two 64-bit (8-byte) integers val1 and val2, and a 64-bit integer result to hold the sum of the two integers. The extended_add procedure takes no arguments and returns no value, but modifies the contents of result.

The procedure starts by pushing the flags onto the stack to save their values. It then clears the accumulator (rax) to prepare for the addition. The loop counter (rcx) is set to 4, since we will process the integers 8 bytes at a time (4 pairs of 8 bytes).

Inside the loop, we load 8 bytes from val1 and add them to the accumulator using the adc (add with carry) instruction. We then load 8 bytes from val2 and add them to the accumulator again using adc. The carry flag is cleared before each addition to ensure that any carry from the previous addition is accounted for.

Finally, we store the 8-byte sum in result and decrement the loop counter. We continue looping until all 32 bytes have been processed. After the loop, we restore the flags by popping them from the stack, and return from the procedure.

To test the procedure, you can call it from your main program like this:

mov ecx, LENGTHOF result ; Set the loop counter to 8
lea rsi, result ; Load the address of result
call extended_add ; Call the extended_add procedure
; Result is now the sum of val1 and val2

This will call the extended_add procedure to add val1 and val2, and store the result in the result variable. You can then use the result variable as needed in your program.

Learn more about  extended_add procedure

brainly.com/question/32098661

#SPJ11

True/False: there exists a single technique for designing algorithms; we can solve all the computational problems with that single technique.

Answers

False. There is no single technique for designing algorithms that can solve all computational problems. Different types of problems require different approaches and techniques, and sometimes a combination of approaches may be needed to solve a problem.

Algorithm design involves analyzing the problem and determining the most appropriate technique or combination of techniques to use. True/False: There exists a single technique for designing algorithms; we can solve all the computational problems with that single technique.

Your answer: False. There is no single technique for designing algorithms that can solve all computational problems. Instead, various techniques and approaches are used depending on the specific problem and desired outcomes. These may include divide and conquer, dynamic programming, greedy algorithms, backtracking, and more. Each technique is best suited for certain types of problems, and no single approach works universally.

To know more about designing algorithms visit :

https://brainly.com/question/17238228

#SPJ11

The following program should reverse each line the user types. Fix it.
Note: the hard-looking stuff is all correct. The problem is much simpler. Trust the error message.
#include
#include
char *reverse(char *s) {
int len=strlen(s);
char buf[256];
char *b=buf;
for(char *e=s+len-1;e>=s;e--,b++) {
*b=*e;
}
*b='\0';
return buf;
}
int main(void) {
char s[256];
while(fgets(s,256,stdin)) {
s[strlen(s)-1] = '\0'; // eliminates the trailing \n
printf("%s\n",reverse(s));
}
}
(c++)

Answers

Here's the corrected version of the program:

```cpp

#include <iostream>

#include <cstring>

char* reverse(char* s) {

   int len = std::strlen(s);

   char* buf = new char[len + 1];

   char* b = buf;

   

   for (char* e = s + len - 1; e >= s; e--, b++) {

       *b = *e;

   }

   *b = '\0';

   

   return buf;

}

int main() {

   char s[256];

   

   while (std::cin.getline(s, 256)) {

       std::cout << reverse(s) << std::endl;

   }

   

   return 0;

}

```

In the corrected version, I made the following changes:

- Added necessary headers `<iostream>` and `<cstring>` for input/output and string functions.

- Changed `printf` and `fgets` to `std::cout` and `std::cin.getline` for C++ style input/output.

- Replaced the use of `strlen` in the `reverse` function with `std::strlen`.

- Allocated memory for the `buf` array dynamically using `new[]` to avoid using a local array that would go out of scope.

- Properly terminated the `buf` array with a null character `'\0'` after reversing the string.

These changes should fix the program and allow it to reverse each line that the user types.

learn more about `buf` array

https://brainly.com/question/31669259?referrer=searchResults

#SPJ11

In this assignment, you will implement two approximate inference methods for Bayesian networks, i.e., rejection sampling and Gibbs sampling in the given attached base code.
Grading will be as follows:
Rejection sampling: 70%
Gibbs sampling: 30%
Input:
Bayesian network is represented as a list of nodes. Each node is represented as a list in the following order:
name: string
parent names: a list of strings. Can be an empty list
cpt: a conditional probability table represented as an array. Each entry corresponds to the conditional probability that the variable corresponding to this node is true. The rows are ordered such that the values of the node’s parent variable(s) are enumerated in the traditional way. That is, in a table, the rightmost variable alternates T, F, T, F, …; the variable to its left T, T, F, F, T, T, F, F, …; and so on.
The nodes in the network will be ordered corresponding to the network topology, i.e., parent nodes will always come before their children. For example, the sprinkler network in Figure 13.15 and on our slides, is represented as:
nodes = [["Cloudy", [], [0.5]],
["Sprinkler", ["Cloudy"], [0.1, 0.5]],
["Rain", ["Cloudy"], [0.8, 0.2]],
["WetGrass", ["Sprinkler", "Rain"], [0.99, 0.9, 0.9, 0.0]]]
b = BayesNet(nodes)
b.print()
You can call b.print() to see the conditional probability tables organized for each node.
Output:
A query will ask you to compute a possibly conditional probability of a single variable such as P(Rain | Cloudy = false, Sprinkler = true). Queries will always be for a distribution, not a specific event’s probability.
The following methods will be called for queries:
rejectionSampling(queryNodeName, evidence, N)
or
gibbsSampling(queryNodeName, evidence, N)
queryNodeName: a string for the query node’s name
evidence: a set of pairs
N: total number of iterations
For instance, given the network b, a sample Gibbs sampling query can be called and printed as follows:
out = b.gibbsSampling("Rain", {"Sprinkler":True}, 100000)
print(out)
The output will look like:
> [0.299, 0.700]
Notes
You may (actually, should) implement helper methods, but do not change the class structure or the signatures of existing methods.
Please submit your code, including comments that explain your approach, by uploading a .py file
bayesNet.py here-------------------------------------------------------------------------------------------------------------
import random
class Node:
name =""
parentNames = []
cpt = []
def __init__(self, nodeInfo):
"""
:param nodeInfo: in the format as [name, parents, cpt]
"""
# name, parents, cpt
self.name = nodeInfo[0]
self.parentNames = nodeInfo[1].copy()
self.cpt = nodeInfo[2].copy()
def format_cpt(self):
s_cpt = '\t'.join(self.parentNames) + '\n'
for i in range(len(self.cpt)):
s_cpt += bin(i).replace("0b", "").zfill(len(self.parentNames)).replace('0', 'T\t').replace('1', 'F\t')
s_cpt += str(self.cpt[i]) + '\n'
return s_cpt
def print(self):
print("name: {}\nparents:{}\ncpt:\n{}".format(self.name, self.parentNames, self.format_cpt()))
class BayesNet:
nodes = []
def __init__(self, nodeList):
for n in nodeList:
self.nodes.append(Node(n))
def print(self):
for n in self.nodes:
n.print()
def rejectionSampling(self, qVar, evidence, N):
"""
:param qVar: query variable
:param evidence: evidence variables and their values in a dictionary
:param N: maximum number of iterations
E.g. ['WetGrass',{'Sprinkler':True, 'Rain':False}, 10000]
:return: probability distribution for the query
"""
return []
def gibbsSampling(self, qVar, evidence, N):
"""
:param qVar: query variable
:param evidence: evidence variables and their values in a dictionary
:param N: maximum number of iterations
E.g. ['WetGrass',{'Sprinkler':True, 'Rain':False}, 10000]
:return: probability distribution for the query
"""
return []
# Sample Bayes net
nodes = [["Cloudy", [], [0.5]],
["Sprinkler", ["Cloudy"], [0.1, 0.5]],
["Rain", ["Cloudy"], [0.8, 0.2]],
["WetGrass", ["Sprinkler", "Rain"], [0.99, 0.9, 0.9, 0.0]]]
b = BayesNet(nodes)
b.print()
# Sample queries to test your code
# print(b.gibbsSampling("Rain", {"Sprinkler":True, "WetGrass" : False}, 100000))
# print(b.rejectionSampling("Rain", {"Sprinkler":True}, 1000))

Answers

In the BayesNet class, we already have a list of nodes representing the Bayesian network. We can use this list to define the joint distribution of the network. We can then use this joint distribution to perform rejection sampling and Gibbs sampling.

How to explain the information

In order to define the joint distribution of the network, we need to compute the probability of each possible configuration of the network's variables. We can use the conditional probability tables (CPTs) of each node to compute these probabilities.

We can iterate over all possible combinations of values for the network's variables and use the CPTs to compute the probability of each configuration.

Learn more about Bayesian on.

https://brainly.com/question/29107816

#SPJ4

what function do you use to save an object utilizing the pickle module?

Answers

To save an object utilizing the pickle module, you need to use the "dump" function.

This function is used to serialize the object and save it to a file. The syntax for the dump function is as follows: "pickle.dump(obj, file, protocol=None, *, fix_imports=True)". Here, "obj" refers to the object that you want to save, and "file" refers to the file in which you want to save the object. The "protocol" argument is optional and allows you to specify the protocol version to be used for serialization. The "fix_imports" argument is also optional and allows you to handle the issue of importing old Python 2 modules in Python 3. Overall, the "dump" function is an essential component of the pickle module, as it allows you to save and restore Python objects easily.

learn more about save an object here:

https://brainly.com/question/30907360

#SPJ11

This problem tests your ability to perform basic operations on a 1 dimensional array.
Create a program that reads 10 integers from the keyboard (you do not need to prompt for them). Store these integers in a one dimensional array of ints. Next check each integer to see if it is divisible by 2; if it is then change the value to 1, if it isn't change it to 0. Finally print out the array in reverse order. As an example, if the input values were: 1, 3, 4, 6, 7, 8, 9, 10, 12, 14 your program should convert the values in the array to 0, 0, 1, 1, 0, 1, 0, 1, 1, 1 and then print the sequence in reverse: 1, 1, 1, 0, 1, 0, 1, 1, 0, 0. Here is some example input and output that shows formatting…
Sample Input
1 2 3 4 5 6 7 8 9 10
Sample Output
1
0
1
0
1
0
1
0
1
0
Additional Requirements and Assumptions
You may assume the user enters valid integers.
You must use an array to store the integers (deduction 10pts)
c++
this is what i have so far but it is not coming out right no matter what I change it is coming out as all ones.
#include
using namespace std;
int main()
{
int arr[10];
cout<<"Enter 10 integers: "< for(int i = 0;i<10;i++){
cin>>arr[i]; }
for(int i = 0;i<10;i++){
if(arr[i]%2==0){
arr[i] = 1;
}
}
for(int i = 9;i>=0;i--){
cout< }
return 0;
}

Answers

The issue in your code lies in the conditional statement where you check if the integer is divisible by 2. You are currently checking if `arr[i] % 2 == 0`, which is correct for determining divisibility by 2. However, in your code, you are setting `arr[i] = 1` when the condition is true, instead of setting it to 1 when it is divisible by 2. This is causing all elements in the array to be set to 1.

To fix the issue, you need to change the assignment in the if-statement. Here's the corrected code:

```cpp

#include <iostream>

using namespace std;

int main() {

 int arr[10];

 

 cout << "Enter 10 integers: ";

 for (int i = 0; i < 10; i++) {

   cin >> arr[i];

 }

 

 for (int i = 0; i < 10; i++) {

   if (arr[i] % 2 == 0) {

     arr[i] = 1;

   } else {

     arr[i] = 0;

   }

 }

 

 for (int i = 9; i >= 0; i--) {

   cout << arr[i] << endl;

 }

 

 return 0;

}

```

With this code, you will correctly convert the values in the array to 1 if they are divisible by 2, and 0 otherwise. Finally, it will print the array in reverse order.

Make sure to compile and run the code to verify the desired output.

Learn more about **arrays in C++** here:

https://brainly.com/question/12975450?referrer=searchResults

#SPJ11

slurs are arbitrary and meaningless, primarily reflecting the ill manners of those who use them.
T/F

Answers

"Slurs are arbitrary and meaningless, primarily reflecting the ill manners of those who use them" is True. They often do not hold any factual basis and are used to demean others, showcasing a lack of respect and consideration.

slurs or ethnophaulisms or ethnic epithets that are, or have been, used as insinuations or allegations about members of a given ethnicity or racial group or to refer to them in a derogatory, pejorative, or otherwise insulting manner. Some of the terms listed below (such as "gringo", "yank", etc.) can be used in casual speech without any intention of causing offense. The connotation of a term and prevalence of its use as a pejorative or neutral descriptor varies over time and by geography. For the purposes of this list, an ethnic slur is a term designed to insult others on the basis of race, ethnicity, or nationality. Each term is listed followed by its country or region of usage, a definition, and a reference to that term.

To learn more about "Slurs" visit: https://brainly.com/question/30422369

#SPJ11

In the space below, write MATLAB code that defines a variable avedogsperyear that contains the average number of dogs born each year.

Answers

Write a MATLAB code for calculating the average number of dogs born each year. Here's the code and a brief explanation:

```matlab
totalDogsBorn = 1000;
totalYears = 5;
aveDogsPerYear = totalDogsBorn / totalYears;
```

In this example, we have defined a variable `totalDogsBorn` which represents the total number of dogs born over a certain period. We then define another variable `totalYears`, representing the number of years in that period. Finally, we calculate the average number of dogs born each year by dividing `totalDogsBorn` by `totalYears`, and store the result in the variable `aveDogsPerYear`.

Step-by-step explanation:

1. Define the `totalDogsBorn` variable by setting it to a specific value (e.g., 1000). This represents the total number of dogs born during the given time frame.
2. Define the `totalYears` variable by setting it to a specific value (e.g., 5). This represents the number of years in the given time frame.
3. Calculate the average number of dogs born each year by dividing `totalDogsBorn` by `totalYears`. Store the result in a new variable called `aveDogsPerYear`.

This code provides a simple way to calculate the average number of dogs born each year using MATLAB. You can change the values of `totalDogsBorn` and `totalYears` as needed to get different results.

Know more about the code click here:

https://brainly.com/question/31228987

#SPJ11

the __________ is the core of the hypervisor and performs all the virtualization functions.

Answers

The hypervisor is the core of the virtualization platform and performs all the virtualization functions.

The hypervisor, also known as the virtual machine monitor (VMM), serves as the fundamental component of a virtualization platform. It is responsible for executing and managing multiple virtual machines (VMs) on a physical host system. The hypervisor performs various crucial virtualization functions, including resource allocation, memory management, CPU scheduling, I/O device emulation, and virtual machine monitoring.

It acts as an intermediary layer between the hardware and the virtual machines, enabling the sharing and isolation of resources among multiple VMs. The hypervisor plays a vital role in enabling the virtualization of hardware and facilitating the efficient and secure operation of virtual machines.

You can learn more about hypervisor  at

https://brainly.com/question/9362810

#SPJ11

TRUE/FALSE. Sometimes a greedy approach might look correct at the higher level, but at the end, it could give you incorrect answer

Answers

The statement is True. Sometimes a greedy approach might seem correct initially, but it can ultimately lead to an incorrect answer. This is because greedy algorithms make locally optimal choices at each step, which may not always result in a globally optimal solution.

Sometimes a greedy approach might seem like the right solution at first because it makes locally optimal choices, but it may not always lead to the globally optimal solution. In some cases, a more exhaustive and systematic approach is needed to ensure the correct answer. This is why it's important to thoroughly analyze and test different strategies to find the most effective solution for each specific problem. The locally optimal choice may not lead to a globally optimal solution, leading to incorrect results. This can happen when there are conflicting objectives, dependencies between choices, or when the problem structure does not permit a greedy approach.

To know more about greedy visit :-

https://brainly.com/question/13197481

#SPJ11

rom textbooks on the pl/i and ada programming languages, look up the respective sets of built-in exceptions. do a comparative evaluation of the two, considering both completeness and flexibility.

Answers

PL/I has 21 built-in exceptions, while Ada has 5. PL/I is more complete and flexible, with exceptions for arithmetic, input/output, program interruption, and more. Ada's exceptions are more limited to tasking and system-level errors.

PL/I has a more extensive set of built-in exceptions, covering a wide range of error scenarios, including arithmetic, input/output, and program interruption. This makes it more complete and flexible than Ada in terms of error handling. In contrast, Ada's exceptions are more limited, primarily focused on tasking and system-level errors. While this simplicity may be an advantage in some cases, it can also make it more difficult to handle specific types of errors. Ultimately, the choice between the two languages will depend on the specific needs of the project and the desired level of error handling.

learn more about program here:

https://brainly.com/question/12972718

#SPJ11

ms danvers wants her three virtual machines ip address to be kept private but she also wants them to communicate on the host machines network using its ip address. which virtual nic type should she configure on them

Answers

Ms. Danvers should configure the virtual NICs (Network Interface Cards) of her three virtual machines with a "Host-only" network type.

In a "Host-only" network configuration, the virtual machines can communicate with each other and with the host machine, but they are isolated from the external network. This means their IP addresses are kept private and are not visible or accessible outside of the host machine's network.By using the host machine's IP address for communication, the virtual machines can effectively communicate with other devices on the host machine's network while maintaining their privacy.

To know more about network click the link below:

brainly.com/question/29849366

#SPJ11

fill in the blank. in sql, a(n) ________ subquery is a type of subquery in which processing the inner query depends on data from the outer query.

Answers

In SQL, a correlated subquery is a type of subquery in which processing the inner query depends on data from the outer query.

A correlated subquery is a subquery that refers to a column from the outer query within its own query block. It is executed for each row of the outer query, and the result of the inner query depends on the values of the current row being processed in the outer query. The correlation between the inner and outer queries allows for more complex and dynamic queries.

Correlated subqueries are used when we need to filter or retrieve data from one table based on values from another table in a related manner. The inner query is executed for each row of the outer query, making it dependent on the values of the outer query. This type of subquery provides flexibility and allows us to perform more specific and customized data retrieval.

You can learn more about correlated subquery at

https://brainly.com/question/29897765

#SPJ11

You put k keys into a hash table with m hash buckets. We assume that the hash function is good enough that you
can treat the destination of each key as independently uniformly random. What is the probability that there are no
collisions at all, i.e., that all keys end up in different positions of the array? Show your work as you derive your answer.

Answers

The probability that a specific key is assigned to one of the m hash buckets is 1/m, since we're assuming that the hash function is good enough that each bucket is equally likely to be selected.

The probability that the first key is assigned to any of the m hash buckets without collision is 1. The probability that the second key is assigned to one of the remaining (m-1) buckets without collision is (m-1)/m. Similarly, the probability that the third key is assigned to one of the remaining (m-2) buckets without collision is (m-2)/m. Continuing in this way, the probability that the k-th key is assigned to one of the remaining (m-(k-1)) buckets without collision is (m-(k-1))/m.

Therefore, the probability that all k keys are assigned to different hash buckets without collision is:

P = 1 * (m-1)/m * (m-2)/m * ... * (m-k+1)/m

Simplifying this expression, we get:

P = [(m-1)! / (m-k)!] / mk

Alternatively, we can express this probability using the binomial coefficient as:

P = (m choose k) * k! / mk

Either way, we can compute this probability given k and m. For example, if k = 3 and m = 5, we have:

P = [(5-1)! / (5-3)!] / 5^3 = 24 / 125 = 0.192

So the probability that all 3 keys end up in different hash buckets without collision is 0.192.

Learn more about hash function here:

https://brainly.com/question/31579763

#SPJ11

what is the total time (in pico seconds) required to execute one lw instruction in a pipelined processor?

Answers

The total time required to execute one lw instruction in a pipelined processor is approximately 5 picoseconds.

What is the approximate duration required to complete a single lw instruction in a pipelined processor?

In a pipelined processor, the lw (load word) instruction takes around 5 picoseconds to complete. The pipelining technique is used to improve the performance of modern processors by overlapping the execution of multiple instructions.

The pipeline is divided into multiple stages, and each stage performs a specific operation on the instruction. When a pipeline is fully occupied, each stage handles a different instruction simultaneously. However, due to pipeline hazards, the pipeline can occasionally stall, and the performance can decrease.

In a typical pipeline, the stages include instruction fetch, instruction decode, execution, memory access, and write back. The lw instruction, specifically, goes through the fetch, decode, execution, and memory access stages. During the fetch stage, the instruction is fetched from memory.

In the decode stage, the instruction is decoded, and the memory address is calculated. In the execution stage, the memory address is sent to the memory unit, and the data is loaded into a register. Finally, in the memory access stage, the data is written back to the register file.

Learn more about Pipelined processor

brainly.com/question/18568238

#SPJ11

Other Questions
which situation demonstrates proper application of client confidentiality requirements for the health insurance portability and accountability act (hipaa)? Read the facts of the case and each of the two sample opinions inthis case. Analyze the arguments made in Opinion A and Opinion B. What do you think? Does the exclusion of a third-party candidate from a debate televised by a public broadcaster violate the candidate's right to free speech? Decide which one you think should be the majority (winning) opinion andwhich one you think should be the dissenting opinion. Explain your choice. What step did soviet leader mikhail gorbachev take in reaction to president ronald reagans plans for a strategic defense initiative?. A parking garage has 230 cars in it when it opens at 8 ( = 0). On the interval 0 10, cars enter the parking garage at the rate () = 58 cos(0.1635 0.642) cars per hour and cars leave the parking garage at the rate () = 65 sin(0.281) + 7.1 cars per hour (a) How many cars enter the parking garage over the interval = 0 to = 10 hours? (b) Find (5). Using correct units, explaining the meaning of this value in context of the problem. (c) Find the number of cars in the parking garage at time = 10. Show the work that leads to your answer. Older individuals who are retired from the workforce tend to be: O Net savers O Net spenders O Interested in long term outlook on investment opportunities O more entrepreneurial The acid-dissociation constant for chlorous acid (HClO2) is 1.1102.Part A Calculate the concentration of H3O+ at equilibrium if the initial concentration of HClO2 is 1.68102 M.Part B Calculate the concentration of ClO2 at equilibrium if the initial concentration of HClO2 is 1.68102 MPart C Calculate the concentration of HClO2 at equilibrium if the initial concentration of HClO2 is 1.68102 M .Express the molarity to three significant digits. order the following chemical elements according to how important they are based on life on earth. -carbon -oxygen -phosphorus -iron -selenium -uranium. Consider a galvanic electrochemical cell constructed using Cr/Cr3+ and Zn/Zn2+ at 25 C. The following half-reactions are provided for each metal Cr-(aq) + 3e Cr(s) Ered = -0.744 V Zn-(aq) + 2 e - Zn(s) Ered = -0.763 V Which of the following is the half-reaction that takes place at the anode a > 2 points b What is the standard cell potential for this celle 2 points Ninter the balanced equation for the overall reaction in acidio solution 2 points Nwhat is the de potential for this cell at 25C when 2:1-00248 M and chai DOBA A mass of 4.00 g of H2 (g) reacts with 2.00 g of O2 (g). If 1.94 g of H2O (l) is collected, what is the percent yield of reaction?2H2 (g) + O2 (g) -> 2H2O (l)a. 5.4%b. 49%c. 32%d. 86%e. 97% the financial system describes the process by which funds flow from savers to users. group of answer choices true false What is the new concentration of Fe3+ if 3. 00 mL of 0. 00200 M iron(III) nitrate is diluted to a totalvolume of 10. 00 mL? show if m is a positive integer and a is an integer relatively prime to m such that ordma = m - 1, then m is prime. in applying vogel's approximation method to a profit maximazation problem, row and columb penalties are determined by what amount would have been reported for this inventory in dunders consolidated balance sheet at december 31, 2020?a. $40,000.b. $38,400c. $43,200.d. $33,600.e. $35,200 The population of bees worldwide has been in decline. There are estimated to be 2,000,000,000 bees worldwide and each year there is estimated to be 10% less. How many bees worldwide will there be in 10 years? Determine the number of CHCl3 molecules in 25.9 g CHCl3. find the area enclosed by the polar curve r=12sin. write the exact answer. do not round. why did we need standard data (provided by the stockroom technicians) as part of our aa analysis? how did we use this data? what is a calibration? A 10 mV input to an amplifier produces a 5 V output. What is the voltage gain in dB? a. 27 dB b. 500 dB c. 76 dB d. 54 dB A new car is purchased for $16,500. The value of the car depreciates at 5.75% per year. What will the car be worth, to the nearest penny, after 5 years?