Vous êtes un chef et vous aimez cuisiner avec vos épices, mais récemment vous avez pris le goût d'organiser vos épices en fonction de la fréquence à laquelle vous les utilisez. Mais vous n'avez pas le temps d'écrire quand vous avez utilisé votre épice pour la dernière fois. Simplement, vous échangez et déplacez les épices, et cela semble faire l'affaire.
Mais bien sûr, vous êtes un chef et cela signifie que vous avez des cuisiniers avec vous. Vous décidez de leur dire les règles simples d'engagement avec vos épices.
Si vous avez récemment utilisé une épice, déplacez-la vers le haut dans le support à épices
Si vous n'avez utilisé aucune épice, par exemple
[]
une liste de mouvements vide, la liste d'épices n'est pas affectée.Vous pouvez mettre n'importe quelle épice dans mon porte-épices, mais si vous l'utilisez, assurez-vous de la déplacer.
La liste peut contenir n'importe quoi. Mais parce que ce sont des épices avec lesquelles nous travaillons. Il est préférable d'utiliser des noms d'épices.
Les épices doivent être uniques. Trop des mêmes épices gâchent le bouillon ... ou cependant ce dicton va
Les règles normales du code-golf s'appliquent.
Exemple d'origan utilisé encore et encore.
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
Tâche
Saisissez une liste d'épices et une liste des épices utilisées, puis affichez la liste finale.
Exemple
Contribution
[pepper, paprika, salt, cumin, oregano], [oregano, cumin, cumin, salt, salt, salt]
Sortie
[salt, pepper, paprika, cumin, oregano]
À quoi cela ressemble
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
Contribution
[pepper, paprika, salt, cumin, oregano], [salt, salt, salt, salt, salt, salt, salt, salt, salt, salt, salt, salt, oregano]
Sortie
[salt, pepper, paprika, oregano, cumin]
Réponses:
Coque ,
1514 octetsLes entrées sont des listes de chaînes (cela fonctionne également sur d'autres types de listes). Essayez-le en ligne!
-1 octet grâce à H.PWiz
Explication
Je dois répéter à l'
x
infini, car sinon la liste perdrait son dernier élément lorsque nous utilisons l'épice la plus haute. Il suffirait d'ajouter un 1 de fin, mais la répétition prend moins d'octets. Une meilleure façon serait de faire pivoter la liste au lieu de supprimer son premier élément, mais Husk n'a pas de fonction intégrée pour cela.la source
Σm
estṁ
pour un octet.Haskell , 48 octets
foldl(?)
est une fonction anonyme prenant deux arguments de liste et renvoyant une liste, avec tous les éléments du même type (Eq
-comparable).Utiliser comme
foldl(?)["pepper", "paprika", "salt", "cumin", "oregano"]["oregano", "cumin", "cumin", "salt", "salt", "salt"]
.Essayez-le en ligne!
foldl(?) s m
commence par la liste (étagère à épices)s
et la combine avec chaque élément (épice)m
dans l'ordre, à l'aide de l'opérateur?
.s?n
utilise l'épicen
du support à épicess
et renvoie le support à épices résultant.s
a au moins deux éléments,?
vérifie si le second est égal àn
, et si c'est le cas, change les deux premiers éléments. S'il n'est pas égal,?
garde le premier élément fixe et revient sur le reste.s
a au plus un élément, le?
renvoie inchangé.la source
Chef ,
875843 octets-32 octets grâce à Jonathan Allan en supprimant
the
où je ne pense pas que cela fonctionnera.Le chef n'a aucun type de chaîne, donc les ingrédients sont des entiers positifs. 0 est utilisé pour séparer la liste de départ des ingrédients utilisés et pour terminer la liste des ingrédients utilisés. Voir le lien TIO pour un exemple.
Explication du pseudocode:
Essayez-le en ligne!
la source
Did you pour the contents of the mixing bowl into the baking dish before serving?
qui ressemble complètement à un commentaire qui irait sur la cuisine SE et non ici: P lol (aussi une question très étrange pour la cuisine si vous me demandez: P)JavaScript, 61 octets
Format d'entrée:
Sortie:
Afficher l'extrait de code
la source
Python 2 ,
727169 octetsNouvelle réponse, dans l'esprit de ma tentative initiale.
Essayez-le en ligne!
Autre solution:
Python 2 , 69 octets
Essayez-le en ligne!
la source
print(r)
->print r
?Python 2 , 80 octets
Essayez-le en ligne!
la source
r[i-1:i+1]
.return
parprint
peut enregistrer un autre octet .Java 8,
878676 octetsPrend deux entrées
ArrayList<String>
et modifie la première liste au lieu d'en renvoyer une nouvelle pour enregistrer les octets.-10 octets grâce à @Nevay .
Explication:
Essayez-le ici.
la source
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 octetsEssayez-le en ligne!
Explication
la source
C #,
1251178179 octetsEssayez-le sur .NET Fiddle
joué au golf 36 octets grâce à raznagul
la source
Array.IndexOf
. Mais il existe plusieurs façons de raccourcir la réponse: 1. Utilisez unforeach
-loop au lieu dufor
-loop. 2. Sic
est unList<string>
au lieu destring[]
vous pouvez utiliser directementc.IndexOf
. 3. Comme ilc
est modifié sur place, vous n'avez pas besoin de le retourner.05AB1E , 16 octets
Essayez-le en ligne!
la source
Mathematica, 52 octets
mais c'est mon premier post ici, alors soyez gentil s'il est mal compté :)
Et un exemple:
la source
CJam , 18 octets
Essayez-le en ligne!
la source