Sou uma pessoa preguiçosa, mas eficiente, como muitos de vocês provavelmente também. Então, sempre que estou fazendo algo, quero fazê-lo com o mínimo esforço. É por isso que estou pedindo que você resolva esse problema para mim.
O que tenho aqui é um tipo de documento. Em cada linha deste documento há uma única palavra ou frase curta. O documento não está classificado, mas tudo bem, eu sei onde está tudo. Eu poderia usar alguma ajuda para encontrar as coisas mais rapidamente e, para isso, preciso de uma segunda lista. É aqui que você entra. Para cada linha de texto neste documento, preciso de algum identificador. Algo que eu posso CTRL+ F, mas não pode demorar mais do que o absolutamente necessário para obter esse resultado.
Exemplo de entrada:
(blank)
an apple
spiderman 3
7pm pick up laundry
tequila
fake mustache
dishes on wednesday
banana
biscuits
(blank)
Exemplo de saída:
ap,3,7,q,f,w,ba,bi
Vou me repetir aqui, para ter certeza de que estamos na mesma página:
- A entrada é um arquivo de texto não formatado que contém uma lista de itens, separados por quebras de linha. Eu tenho aqui no formato .txt, chamado "STUFF.TXT"
- A primeira e a última linha do documento estão vazias. Todas as outras linhas contêm uma entrada de comprimento> 0.
- O arquivo contém apenas caracteres alfanuméricos (todos minúsculos), espaços e quebras de linha.
- A saída desejada é uma lista de identificadores, na mesma ordem que a minha lista original.
- Não quero mais de uma palavra de pesquisa para cada item da lista. Se houver várias respostas, escolha uma, não ligo para qual. No exemplo acima, escolhi 'ap' para
an apple
, mas você pode ter escolhido 'n', 'a', 'pp', 'pl' ou 'le'. Não é 'um', porque está dentrobanana
. - Posso garantir que o arquivo nunca está vazio e nunca contém duplicatas.
- Se necessário , você pode corresponder no terminador de linha. Mas esse é o último recurso a ser usado apenas quando não há outra maneira de distinguir entre os itens da lista (por exemplo, 'maçã' e 'maçãs').
As brechas padrão não são permitidas. Além disso, este é um código de golfe, portanto o código mais curto vence.
Mais um exemplo:
(blank)
ban
any
king
bean
yen
rake
raki
bar
(blank)
E sua saída:
ban,ny,g,be,ye,ke,aki,ar
Respostas:
Pitão, 39 bytes
O Brute força todos os subconjuntos de cada string em um comprimento cada vez maior e verifica se essa string ocorre dentro de qualquer outra. Se isso não funcionar, ele fará o mesmo, exceto em todos os subconjuntos de
\nstring\n
.fonte
.:
com o primeiro tipo string e o segundo tipo int não é um erro. Tente usar Pyth do repo: github.com/isaacg1/pyth