Задача кодирования: самая длинная подстрока, содержащаяся в двух строках
Да, классическая проблема LCS. При наличии двух или более строк найдите самую длинную общую подстроку в каждой строке.
Одно предостережение: никакого C#, C, C++, Javascript или любого другого Язык программирования на основе C[^], ни какой-либо язык на основе VB (VB, VB.NET, VBScript). Это отсекает большинство простых языков. Расправь крылья!
Ваше решение должно учитывать нулевые строки и строки, длина которых ограничена только доступным хранилищем.
Что я уже пробовал:
Мелатонин для джетлага, но он не работает.
Graeme_Grant снова получает Гернси за его выдающееся и, как я предполагаю, трудоемкое лечение проблемы прошлой недели. Шум.
Graeme_Grant
Спасибо, Крис. Но не совсем ... возиться во время просмотра фильма...
Итак, глядя на вашу ссылку, R отсутствует, но F# & amp; PowerShell в порядке ;)
Patrice T
Каким должен быть результат ? Только длина ? Подстрока ?
Graeme_Grant
"найти самую длинную общую подстроку" ... я предполагаю, что это общая подстрока...
Chris Maunder
Да.
Jon McKee
Perl считается основанным на C, а F# - нет? Это немного странно, ТБХ. Во всяком случае, Perl имеет меньше общего с C, чем F#. Кроме того, эта связь включает в себя B, который был предшественником C, который я нахожу озадачивающим.
Graeme_Grant
Я бы сдул пыль со своего С64, но Бейсик был запрещен...
Jon McKee
Он уточнил VB. Ничего не сказать о просто основной ;)
Graeme_Grant
Я посадил свой флаг с F# (второй раз я использовал его, кроме 3 недель назад - это была/есть крутая кривая обучения)... Однако впереди напряженная неделя, придется посмотреть, как все сложится и смогу ли я найти старый С64...
PIEBALDconsult
ВБ не пускают, реальный основной.
У меня есть VAX BASIC, HP BASIC и Turbo BASIC...
PIEBALDconsult
Ну, а как BCPL и B считаются C-подобными? Они пришли первыми! (И второе.)
PIEBALDconsult
Я думаю, что у меня есть Паскаль на одном из моих Альфасерверов. У меня есть лицензия. У меня также есть лицензия на COBOL...
Graeme_Grant
Это может помочь: Бесплатный Turbo Pascal для Windows 10[^]- не пробовали его мысли...
PIEBALDconsult
: кашель: победа 7: кашель:
Graeme_Grant
Удивительно, что вы можете найти с помощью Google, когда используете его... ;)
* Turbo Pascal для Windows 7[^] и
* Как запустить Turbo Pascal v7. 0 на Windows 7/8[^]
PIEBALDconsult
Если бы я захотел, то уже получил бы его. Раньше я использовал Turbo Pascal (и Turbo C), но теперь этого не делаю.
Graeme_Grant
ярмарка будит...
Graeme_Grant
Я нашел FreePascal online IDE пару часов назад, так как я никогда раньше не делал Pascal, я дал ему попробовать, и вы можете увидеть, что я сделал ниже. О, как же я соскучился по своей любимой IDE & the power of the .Чистые фреймворки!
PIEBALDconsult
Да, в свое время я любил Паскаль, особенно турбо, но как только я освоился с Си, я перестал его использовать. Я даже не могу читать свои программы на Паскале из колледжа.
Graeme_Grant
[неправильное место, поэтому переехал]
PIEBALDconsult
С другой стороны...
Turbo Pascal (5.5+) имеет ООП, а HP Pascal, вероятно, нет-я изучил "структуры данных" на VAX/DEC/HP Pascal еще в 80-х.
У меня есть рабочая реализация на C#, чтобы доказать алгоритм, который я разработал.
Но мне придется самому реализовать HashSet и словарь, и я не думаю, что сейчас мне это под силу.
Graeme_Grant
StrDict типа Паскаля ': массив массив string;'... Затем, чтобы использовать: 'var DictName: StrDict;' ? Но опять же, я только новичок в этом языке...
Моя [реализация Pascal] была основана на хэш-наборе как концепции, так и на реализации F# (которая была прототипирована за несколько минут в C#), которая фактически использует хэш-набор. ;)
Graeme_Grant
Кроме того, в Pascal отсутствуют многие языковые инструменты, найденные в dotnet Framework, поэтому вам также нужно будет реализовать их ... такие вещи, как сортировка, ручное удаление нулевых записей из разделенных строк, хэш-наборы и т. д...
PIEBALDconsult
Ну, если бы я знал, как получить доступ к .net из Pascal...: круто:
Graeme_Grant
Да, современные разработчики испорчены...
Graeme_Grant
Быстрый намек... делая версию Pascal, я обнаружил, что хэш-набор не требуется.
PIEBALDconsult
Мой алгоритм использует его. Если бы я мог быть уверен в 64 или менее строках, я бы использовал побитовые операторы вместо Int64.
PIEBALDconsult
Как насчет самой неправильной подстроки?..
Graeme_Grant
Разве это не будет просто самая длинная входная строка?
PIEBALDconsult
Полагаю, вы правы.