А ну-ка, декларативисты!
Apr. 30th, 2017 12:21 amНа давно любимом сайте - очередная задачка:
Возьмем, скажем, строку "CABACB" - в ней между буквами А - один символ, между буквами В - два символа, а между буквами С - три. Если увеличивать количество разных букв, то без пробела/дефиса не обойтись. Например, для пяти букв вариантом ответа будет "ADAEC-DBCEB".
ACADECB-DBE
ADACEBDCB-E
ADAEC-DBCEB
AEABCDBEC-D
AEA-CDBECBD
AEA-DBCEBDC
BCDBECADA-E
B-DBECADACE
B-EBDACAEDC
CAEACDB-EBD
C-EBCDBAEAD
Требуется найти строку, в которой имеется по паре каждой буквы латинского алфавита и не более одного дополнительного символа, т. е. длиной 52 или 53 символа.
Раз они там так спрашивают, то надо, значит, писать программу. Как и положено программисту, я ленив и нетерпелив, поэтому меня хватило только на программу из пяти строк (190 байт), которая выдала результат секунд через 5, если не ошибаюсь (а если ошибаюсь, то через 10), но в таком виде, что пришлось писать еще одну программу, переводящую числа в буквы.
Внимание, вопрос: на каком языке я написал программу?
Ради интереса я попытался изменить программу, чтобы она нашла лексикографически первый из возможных ответов. Попытка искать по шаблону ABACBDECFGDHEI.F.G..H..I... пока к успеху не привела. По шаблону ABACBDECFGDHE..F.G..H... находится много, но буква, следующая после второго E, обычно ближе к концу алфавита.
Возьмем, скажем, строку "CABACB" - в ней между буквами А - один символ, между буквами В - два символа, а между буквами С - три. Если увеличивать количество разных букв, то без пробела/дефиса не обойтись. Например, для пяти букв вариантом ответа будет "ADAEC-DBCEB".
ACADECB-DBE
ADACEBDCB-E
ADAEC-DBCEB
AEABCDBEC-D
AEA-CDBECBD
AEA-DBCEBDC
BCDBECADA-E
B-DBECADACE
B-EBDACAEDC
CAEACDB-EBD
C-EBCDBAEAD
Требуется найти строку, в которой имеется по паре каждой буквы латинского алфавита и не более одного дополнительного символа, т. е. длиной 52 или 53 символа.
Раз они там так спрашивают, то надо, значит, писать программу. Как и положено программисту, я ленив и нетерпелив, поэтому меня хватило только на программу из пяти строк (190 байт), которая выдала результат секунд через 5, если не ошибаюсь (а если ошибаюсь, то через 10), но в таком виде, что пришлось писать еще одну программу, переводящую числа в буквы.
Внимание, вопрос: на каком языке я написал программу?
Ради интереса я попытался изменить программу, чтобы она нашла лексикографически первый из возможных ответов. Попытка искать по шаблону ABACBDECFGDHEI.F.G..H..I... пока к успеху не привела. По шаблону ABACBDECFGDHE..F.G..H... находится много, но буква, следующая после второго E, обычно ближе к концу алфавита.
no subject
Date: 2017-05-01 09:23 am (UTC)а слабо найти строку где минус посередине?
c 1-м мая!
no subject
Date: 2017-05-01 03:51 pm (UTC)Как минимум одна строка с минусом посередине в файле результатов у меня уже имеетсянет, обсчитался; приписать это условие заняло бы еще одну строку.А слабо найти решение, лексикографически как можно более близкое к началу списка решений (используя алфавит "A..Z-")?
no subject
Date: 2017-05-01 05:26 pm (UTC)