Найти - Пользователи
Полная версия: Интересная задача про палиндром
Начало » Центр помощи » Интересная задача про палиндром
1 2
sergeek
zhut
Файла нет с ответом
Я имел ввиду файл со словами и (отдельно) ответ к задаче. Как я понял файл есть, ответа нет. Давай файл
zhut
Вот файл.
zhut
Файл с уже выбранными словами.
Alen
Проверял только для utf-8.

#!/usr/bin/env python
#-*-coding:utf8-*-
import sys
import itertools
import codecs
import re
def is_palindrome(string_to_check):
    reverse_string = string_to_check[::-1]
    return string_to_check ==  reverse_string
def load_words(words_file='file.txt'):
    with codecs.open(words_file, encoding='utf-8') as wf:
        list_words = wf.read()
    list_words = ''.join(re.sub('[/.!,;+()#&?=<>|%$-]', '', list_words))
    return list_words.lower().split()
def combinator_words(list_words):
    for current_stage in range(len(list_words),1,-1):
        iter = itertools.combinations(list_words,(current_stage))
        while True:
            try:
                current_mutation = iter.next()
            except StopIteration:
               break
            string = ''.join(current_mutation)
            if is_palindrome(string): return ' '.join(current_mutation)
if __name__ == '__main__':
    list_words = load_words(sys.argv[1]) # имя файла с исходным текстом
    print (combinator_words(list_words))
Master_Sergius
Ну тут явно надо через рекурсию делать. Что-то типа полного перебора з возвратом. Если будет время, можно будет позадрачиваться с этой задачей
zhut
Полным перебором не получится, слишком много времени нужно.
В принципе задачку я давно решил, кода под рукой сейчас нет поэтому показать не смогу. А решение было следующим: я написал 2 функции 1 добавляла левую часть палиндрома 2-я правую часть. Слова брались из условия что для левой части
s1==s2[::-1][0:len(s1)]
для правой
s1[::-1]==s2[0:len(s1)]
. Создавались два списка вариантов левой и правой части к которым прибавлялось слово и проверялось условие. После почти суток работы программы получил палиндром длиной 1344 буквы.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB