कोड के साथ खाना बनाना


24

आप एक शेफ हैं और आपको अपने मसालों के साथ खाना बनाना बहुत पसंद है, लेकिन हाल ही में आपने अपने मसालों को व्यवस्थित करने के लिए पसंद किया है कि आप उन्हें कितनी बार उपयोग करते हैं। लेकिन आपके पास यह लिखने का कोई समय नहीं है जब आपने अपने मसाले का उपयोग किया था। बस, आप स्वैप करते हैं और मसालों को चारों ओर घुमाते हैं, और यह चाल करने के लिए लगता है।

लेकिन बेशक आप एक शेफ हैं और इसका मतलब है कि आपके पास कुछ रसोइया है। आप उन्हें अपने मसालों के साथ जुड़ाव के सरल नियम बताने का निर्णय लेते हैं।

  1. यदि आपने हाल ही में एक मसाले का उपयोग किया है, तो इसे मसाला रैक में एक ऊपर ले जाएं

  2. यदि आप किसी भी मसाले का उपयोग नहीं करते हैं, उदाहरण के लिए []खाली आंदोलन सूची, तो मसाला सूची प्रभावित नहीं होती है।

  3. आप किसी भी मसाले को मेरे मसाला धारक में डाल सकते हैं, लेकिन यदि आप इसका उपयोग करते हैं, तो इसे स्थानांतरित करना सुनिश्चित करें।

  4. सूची में कुछ भी हो सकता है। लेकिन क्योंकि ये मसाले हैं जिनके साथ हम काम कर रहे हैं। यह पसंद किया जाता है कि आप मसालों के नामों का उपयोग करें।

  5. मसाले अनोखे होने चाहिए। एक ही मसाले के बहुत सारे शोरबा को खराब कर देते हैं ... या फिर यह भी कहा जाता है

सामान्य कोड-गोल्फ नियम लागू होते हैं।

ओरेगानो का उदाहरण बार-बार इस्तेमाल किया जा रहा है।

pepper  pepper  pepper  pepper  oregano
paprika paprika paprika oregano pepper
salt    salt    oregano paprika paprika
cumin   oregano salt    salt    salt
oregano cumin   cumin   cumin   cumin

कार्य

मसालों की एक सूची इनपुट करें, और जो मसाले का उपयोग किया गया है उसकी एक सूची, फिर अंतिम सूची का उत्पादन करें।

उदाहरण

इनपुट

[pepper, paprika, salt, cumin, oregano], [oregano, cumin, cumin, salt, salt, salt]

उत्पादन

[salt, pepper, paprika, cumin, oregano]

यह कैसा लग रहा है

pepper  pepper  pepper  pepper  pepper  pepper  salt
paprika paprika paprika paprika paprika salt    pepper
salt    salt    salt    cumin   salt    paprika paprika
cumin   oregano cumin   salt    cumin   cumin   cumin
oregano cumin   oregano oregano oregano oregano oregano

इनपुट

[pepper, paprika, salt, cumin, oregano], [salt, salt, salt, salt, salt, salt, salt, salt, salt, salt, salt, salt, oregano]

उत्पादन

[salt, pepper, paprika, oregano, cumin]

क्या मसालों की सूची में आइटम अद्वितीय हैं?
tsh

हां, वे अद्वितीय होंगे
tisaconundrum

31
मैं बहुत दूर शेफ में यह कर रहा था, लेकिन अंततः यह बहुत थक गया! यदि वे ऐसा कर सकते हैं तो मैं किसी को 50 इनाम दूंगा।
geokavel

5
यहाँ मिश्रण कटोरे में इनपुट प्राप्त करने का एक सार है। बाकी बहुत मुश्किल होगा, लेकिन सही व्यक्ति के लिए उल्लेखनीय है!
जियोकॉवेल

जवाबों:


4

भूसी , 15 14 बाइट्स

