Dada a entrada de uma lista de fatias de uma sequência, produza a sequência original.
Cada fatia será fornecida como uma lista de comprimento 2, contendo a posição inicial da fatia (um número inteiro ≥0) e a própria fatia. Se o seu idioma não suportar matrizes de tipos arbitrários, você também pode considerá-lo como uma estrutura ou similar, ou simplesmente como uma sequência que consiste no número, um espaço e, em seguida, a fatia.
A ordem dos dois elementos de cada fatia é sua. Além disso, se você optar por usar a representação de fatias como uma matriz de comprimento 2, poderá receber a entrada como uma matriz bidimensional ou uma única matriz plana. Finalmente, o número inteiro que representa a posição pode ser indexado a zero ou indexado a um (todos os exemplos aqui são indexados a zero).
A entrada sempre será suficiente para determinar a sequência inteira até a posição mais alta fornecida. Ou seja, não haverá "buracos" ou "lacunas". Portanto, a saída não deve conter nenhum caractere final à direita ou à esquerda (além da nova linha opcional à direita). A entrada sempre será consistente e nenhuma fatia entrará em conflito entre si.
Como esse é o código-golfe , o código mais curto em bytes será vencedor.
Casos de teste:
In Out
-----------------------------------------------------------
[[2, "CG"], [0, "PP"], [1, "PC"]] | PPCG
[[0, "foobarbaz"]] | foobarbaz
[[0, "foobar"], [6, "baz"]] | foobarbaz
[[2, "ob"], [5, "rba"], [0, "fooba"], [8, "z"]] | foobarbaz
[[0, "fo"], [0, "fooba"], [0, "foobarbaz"]] | foobarbaz
Respostas:
Geléia,
109 bytesExperimente online!
Como funciona
fonte
Python 2, 49 bytes
Primeiro, alinha as cordas preenchendo seus deslocamentos com espaços (mostrados como sublinhados para maior clareza)
Então, usos
map
parazip
e tomar o máximo de cada coluna, que ignora os valores menores de espaços (o carácter de impressão menor) eNone
é onde algumas cordas eram muito curtos.Finalmente,
''.join
para uma string usando o[2::5]
truque.fonte
Perl, 25
Adicionado +2 para
-lp
Obtenha a entrada do STDIN, por exemplo
(Feche com ^ D ou ^ Z ou o que fechar STDIN no seu sistema)
slices.pl
:fonte
v0
salvaria dois bytes (porque você também poderia omitir o espaço antes dox
)? Edit: Hum, não, quando tentei, recebiCan't locate object method "x" via package "2"
(ou qualquer que seja o número na minha primeira linha) por algum motivo.JavaScript (ES6), 61 bytes
Editar: salvou 4 bytes graças a @ edc65.
fonte
Haskell, 57 bytes
Exemplo de uso:
Como funciona: crie pares
(index,letter)
para cada letra de cada fatia, concatene em uma única lista, remova duplicatas, classifique por índice, remova índices.fonte
MATL , 15 bytes
Funciona com a versão atual (13.0.0) do idioma / compilador.
A entrada é entre chaves e aspas simples. (Os colchetes no MATLAB / MATL definem matrizes de células , que são listas que podem ter conteúdo de tipos arbitrários e possivelmente diferentes.) Os casos de teste são:
Experimente online!
fonte
DUP , 14 bytes
Try it here.
Lambda anônimo. Uso:
NOTA: O DUP realmente não possui matrizes, portanto, espero que este formato de entrada esteja correto.
Explicação
Bem, a compreensão de cordas do DUP é ... interessante. As cadeias são armazenadas como uma série de variáveis numéricas, cada uma das quais contém um código da cadeia. Algo como
2"CG"
funciona empurrando 2 para a pilha e, em seguida, criando uma string com o índice iniciando em 2.Como esses índices são realmente variáveis, eles podem ser substituídos. É isso que a entrada realmente está fazendo: substituindo! Tente pressionar Stepo site do intérprete para ter uma ideia melhor disso. Depois disso, obtemos uma sequência sem fatias.
É aqui que a saída entra.
fonte
PHP, 146 caracteres
Nota: Avaliar a entrada do usuário é sempre uma boa ideia.
Golfe
Ungolfed
Você pode ver que estou escrevendo a entrada em uma matriz com a chave específica que cada caractere possui e, em seguida, produzindo tudo.
Testes
php unslice.php '[[0, "foobar"], [6, "baz"]]'
-> foobarbazphp unslice.php '[[2, "CG"], [0, "PP"], [1, "PC"]]'
-> PPCGphp shorten.php unslice.php
-> Script reduzido por 107 caracteres. : Dfonte
$a[$f]=$c;$f++;
Eu não sei PHP, mas isso não pode ser$a[$f++]=c;
?Sério, 48 bytes
Sério é muito ruim na manipulação de cordas.
Experimente online!
Explicação:
Mapa 1:
Mapa 2:
Mapa 3:
Mapa 4:
Em poucas palavras, este programa cria uma sequência com
n
espaços, onden
é o comprimento mínimo em que a sequência pode ser baseada na entrada. Ele determina o índice na sequência de resultados de cada caractere em cada fatia e define o caractere na sequência de resultados nesse índice para o caractere.fonte
Python, 91 bytes.
Guardado 1 byte graças a cat.
É um pouco longo. Vou jogar mais um pouco.
fonte
Python,
119115 bytesCasos de teste
fonte
CJam, 26 bytes
Experimente online! . Recebe entrada no formulário
[["CG"2]["PP"0]["PC"1]]
.Explicação:
fonte
R, 181 bytes
Com quebras de linha:
Funciona em R Gui (linha única uma, ou sourcing para a linha múltipla), mas não em ideone, por exemplo:
Nota sobre o método de entrada:
Eu suponho que eu cumpra essa parte da especificação com esse tipo de entrada, ela pode ser fornecida em várias linhas, isso não tem impacto desde que haja uma linha em branco para finalizar a entrada.
Eu acho que 2 caracteres podem ser salvos removendo o +1 e usando uma indexação baseada em 1, mas comecei com a entrada do desafio.
fonte
C, 110 bytes
Este programa pega a fatia após seu índice em uma linha de entrada cada.
Ungolfed:
Teste em ideone.com
fonte
Lua, 113 bytes
Este é provavelmente um dos códigos mais seguros que eu escrevi. A ideia é simples. O usuário digitará uma matriz formatada da seguinte forma:
{{1, "1"}, {3, "3"}, {2, "2"}}
e a tabela será classificada pelo primeiro índice e o segundo índice será impresso.fonte