Реверсирование текста определенным образом - PullRequest
1 голос
/ 28 сентября 2019

Я пытаюсь изменить алгоритм кубика Рубика (вам не нужно ничего знать о кубике Рубика, не беспокойтесь).Например, RUR 'U'

Правило обратного хода - записать его в обратном порядке: U 'R' UR Затем примените оператор '(простой).Теперь это: URU 'R'

Так что у каждой буквы с 'сейчас нет таковой, а у тех, которые сейчас не имеют.

Другой пример: (R' FR F') -> (F' RF R ') -> (FR' F 'R)

Я попытался изменить текст с помощью TEXTJOIN (), это немного странно, но это делает работу, ноприменение этого простого оператора - это нечто другое.

EDIT : Кроме того, для алгоритмов со скобками, например: (RUR 'U') (R 'FR F'), скобки можно игнорироватьесли необходимо.

Ответы [ 2 ]

3 голосов
/ 28 сентября 2019

Вот альтернативное решение, также использующее TEXTJOIN.Предполагается, что в строке 4 элемента - вы можете отрегулировать константу встроенного массива по необходимости, см. {3,2,1,0}.

=SUBSTITUTE(TEXTJOIN(" ",TRUE,TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",255)),1+255*{3,2,1,0},255))&"'"),"''","")

Результат:

enter image description here

1 голос
/ 28 сентября 2019

Используйте эту версию массива TEXTJOIN:

=TEXTJOIN(" ",TRUE,IF(RIGHT(TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",99)),((LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1)-ROW($XFD$1:INDEX($XFD:$XFD,LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1)))*99+1,99)))="'",LEFT(TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",99)),((LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1)-ROW($XFD$1:INDEX($XFD:$XFD,LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1)))*99+1,99))),TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",99)),((LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1)-ROW($XFD$1:INDEX($XFD:$XFD,LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1)))*99+1,99))&"'"))

Будучи формулой массива, она должна быть подтверждена с помощью Ctrl-Shift-Enter вместо Enter при выходе из режима редактирования.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...