Fλṁ↔`C⁰tMo→=¢⁰

इनपुट स्ट्रिंग्स की सूची हैं (यह अन्य प्रकार की सूचियों पर भी काम करता है)। इसे ऑनलाइन आज़माएं!

एच ब्वॉयज को -1 बाइट धन्यवाद

व्याख्या

Fλṁ↔`C⁰tMo→=¢⁰  Implicit inputs (two lists).
F               Fold second input using the first as initial value
 λ              with this anonymous function:
                 Arguments x (list of spices) and s (used spice).
                 For example, x=["a","b","c","d"] and s="c".
            ¢⁰   Repeat x infinitely: ["a","b","c","d","a","b","c","d"..
        M        For each item,
           =     test equality to s: [0,0,1,0,0,0,1,0..
         o→      and increment: [1,1,2,1,1,1,2,1..
       t         Drop first element: [1,2,1,1,1,2,1..
    `C⁰          Cut x to these lengths: [["a"],["b","c"],["d"]]
  ṁ↔             Reverse each slice and concatenate: ["a","c","b","d"]

मुझे xअसीम रूप से दोहराना होगा , क्योंकि जब हम शीर्ष मसाले का उपयोग करते हैं तो सूची अपना अंतिम तत्व खो देगी। एक अनुगामी 1 जोड़ना पर्याप्त होगा, लेकिन पुनरावृत्ति कम बाइट्स लेती है। एक बेहतर तरीका यह होगा कि सूची को उसके पहले तत्व को छोड़ने के बजाय घुमाया जाए, लेकिन हस्क के पास इसके लिए कोई अंतर्निहित नहीं है।


Σmहै एक बाइट के लिए।
H.PWiz

8

हास्केल , 48 बाइट्स

foldl(?)एक अनाम फ़ंक्शन है जो दो सूची तर्क ले रहा है और एक सूची वापस कर रहा है, जिसमें समान ( Eq-comparable) प्रकार के सभी तत्व हैं ।

के रूप में उपयोग करें foldl(?)["pepper", "paprika", "salt", "cumin", "oregano"]["oregano", "cumin", "cumin", "salt", "salt", "salt"]

foldl(?)
(x:y:r)?n|y==n=y:x:r|s<-y:r=x:s?n
s?n=s

इसे ऑनलाइन आज़माएं!

  • foldl(?) s m(स्पाइस रैक) सूची के साथ शुरू होता है sऔर इसे प्रत्येक तत्व (मसाला) mके साथ संचालक के उपयोग से क्रम में जोड़ता है ?
  • s?nnमसाले के रैक से मसाले का उपयोग करता है sऔर परिणामस्वरूप मसाले के रैक को लौटाता है।
    • यदि sकम से कम दो तत्व हैं, तो ?जांचें कि क्या दूसरा दूसरा समान है n, और यदि ऐसा है तो पहले दो तत्वों को स्विच करता है। यदि समान नहीं है, ?तो पहला तत्व नियत रहता है और शेष पर पुनरावृत्ति होती है।
    • यदि sअधिकांश में एक तत्व है, तो ?इसे अपरिवर्तित लौटाता है।

7

बावर्ची , 875 843 बाइट्स

S.

Ingredients.
1 g T
0 g Z
J
I

Method.
Put Z into mixing bowl.Take I from refrigerator.B I.Put I into mixing bowl.Take I from refrigerator.B until bed.Take I from refrigerator.V I.Put Z into 2nd mixing bowl.N T.Fold J into mixing bowl.Put J into mixing bowl.Remove I.Fold T into mixing bowl.Put J into 2nd mixing bowl.N until ned.Fold T into mixing bowl.Put T into mixing bowl.Fold J into 2nd mixing bowl.Put J into mixing bowl.C T.Stir for 1 minute.Put Z into mixing bowl.Fold T into mixing bowl.C until ced.Fold T into 2nd mixing bowl.G T.Put T into mixing bowl.Fold T into 2nd mixing bowl.G until ged.Put I into mixing bowl.Fold T into mixing bowl.Take I from refrigerator.V until ved.Fold T into mixing bowl.L T.Put T into 2nd mixing bowl.Fold T into mixing bowl.L until led.Pour contents of 2nd mixing bowl into baking dish.

Serves 1.

-32 बाइट्स को हटाकर जोनाथन एलन को धन्यवाद, theजहां मुझे नहीं लगता कि यह काम करेगा।

शेफ के पास कोई स्ट्रिंग प्रकार नहीं है, इसलिए सामग्री सकारात्मक पूर्णांक हैं। उपयोग की गई सामग्री से शुरुआती सूची को अलग करने और प्रयुक्त सामग्री सूची को समाप्त करने के लिए 0 का उपयोग किया जाता है। एक उदाहरण के लिए TIO लिंक देखें।

स्यूडोकोड व्याख्या:

A, B: stack
T, J, IN: int
T = 1
A.push(0) // used as the marker for the bottom of the stack
IN = input() // input the first list
while(IN):
    A.push(IN)
    IN = input()
IN = input() // for each used ingredient
while(IN):
    B.push(0)
    while(T): // move all ingredients up to and including the one we are moving right now to the second stack
        T = A.peek() - IN
        B.push(A.pop())
    A.push(B.pop())
    if(A.peekUnderTop() != 0):
        A.swapTopTwoItems()
    T = B.pop() // move the ingredients from the second stack back to the first
    while(T):
        A.push(T)
        T = B.pop()
    T = IN // to make it non-zero for next iteration
    IN = input(0
print(A.inverted())

इसे ऑनलाइन आज़माएं!


बहुत बढ़िया! क्या यह भाषा TIO के साथ है?
जियोकॉवेल

कुछ निरर्थक शब्दों को हटाकर आप 32 बाइट्स बचा
जोनाथन एलन

@geokavel को कल जोड़ा गया।
जोनाथन एलन

1
@geokavel क्या आपने सर्विंग से पहले मिक्सिंग बाउल की सामग्री को बेकिंग डिश में डाला था?
NieDzejkob

1
@NieDzejkob Did you pour the contents of the mixing bowl into the baking dish before serving?जो पूरी तरह से एक टिप्पणी की तरह लगता है जो खाना पकाने के एसई पर जाएगा और यहां नहीं: पी लोल (खाना पकाने के लिए एक बहुत ही अजीब सवाल यदि आप मुझसे पूछें: पी)
हाइपरन्यूट्रिनो

6

जावास्क्रिप्ट, 61 बाइट्स

a=>b=>b.map(v=>(p=a.indexOf(v))&&a.splice(p-1,2,a[p],a[p-1]))

इनपुट प्रारूप:

  • च (list_of_spices) (list_of_what_spices_got_used)
  • दो सूची स्ट्रिंग की सरणी हैं

आउटपुट:

  • list_of_spices को संशोधित किया गया है।


5

पायथन 2 , 72 71 69 बाइट्स

नया उत्तर, मेरे मूल प्रयास की भावना में।

r,u=input()
for x in u:i=r.index(x);r.insert(i/~i+i,r.pop(i))
print r

इसे ऑनलाइन आज़माएं!

अन्य समाधान:

पायथन 2 , 69 बाइट्स

r,u=input()
for x in u:i=r.index(x)-1;r[i:i+2]=r[i:i+2][::-1]
print r

इसे ऑनलाइन आज़माएं!


print(r)-> print r?
tsh


4

पायथन 2 , 80 बाइट्स

def g(r,q):
 for s in q:
  i=r.index(s)
  if i:r[i-1],r[i]=r[i],r[i-1]
 return r

इसे ऑनलाइन आज़माएं!


1
कुछ बचत: आंतरिक ब्लॉक को इंडेंट करने के लिए टैब का उपयोग करें, और असाइन करें r[i-1:i+1]
अर्जन जोहान्सन

returnद्वारा प्रतिस्थापित करने से एक और बाइट बचprint सकती है ।
जोनाथन फ्रीच

4

जावा 8, 87 86 76 बाइट्स

a->b->b.forEach(x->{int i=a.indexOf(x);a.set(i,a.set(i>0?i-1:i,a.get(i)));})

दो इनपुट लेता है ArrayList<String>और बाइट को बचाने के लिए एक नया वापस करने के बजाय पहली सूची को संशोधित करता है।

-10 बाइट्स थैंक्स टू @ नवे

स्पष्टीकरण:

इसे यहाँ आज़माएँ।

a->b->{                  // Method with two ArrayList<String> parameters and no return-type
  b.forEach(x->{         //  Loop over the second input-List
    int i=a.indexOf(x);  //   Get the index of the current item in the first input-List
    a.set(i,a.set(       //    Swap items:
      i>0?               //     If the current item is not the top item yet:
       i-1               //      Use the item above it
      :                  //     Else:
       i,                //      Use itself
         a.get(i)));     //     And swap it with the current item
  })                     //  End of loop
                         // End of method (implicit / single-line body)

1
77 बाइट्स:a->b->b.forEach(x->{int i=a.indexOf(x);a.set(i,a.set(i>0?i-1:i,a.get(i)));});
नेवे

जावा उन सभी लोगों का बदला ले रहा है जिन्होंने इसका मजाक उड़ाया।
जियोकॉवेल

2

05AB1E , 20 18 बाइट्स

vDyk>Ig‚£`U`2(@)X«

इसे ऑनलाइन आज़माएं!

व्याख्या

v                    # for each used spice
 D                   # duplicate current spice order
  yk                 # get the index of the current spice
    >                # increment
     Ig‚             # pair with the number of unique spices
        £            # split the spice list into pieces of these sizes
         `           # split as 2 separate lists to stack
          U          # store the list of spices below the current one in X
           `         # push the current spice and all above separately to stack
            2(@      # swap the second item to the top of the stack
               )     # wrap in a list
                X«   # append the rest of the spices


2

सी #, 125 117 81 79 बाइट्स

(c,n)=>{foreach(var i in n){var j=c.IndexOf(i);if(j!=0){c[j]=c[--j];c[j]=i;}}};

इसे .NET Fiddle पर आज़माएं

raznagul की बदौलत 36 बाइट्स से दूर रही


उत्तर के रूप में यह 117 बाइट्स होगा क्योंकि आप के लिए नाम स्थान याद कर रहे हैं Array.IndexOf। लेकिन उत्तर को छोटा बनाने के कई तरीके हैं: 1. foreach-loop के बजाय एक -loop का उपयोग करें for। 2. यदि cएक है List<string>के बजाय string[]आप सीधे उपयोग कर सकते हैं c.IndexOf। 3. जैसा कि cजगह में संशोधित किया गया है आपको इसे वापस करने की आवश्यकता नहीं है।
राजनागुल


1

गणितज्ञ, 52 बाइट्स

लेकिन यह मेरी पहली पोस्ट यहाँ है तो कृपया दयालु हो अगर गलत तरीके से गिना जाए :)

Keys@Sort@Merge[{PositionIndex@#,-Counts@#2},Total]&

और एक उदाहरण:

Keys@Sort@Merge[{PositionIndex@#, -Counts@#2}, Total] &[
    {pepper, paprika, salt, cumin, oregano}
  , {oregano, cumin, cumin, salt, salt, salt}
]

{नमक, काली मिर्च, पेपरिका, जीरा, अजवायन}


मैं एक गणितज्ञ विशेषज्ञ नहीं हूं, लेकिन आप शायद कुछ बाइट्स को बचाने के लिए कुछ रिक्त स्थान निकाल सकते हैं।
पजाकों

@pajonk पहले से ही उनके बिना गिना जाता है, लेकिन मुझे उन्हें यहाँ भी हटा देना चाहिए, धन्यवाद।
क्यूबा

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.