Jesteś szefem kuchni i uwielbiasz gotować z przyprawami, ale ostatnio lubisz porządkować przyprawy na podstawie częstotliwości ich używania. Ale nie masz czasu na zapisywanie, kiedy ostatnio używałeś swojej przyprawy. Po prostu zamieniasz i przenosisz przyprawy, a to wydaje się załatwić sprawę.
Ale oczywiście jesteś szefem kuchni, a to oznacza, że masz ze sobą kucharzy. Postanawiasz powiedzieć im proste zasady zaangażowania w swoje przyprawy.
Jeśli ostatnio używałeś przyprawy, przesuń ją w górę w stojaku na przyprawy
Jeśli w ogóle nie użyłeś żadnych przypraw, np.
[]
Pustej listy ruchów, nie wpłynie to na listę przypraw.Możesz włożyć dowolną przyprawę do mojego uchwytu na przyprawy, ale jeśli ją wykorzystasz, koniecznie ją przenieś.
Lista może zawierać wszystko. Ale ponieważ to przyprawy, nad którymi pracujemy. Preferowane jest stosowanie nazw przypraw.
Przyprawy powinny być unikalne. Zbyt wiele takich samych przypraw psuje bulion ... lub jak to się mówi
Obowiązują normalne zasady gry w golfa.
Przykład wielokrotnego użycia Oregano.
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
Zadanie
Wprowadź listę przypraw i listę użytych przypraw, a następnie wyślij ostateczną listę.
Przykład
Wkład
[pepper, paprika, salt, cumin, oregano], [oregano, cumin, cumin, salt, salt, salt]
Wydajność
[salt, pepper, paprika, cumin, oregano]
Jak to wygląda
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
Wkład
[pepper, paprika, salt, cumin, oregano], [salt, salt, salt, salt, salt, salt, salt, salt, salt, salt, salt, salt, oregano]
Wydajność
[salt, pepper, paprika, oregano, cumin]
Odpowiedzi:
Łuska ,
1514 bajtówDane wejściowe to listy ciągów (działa również na innych rodzajach list). Wypróbuj online!
-1 bajt dzięki H.PWiz
Wyjaśnienie
Muszę powtarzać w
x
nieskończoność, ponieważ w przeciwnym razie lista straci swój ostatni element, gdy użyjemy najwyższej przyprawy. Wystarczy dodać końcową wartość 1, ale powtórzenie zajmuje mniej bajtów. Lepszym sposobem byłoby obrócenie listy zamiast upuszczania jej pierwszego elementu, ale Husk nie ma do tego wbudowanej funkcji.źródło
Σm
jestṁ
na jeden bajt.Haskell , 48 bajtów
foldl(?)
jest anonimową funkcją pobierającą dwa argumenty listy i zwracającą listę ze wszystkimi elementami tego samego (Eq
-porównywalnego) typu.Użyj jako
foldl(?)["pepper", "paprika", "salt", "cumin", "oregano"]["oregano", "cumin", "cumin", "salt", "salt", "salt"]
.Wypróbuj online!
foldl(?) s m
zaczyna się od listy (stojak na przyprawy)s
i łączy go z każdym elementem (przyprawą)m
w kolejności za pomocą operatora?
.s?n
używa przyprawyn
z stojaka na przyprawys
i zwraca wynikowy stojak na przyprawy.s
ma co najmniej dwa elementy,?
sprawdza, czy drugi jest równyn
, a jeśli tak, przełącza pierwsze dwa elementy. Jeśli nie jest równy,?
pierwszy element pozostaje stały, a reszta powtarza się.s
ma co najwyżej jeden element,?
zwraca go bez zmian.źródło
Szef kuchni ,
875843 bajtów-32 bajty dzięki Jonathanowi Allanowi , usuwając
the
tam, gdzie nie sądzę, że to zadziała.Szef kuchni nie ma typów sznurków, więc składniki są dodatnimi liczbami całkowitymi. 0 służy do oddzielenia listy początkowej od używanych składników i zakończenia listy używanych składników. Zobacz link do TIO na przykład.
Objaśnienie pseudokodu:
Wypróbuj online!
źródło
Did you pour the contents of the mixing bowl into the baking dish before serving?
który całkowicie brzmi jak komentarz, który przejdzie do gotowania SE, a nie tutaj: P lol (również bardzo dziwne pytanie dotyczące gotowania, jeśli zapytasz mnie: P)JavaScript, 61 bajtów
Format wejściowy:
Wydajność:
Pokaż fragment kodu
źródło
Python 2 ,
727169 bajtówNowa odpowiedź w duchu mojej pierwotnej próby.
Wypróbuj online!
Inne rozwiązanie:
Python 2 , 69 bajtów
Wypróbuj online!
źródło
print(r)
->print r
?Python 2 , 80 bajtów
Wypróbuj online!
źródło
r[i-1:i+1]
.return
przezprint
może zapisać kolejny bajt .Java 8,
878676 bajtówPobiera dwa dane wejściowe
ArrayList<String>
i modyfikuje pierwszą listę zamiast zwracać nową, aby zapisać bajty.-10 bajtów dzięki @Nevay .
Wyjaśnienie:
Wypróbuj tutaj.
źródło
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 bajtówWypróbuj online!
Wyjaśnienie
źródło
C #,
1251178179 bajtówWypróbuj na .NET Fiddle
grał w golfa z 36 bajtów dzięki raznagul
źródło
Array.IndexOf
. Istnieje jednak kilka sposobów na skrócenie odpowiedzi: 1. Użyjforeach
pętli zamiastfor
pętli. 2. Jeślic
toList<string>
zamiaststring[]
można korzystać bezpośrednioc.IndexOf
. 3. Poc
modyfikacji w miejscu nie trzeba go zwracać.05AB1E , 16 bajtów
Wypróbuj online!
źródło
Mathematica, 52 bajty
ale to jest mój pierwszy post tutaj, więc proszę bądź uprzejmy, jeśli został nieprawidłowo policzony :)
I przykład:
źródło
CJam , 18 bajtów
Wypróbuj online!
źródło