Bem-vindo ao seu primeiro dia na PPCG Inc. Como nosso mais novo classificador assistente de documentos juniores, você é responsável por garantir que todos os documentos que lhe enviamos sejam arquivados em ordem alfabética. É tão fácil que um macaco pode fazer isso. Metaforicamente falando, como contratamos um macaco para fazê-lo. Adivinha? Acontece que os macacos não entendem nosso alfabeto. De qualquer forma, não há tempo para consertar a bagunça que existe agora, então tente não piorar a situação, ok? Então chegue lá! Se você sentir fome, há bananas perto do bebedouro. Boa sorte!
Descrição do trabalho
Entrada
- Você receberá uma lista de cadeias (o arquivo morto) e uma cadeia que precisa ser adicionada a essa lista (o documento)
- Todas as strings conterão apenas letras maiúsculas, minúsculas e espaços
- As strings sempre começam e terminam com uma letra
Tarefa
Determine a posição de destino do documento: a posição que ele deve receber no arquivo morto. A posição de destino pode ser determinada da seguinte maneira:
- Para cada posição:
- Contar a quantidade de seqüências de caracteres no arquivo morto antes dessa posição, em ordem alfabética antes do documento
- Contar a quantidade de seqüências de caracteres no arquivo morto depois dessa posição que estão em ordem alfabética após o documento
- Defina a pontuação da posição como a soma das duas contagens acima
- A posição de destino do documento é a posição com a pontuação mais alta
- Em caso de empate, todas as posições com a pontuação mais alta são igualmente válidas como posição de destino. Apenas um precisa ser selecionado.
Ao classificar:
- Letras maiúsculas e minúsculas são equivalentes
- Os espaços vêm antes das letras
Resultado
- O arquivo com o documento adicionado a ele de qualquer forma
OU
- A posição de destino do documento, em um índice com base em 0 ou em 1
Avaliação de emprego
Menos bytes ganha!
Exemplo de E / S
Archive:
Applebuck Season
Friendship is Magic
The Ticket Master
Griffon the BrushOff
Boast Busters
Bridle Gossip
Document: Dragonshy
Position scores (0-based index):
0: 0 + 3 = 3
1: 1 + 3 = 4
2: 1 + 2 = 3
3: 1 + 1 = 2
4: 1 + 0 = 1
5: 2 + 0 = 2
6: 3 + 0 = 3
Target position: 1
Respostas:
JavaScript (ES6), 81 bytes
Ungolfed:
Editar: salvou muitos bytes graças a @ user81655.
fonte
indexOf
variável de resultado definida durante o mapa também seria mais curta.Pitão,
4038 bytesCréditos ao @Katenkyo por me ensinar isso
A xnor B
basicamenteA==B
. (A xor B
é tambémA!=B
)Experimente online!
Como funciona:
Soma ao XNOR se a entrada é menor que o documento e se o índice da entrada é menor que o índice do documento.
Ele encontra a posição em que essa soma é máxima e depois a gera.
fonte
Python 3,
135167 bytesfonte
Ruby, 97 bytes
Função anônima, retorna a posição de destino.
Ao realmente inserir no arquivo morto, 110 bytes :
fonte
Pitão,
54524745 bytesA entrada esperada é uma lista, o primeiro elemento é uma lista de cadeias (arquivo morto), o segundo elemento é uma cadeia (documento)
Teste aqui
fonte
0
que se eu estou lendo o seu código corretamente você pode economizar espaço["Applebuck Season","Friendship is Magic","The Ticket Master","Griffon the BrushOff","Boast Busters","Bridle Gossip"]\n "Dragonshy"
como entrada e usar emE
vez de@Q0
e@Q1
pode economizar quatro bytes.AQ
vez deJ@Q0K@Q1
.MATL , 32 bytes
Input é uma matriz de células de seqüências de caracteres (várias sequências separadas por espaços e colocadas entre chaves) para o arquivo morto e uma sequência para o documento. A saída é baseada em 1. Em caso de empate, a primeira posição é retornada.
Experimente online!
Explicação
fonte