Você recebe uma lista de duas tuplas de números inteiros positivos, no formato:
a1 b1, a2 b2, ..., an bn
Em outras palavras, as duas tuplas são separadas por vírgula e os números inteiros em cada tupla são separados por espaço. Todos os a
números estão em ordem estritamente crescente, assim como os b
s. Seu objetivo é "preencher as lacunas". O que se entende por isso é o seguinte:
- Se a i +1 == a i + 1 , não faça nada.
- Caso contrário, se a i +1 <a i + 1 , você inserirá as tuplas na sequência da seguinte maneira: a i b i , a i +1 b i + 1 , a i +2 b i + 1 , ..., a i + 1 -1 b i + 1 , a i + 1 b i + 1 .
Em outras palavras, se houver uma "lacuna" em a i , você inserirá mais na lista com os b
s inseridos como b i + 1 (o final da lacuna).
Exemplo :
Entrada: 6 125, 7 170, 10 185
Resultado: 6 125, 7 170, 8 185, 9 185, 10 185
Pontuação : a pontuação da submissão é o número de bytes necessários para construir um programa que, quando recebe uma string como descrito acima, gera no mesmo formato a lista "cheia" de tuplas.
Menor pontuação ganha!
a1 b1, a2 b2, a3 b3
o único par que aciona uma inserção estáa1 b1, a3 b3
exigindo uma inserção dea2 b3
, mas onde deve ser inserido?Respostas:
Pitão,
3130 bytes1 byte graças a Jakube.
No nível alto, para cada número no intervalo dos a's, a lista é filtrada por a's maiores que esse número, então o b da primeira tupla é usado como o b.
Demonstração.
fonte
CJam,
42413938 bytesExperimente on-line no intérprete CJam .
fonte
Python 2,
192180171 bytesInfelizmente, são necessários uma tonelada de bytes para analisar a entrada e formatar a saída. Além disso, graças ao Sp3000 por dar um chute no meu cérebro :)
fonte
Python 3.5.0b1 +, 123 bytes
Analisar a entrada foi uma dor, então eu a ignorei e a analisei como está. Isso significa que
é analisado como
daí a splat na formatação da string.
fonte
(a,*b)
eu teria que fazer((a,)+b)
ou(a,b[0])
. Versões mais antigas do Python dariam aSyntaxError
.JavaScript ( ES6 ), 97
103Achando a redação da pergunta difícil de entender, baseiei meu trabalho no exemplo.
Primeira tentativa, poderia haver uma maneira mais curta, com apenas 1 divisão.Digitalizando a sequência de entrada em uma única passagem usando substituir..
fonte
Haskell, 152 bytes
Como funciona
p
é uma função auxiliar de formatação de string simples:(%)
é uma função de "pesquisa" para preencher espaços em branco:[head a..last$init a]
é o intervalo de números a ser usado: do primeiro inteiro analisado até o penúltimo inteiro analisado. (0+
Isso ajuda o verificador de tipos a inferir que todo o programa lida comNum
valores; caso contrárioread
, não sabe o que analisar.) Em seguida, nósconcatMap
(ou=<<
) nossas funções anteriores no intervalo para obter uma string grande. É o queg
faz:Finalmente há
main
. É da formainteract$s
, então tudo o que importa é a funçãos :: String -> String
que transforma stdin em stdout .Primeiro, para ler a entrada, dividimos em palavras:
Então nós
concatMap
a funçãomap(read.fst).lex
sobre esta lista. Por uma palavra, isso faz:Então, para uma lista de palavras, você recebe
concat [[6], [125], [7], ...] == [6, 125, 7...]
, qual é a lista que queremos passarg
. Finalmente, nós,drop
o líder", "
da cadeia,g
nos dá.fonte
CJam, 34 bytes
Comecei com a resposta de Dennis, mas finalmente ela se tornou nada parecido com o original.
Experimente online.
fonte
Perl, 67 bytes
(Código de 66 caracteres + opção de linha de comando de 1 caractere)
Exemplo de execução:
Explicação: A abordagem geral é construir um regex que seja capaz de olhar para o próximo token para determinar se ele aumenta em um (o regex é um lixo na aritmética, portanto, adicionamos uma execução perl para fazer a adição e, em seguida, procuramos por isso). Caso contrário, substituímos essa correspondência pelo texto original, mais o novo token pelo aumento do índice. Em seguida, repetimos isso várias vezes na entrada até que ela não mude.
Para a explicação abaixo, uma 'seção' é o valor separado por vírgula e os 'tokens' são os valores separados por espaço nele.
fonte
C #, 174 bytes
Recuado para maior clareza:
fonte
Bash + coreutils, 87
Saída de teste:
fonte
Python 3, 232 bytes
Não realmente que curto, mas ele usa um método diferente para a solução Python já publicado
fonte
Java, 229 bytes
Eu acho que eu whittled este para baixo tanto quanto eu puder. Eu estaria interessado em ver se existe uma abordagem melhor que leve a uma resposta Java mais curta:
Formatado:
fonte