Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
Solved

# topping3 challenge

Posted on 2016-09-29
Medium Priority
136 Views
Hi,

I am working on below challenge.
http://codingbat.com/prob/p128461

Given a map of food keys and topping values, modify and return the map as follows: if the key "potato" has a value, set that as the value for the key "fries". If the key "salad" has a value, set that as the value for the key "spinach".

topping3({"potato": "ketchup"}) → {"fries": "ketchup", "potato": "ketchup"}
topping3({"potato": "butter"}) → {"fries": "butter", "potato": "butter"}
topping3({"salad": "oil", "potato": "ketchup"}) → {"salad": "oil", "fries": "ketchup", "spinach": "oil", "potato": "ketchup"}

0
Question by:gudii9
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 6
• 5
• 3

LVL 37

Accepted Solution

zzynx earned 1000 total points
ID: 41823224
You have to apply two rules:
Rule 1: if the key "potato" has a value, set that as the value for the key "fries".
Rule 2: If the key "salad" has a value, set that as the value for the key "spinach".
What do you not understand about that?
0

LVL 7

Author Comment

ID: 41823496
``````public Map < String, String > topping3(Map < String, String > map) {
if (map.containsKey("potato")) {
map.put("potato", "fries");

}

}
return map;
}
``````

above failse some tests.
Expected      Run
topping3({"potato": "ketchup"}) → {"fries": "ketchup", "potato": "ketchup"}      {"potato": "fries"} missing: "fries": "ketchup"      X
topping3({"potato": "butter"}) → {"fries": "butter", "potato": "butter"}      {"potato": "fries"} missing: "fries": "butter"      X
topping3({"salad": "oil", "potato": "ketchup"}) → {"salad": "oil", "fries": "ketchup", "spinach": "oil", "potato": "ketchup"}      {"salad": "spinach", "potato": "fries"} missing: "fries": "ketchup""spinach": "oil"      X
topping3({"salad": "oil", "potato": "ketchup", "toast": "butter"}) → {"salad": "oil", "fries": "ketchup", "spinach": "oil", "potato": "ketchup", "toast": "butter"}      {"salad": "spinach", "potato": "fries", "toast": "butter"} missing: "fries": "ketchup""spinach": "oil"      X
topping3({}) → {}      {}      OK
topping3({"salad": "pepper", "fries": "salt"}) → {"salad": "pepper", "fries": "salt", "spinach": "pepper"}      {"salad": "spinach", "fries": "salt"} missing: "spinach": "pepper"      X
other tests
OK
Your progress graph for this problem

0

LVL 37

Expert Comment

ID: 41823580
You mess up "key" with "value"

>> Rule 1: if the key "potato" has a value, set that as the value for the key "fries".
and you write
``````if (map.containsKey("potato")) {
map.put("potato", "fries");   //// <<<<<<<<<<<<<<<<< the key is "potato" in this line, not "fries"
}
``````

and no, the solution is not simply switch "potato" and "fries"...
0

LVL 7

Author Comment

ID: 41823593
ok
0

LVL 32

Assisted Solution

awking00 earned 1000 total points
ID: 41823683
>>if the key "potato" has a value, set that as the value for the key "fries". If the key "salad" has a value, set that as the value for the key "spinach".<<

Both rules require finding a value for a given key (maybe the get function) and setting the value for a given key (maybe the put function).
0

LVL 32

Expert Comment

ID: 41844067
>>if the key "potato" has a value, set that as the value for the key "fries"<<
Define the meaning of relevant parts of the above rule -
if the key "potato" exists, the word "if" pretty much indicates  a condition to be met, and if it' met then it will always have a value so get that value (perhaps map.get("potato")).
set that as the value for the key "fries", in other words put that as the value for the key "fries" (perhaps map.put("fries", the value you got for the "potato" key Hope this helps.
0

LVL 7

Author Comment

ID: 41847369
let me try
0

LVL 7

Author Comment

ID: 41881013
still need to try this
0

LVL 37

Expert Comment

ID: 41881748
You don't have to tell us. Just do it.
0

LVL 7

Author Comment

ID: 41887023
``````public Map < String, String > topping3(Map < String, String > map) {
if (map.containsKey("potato")) {
map.put("fries", map.get("potato"));

}

}
return map;
}
``````

``````Expected	Run
topping3({"potato": "ketchup"}) → {"fries": "ketchup", "potato": "ketchup"}	{"fries": "ketchup", "potato": "ketchup"}	OK
topping3({"potato": "butter"}) → {"fries": "butter", "potato": "butter"}	{"fries": "butter", "potato": "butter"}	OK
topping3({"salad": "oil", "potato": "ketchup"}) → {"salad": "oil", "fries": "ketchup", "spinach": "oil", "potato": "ketchup"}	{"salad": null, "fries": "ketchup", "potato": "ketchup"} missing: "spinach": "oil"	X
topping3({"salad": "oil", "potato": "ketchup", "toast": "butter"}) → {"salad": "oil", "fries": "ketchup", "spinach": "oil", "potato": "ketchup", "toast": "butter"}	{"salad": null, "fries": "ketchup", "potato": "ketchup", "toast": "butter"} missing: "spinach": "oil"	X
topping3({}) → {}	{}	OK
topping3({"salad": "pepper", "fries": "salt"}) → {"salad": "pepper", "fries": "salt", "spinach": "pepper"}	{"salad": null, "fries": "salt"} missing: "spinach": "pepper"	X
other tests
OK
``````
0

LVL 37

Expert Comment

ID: 41887447
Rule 1 is correctly implemented.
Rule 2 is not.

I don't understand why you implement rule 2 differently than rule 1 while they are in fact exactly the same. They only differ in the key values.
0

LVL 32

Expert Comment

ID: 41888003
Look at your if statement that was implemented correctly. Whatever the map contains is used as the parameter for the map.get function. But that's not what the second if statement does.
0

LVL 7

Author Comment

ID: 41888135
``````public Map < String, String > topping3(Map < String, String > map) {
if (map.containsKey("potato")) {
map.put("fries", map.get("potato"));

}

}
return map;
}
``````

got it. above passed all tests.
0

LVL 37

Expert Comment

ID: 41888259
All right!
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This is about my first experience with programming Arduino.
What do responsible coders do? They don't take detrimental shortcuts. They do take reasonable security precautions, create important automation, implement sufficient logging, fix things they break, and care about users.
The viewer will learn how to implement Singleton Design Pattern in Java.
In this fifth video of the Xpdf series, we discuss and demonstrate the PDFdetach utility, which is able to list and, more importantly, extract attachments that are embedded in PDF files. It does this via a command line interface, making it suitable …
###### Suggested Courses
Course of the Month9 days, 7 hours left to enroll