topping3 challenge

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"}

i have not understood above description please advise
LVL 7
gudii9Asked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
zzynxConnect With a Mentor Software engineerCommented:
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
 
gudii9Author Commented:
public Map < String, String > topping3(Map < String, String > map) {
    // map.put("bread", "butter");
    if (map.containsKey("potato")) {
        map.put("potato", "fries");

    }
    if (map.containsKey("salad")) {
        map.put("salad", "spinach");

    }
    return map;
}

Open in new window


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

please advise
0
 
zzynxSoftware engineerCommented:
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"
}

Open in new window


and no, the solution is not simply switch "potato" and "fries"...
0
What Kind of Coding Program is Right for You?

There are many ways to learn to code these days. From coding bootcamps like Flatiron School to online courses to totally free beginner resources. The best way to learn to code depends on many factors, but the most important one is you. See what course is best for you.

 
gudii9Author Commented:
ok
0
 
awking00Connect With a Mentor Commented:
>>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
 
awking00Commented:
>>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
 
gudii9Author Commented:
let me try
0
 
gudii9Author Commented:
still need to try this
0
 
zzynxSoftware engineerCommented:
You don't have to tell us. Just do it.
0
 
gudii9Author Commented:
public Map < String, String > topping3(Map < String, String > map) {
   // map.put("bread", "butter");
    if (map.containsKey("potato")) {
        map.put("fries", map.get("potato"));

    }
     if (map.containsKey("salad")) {
        map.put("salad", map.get("spinach"));

    }
    return map;
}

Open in new window


above fails below. please advise

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

Open in new window

0
 
zzynxSoftware engineerCommented:
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
 
awking00Commented:
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
 
gudii9Author Commented:
public Map < String, String > topping3(Map < String, String > map) {
   // map.put("bread", "butter");
    if (map.containsKey("potato")) {
        map.put("fries", map.get("potato"));

    }
     if (map.containsKey("salad")) {
        map.put("spinach", map.get("salad"));

    }
    return map;
}

Open in new window


got it. above passed all tests.
0
 
zzynxSoftware engineerCommented:
All right!
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.