Você é um chef e adora cozinhar com seus temperos, mas recentemente gostou de organizar seus temperos com base na frequência com que os usa. Mas você não tem tempo para escrever quando usou seu tempero pela última vez. Simplesmente, você troca e move especiarias, e isso parece funcionar.
Mas é claro que você é um chef e isso significa que você tem alguns cozinheiros com você. Você decide dizer a eles as regras simples de engajamento com suas especiarias.
Se você usou recentemente um tempero, mova-o para cima um no rack de temperos
Se você não usou nenhum tempero, por exemplo
[]
, lista de movimentos vazia, a lista de temperos não é afetada.Você pode colocar qualquer tempero no meu porta temperos, mas se você usá-lo, certifique-se de movê-lo.
A lista pode conter qualquer coisa. Mas, por serem especiarias com as quais estamos trabalhando. É preferível que você use nomes de especiarias.
Especiarias devem ser únicas. Muitas das mesmas especiarias estragam o caldo ... ou, no entanto, esse ditado
Aplicam-se regras normais de código-golfe.
Exemplo de orégano sendo usado repetidamente.
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
Tarefa
Insira uma lista de especiarias e uma lista de quais especiarias foram usadas e depois produza a lista final.
Exemplo
Entrada
[pepper, paprika, salt, cumin, oregano], [oregano, cumin, cumin, salt, salt, salt]
Saída
[salt, pepper, paprika, cumin, oregano]
Como isso parece
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
Entrada
[pepper, paprika, salt, cumin, oregano], [salt, salt, salt, salt, salt, salt, salt, salt, salt, salt, salt, salt, oregano]
Saída
[salt, pepper, paprika, oregano, cumin]
Respostas:
Casca ,
1514 bytesEntradas são listas de strings (também funcionam em outros tipos de listas). Experimente online!
-1 byte graças a H.PWiz
Explicação
Eu tenho que repetir
x
infinitamente, pois, caso contrário, a lista perderia seu último elemento quando usarmos o tempero mais alto. Seria o suficiente adicionar um 1 à direita, mas a repetição leva menos bytes. Uma maneira melhor seria girar a lista em vez de largar o primeiro elemento, mas a Husk não tem built-in para isso.fonte
Σm
éṁ
para um byte.Haskell , 48 bytes
foldl(?)
é uma função anônima que recebe dois argumentos da lista e retorna uma lista, com todos os elementos do mesmoEq
tipo ( -comparável).Use como
foldl(?)["pepper", "paprika", "salt", "cumin", "oregano"]["oregano", "cumin", "cumin", "salt", "salt", "salt"]
.Experimente online!
foldl(?) s m
começa com a lista (suporte para especiarias)s
e a combina com cada elemento (tempero) dem
ordem, usando o operador?
.s?n
usa o temperon
do rack de tempeross
e retorna o rack de temperos resultante.s
tiver pelo menos dois elementos,?
verifica se o segundo é igual en
, se houver, alterna os dois primeiros. Se não for igual,?
mantém o primeiro elemento fixo e se repete no restante.s
tiver no máximo um elemento,?
ele retornará inalterado.fonte
Chef ,
875843 bytes-32 bytes graças a Jonathan Allan , removendo
the
onde eu não acho que funcionará.Chef não tem tipos de string, portanto os ingredientes são números inteiros positivos. 0 é usado para separar a lista inicial dos ingredientes usados e finalizar a lista de ingredientes usados. Veja o link do TIO para um exemplo.
Explicação do pseudocódigo:
Experimente online!
fonte
Did you pour the contents of the mixing bowl into the baking dish before serving?
que soa completamente como um comentário que iria sobre a SE cozinhar e não aqui: P lol (também uma pergunta muito estranha para cozinhar se você me perguntar: P)JavaScript, 61 bytes
Formato de entrada:
Saída:
Mostrar snippet de código
fonte
Python 2 ,
727169 bytesNova resposta, no espírito da minha tentativa original.
Experimente online!
Outra solução:
Python 2 , 69 bytes
Experimente online!
fonte
print(r)
->print r
?Python 2 , 80 bytes
Experimente online!
fonte
r[i-1:i+1]
.return
porprint
pode salvar outro byte .Java 8,
878676 bytesToma duas entradas como
ArrayList<String>
e modifica a primeira lista em vez de retornar uma nova para salvar bytes.-10 bytes graças a @Nevay .
Explicação:
Experimente aqui.
fonte
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 bytesExperimente online!
Explicação
fonte
C #,
1251178179 bytesExperimente no .NET Fiddle
jogou 36 bytes graças a raznagul
fonte
Array.IndexOf
. Mas existem várias maneiras de tornar a resposta mais curta: 1. Use umforeach
loop em vez dofor
loop. 2. Sec
é um emList<string>
vez destring[]
você pode usar diretamentec.IndexOf
. 3. Conformec
é modificado no local, você não precisa devolvê-lo.05AB1E , 16 bytes
Experimente online!
fonte
Mathematica, 52 bytes
mas é o meu primeiro post aqui, por favor, seja gentil se contado incorretamente :)
E um exemplo:
fonte
CJam , 18 bytes
Experimente online!
fonte