Sie sind ein Koch und kochen gerne mit Ihren Gewürzen, aber in letzter Zeit möchten Sie Ihre Gewürze danach sortieren, wie oft Sie sie verwenden. Aber Sie haben keine Zeit aufzuschreiben, wann Sie Ihr Gewürz zuletzt verwendet haben. Sie tauschen einfach Gewürze aus und bewegen sie, und dies scheint den Trick zu tun.
Aber natürlich bist du ein Koch und das bedeutet, dass du ein paar Köche bei dir hast. Sie beschließen, ihnen die einfachen Regeln für den Umgang mit Ihren Gewürzen zu erläutern.
Wenn Sie kürzlich ein Gewürz verwendet haben, schieben Sie es im Gewürzregal nach oben
Wenn Sie überhaupt keine Gewürze verwendet haben, z. B.
[]
leere Bewegungsliste, ist die Gewürzliste nicht betroffen.Sie können jedes Gewürz in meinen Gewürzhalter legen, aber wenn Sie es verwenden, stellen Sie sicher, dass Sie es bewegen.
Die Liste kann alles enthalten. Aber weil dies Gewürze sind, arbeiten wir mit ihnen. Es wird bevorzugt, dass Sie Namen von Gewürzen verwenden.
Gewürze sollten einzigartig sein. Zu viele der gleichen Gewürze verderben die Brühe ... oder wie auch immer das Sprichwort lautet
Es gelten die normalen Code-Golf-Regeln.
Beispiel von Oregano, das immer wieder verwendet wird.
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
Aufgabe
Geben Sie eine Liste der Gewürze und eine Liste der verwendeten Gewürze ein und geben Sie dann die endgültige Liste aus.
Beispiel
Eingang
[pepper, paprika, salt, cumin, oregano], [oregano, cumin, cumin, salt, salt, salt]
Ausgabe
[salt, pepper, paprika, cumin, oregano]
Wie das aussieht
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
Eingang
[pepper, paprika, salt, cumin, oregano], [salt, salt, salt, salt, salt, salt, salt, salt, salt, salt, salt, salt, oregano]
Ausgabe
[salt, pepper, paprika, oregano, cumin]
Antworten:
Schale ,
15 bis14 BytesEingaben sind Listen von Zeichenfolgen (es funktioniert auch bei anderen Arten von Listen). Probieren Sie es online!
-1 Byte dank H.PWiz
Erläuterung
Ich muss es
x
unendlich wiederholen , da die Liste sonst ihr letztes Element verlieren würde, wenn wir das oberste Gewürz verwenden. Es würde ausreichen, eine nachfolgende 1 hinzuzufügen, aber die Wiederholung benötigt weniger Bytes. Ein besserer Weg wäre, die Liste zu drehen, anstatt das erste Element zu löschen, aber Husk hat dafür kein eingebautes Element.quelle
Σm
istṁ
für ein Byte.Haskell , 48 Bytes
foldl(?)
ist eine anonyme Funktion, die zweiEq
Listenargumente verwendet und eine Liste mit allen Elementen desselben ( vergleichbaren) Typs zurückgibt.Verwenden Sie als
foldl(?)["pepper", "paprika", "salt", "cumin", "oregano"]["oregano", "cumin", "cumin", "salt", "salt", "salt"]
.Probieren Sie es online!
foldl(?) s m
Beginnt mit der Liste (Gewürzregal)s
und kombiniert sie mit jedem Element (Gewürz)m
in der angegebenen Reihenfolge mithilfe des Operators?
.s?n
Verwendet das Gewürzn
aus dem Gewürzregals
und gibt das resultierende Gewürzregal zurück.s
mindestens zwei Elemente vorhanden sind, wird?
geprüft, ob das zweite gleich istn
, und wenn ja, werden die ersten beiden Elemente umgeschaltet. Wenn nicht gleich, wird?
das erste Element fixiert und der Rest wiederholt.s
höchstens ein Element vorhanden ist, wird?
es unverändert zurückgegeben.quelle
Chef ,
875843 Bytes-32 Bytes dank Jonathan Allan durch Entfernen,
the
wo ich nicht denken würde, dass es funktionieren wird.Chefkoch hat keine Schnurarten, die Zutaten sind also positive ganze Zahlen. 0 wird verwendet, um die Startliste von den verwendeten Zutaten zu trennen und die Liste der verwendeten Zutaten zu beenden. Ein Beispiel finden Sie unter dem TIO-Link.
Pseudocode-Erklärung:
Probieren Sie es online!
quelle
Did you pour the contents of the mixing bowl into the baking dish before serving?
das hört sich ganz nach einem Kommentar an, der auf die Koch-SE gehen würde und nicht hier: P lol (auch eine sehr seltsame Frage zum Kochen, wenn du mich fragst: P)JavaScript, 61 Bytes
Eingabeformat:
Ausgabe:
Code-Snippet anzeigen
quelle
Python 2 ,
727169 BytesNeue Antwort im Geiste meines ursprünglichen Versuchs.
Probieren Sie es online!
Andere Lösung:
Python 2 , 69 Bytes
Probieren Sie es online!
quelle
print(r)
->print r
?Python 2 , 80 Bytes
Probieren Sie es online!
quelle
r[i-1:i+1]
.return
durchprint
kann ein weiteres Byte gespeichert werden .Java 8,
878676 BytesNimmt zwei Eingaben als
ArrayList<String>
und ändert die erste Liste, anstatt eine neue zurückzugeben, um Bytes zu sparen.-10 Bytes dank @Nevay .
Erläuterung:
Probieren Sie es hier aus.
quelle
a->b->b.forEach(x->{int i=a.indexOf(x);a.set(i,a.set(i>0?i-1:i,a.get(i)));});
05AB1E ,
2018 BytesProbieren Sie es online!
Erläuterung
quelle
C #,
1251178179 BytesProbieren Sie es auf .NET Fiddle
36 Bytes abgespielt dank Raznagul
quelle
Array.IndexOf
. Es gibt jedoch mehrere Möglichkeiten, die Antwort zuforeach
verkürzen : 1. Verwenden Sie eine -Loop anstelle derfor
-Loop. 2. Wennc
ist einList<string>
anstelle von könnenstring[]
Sie direkt verwendenc.IndexOf
. 3.c
Sie müssen es nicht zurückgeben, da es an Ort und Stelle geändert wurde.05AB1E , 16 Bytes
Probieren Sie es online!
quelle
Mathematica, 52 Bytes
aber es ist mein erster Beitrag hier, sei also bitte nett, wenn er falsch gezählt wird :)
Und ein Beispiel:
quelle
CJam , 18 Bytes
Probieren Sie es online!
quelle