Soy una persona perezosa pero eficiente, como muchos de ustedes probablemente también lo sean. Entonces, cada vez que estoy haciendo algo quiero hacerlo con un mínimo esfuerzo. Es por eso que te pido que resuelvas este problema por mí.
Lo que tengo aquí es un tipo de documento. En cada línea de este documento hay una sola palabra o frase corta. El documento no está ordenado, pero está bien, sé dónde está todo. Podría necesitar ayuda para encontrar las cosas más rápido, y para eso necesito una segunda lista. Aquí es donde entras. Para cada línea de texto en este documento, necesito algún identificador. Algo que puedo CTRL+ F, pero no puede ser más de lo absolutamente necesario para obtener ese resultado.
Entrada de ejemplo:
(blank)
an apple
spiderman 3
7pm pick up laundry
tequila
fake mustache
dishes on wednesday
banana
biscuits
(blank)
Salida de ejemplo:
ap,3,7,q,f,w,ba,bi
Voy a repetirme aquí, para asegurarme de que estamos en la misma página:
- La entrada es un archivo de texto sin formato que contiene una lista de elementos, separados por saltos de línea. Lo tengo aquí en formato .txt, se llama "STUFF.TXT"
- La primera y la última línea del documento están vacías. Cada otra línea contiene una entrada de longitud> 0.
- El archivo contiene solo caracteres alfanuméricos (todo en minúsculas), espacios y saltos de línea.
- La salida deseada es una lista de identificadores, en el mismo orden que mi lista original.
- No quiero más de una palabra de búsqueda para cada elemento de la lista. Si hay varias respuestas, elija una, no me importa cuál. En el ejemplo anterior elegí 'ap' para
an apple
, pero podrías haber elegido 'n', 'a', 'pp', 'pl' o 'le'. No 'an', porque eso está adentrobanana
. - Les puedo asegurar que el archivo nunca está vacío y nunca contiene duplicados.
- Si es necesario , puede coincidir en el terminador de línea. Pero ese es un último recurso solo para usarse cuando no hay otra manera de distinguir entre los elementos de la lista (por ejemplo, 'manzana' y 'manzanas').
Las lagunas estándar no están permitidas. Además, este es el código de golf por lo que gana el código más corto.
Un ejemplo más:
(blank)
ban
any
king
bean
yen
rake
raki
bar
(blank)
Y su salida:
ban,ny,g,be,ye,ke,aki,ar
Respuestas:
Pyth, 39 bytes
Bruteforces todos los subconjuntos de cada cadena en longitud creciente y comprueba si esa cadena ocurre dentro de cualquier otra. Si eso no funciona, hará lo mismo excepto para todos los subconjuntos de
\nstring\n
.fuente
.:
con el primer tipo de cadena y el segundo tipo de int no es un error. Intente usar Pyth desde el repositorio: github.com/isaacg1/pyth