Сдвиг списка N раз с использованием пролога []: - Упражнение 3.6 «Программирование пролога для искусственного интеллекта» Ивана Бтрако

Я пропустил здесь самое простое решение:

str.replaceFirst(".*'(.*)\".*", "$1");

Это решение, безусловно, самое короткое, однако оно имеет некоторые недостатки:

  • строка выглядит по-другому, вы получите всю строку обратно без предупреждения.
  • Это не очень эффективно, так как используемое regex компилируется для каждого использования.

Я бы не используйте его, за исключением быстрого взлома, или если я действительно буду уверен в том, что формат ввода.

1
задан repeat 6 March 2019 в 20:47
поделиться

1 ответ

Он работает, только если H окружен [H]

Как я отмечал до , conc/3 действительно является стандартным предикатом append / 3 , который берет два списка и создает третий список.

append/3 говорит:

append (? List1,? List2,? List1AndList2)
List1AndList2 - это объединение List1 и List2

Один термин не является списком, например 1 не является списком, но [1] является списком.
Список начинается с [ и заканчивается ].

Это пустой список: []

Список может иметь один элемент: [a]

или более одного элемента: [a,b] и так далее. Обратите внимание, что они всегда имеют квадратные скобки.

Когда вы используете conc/3 или append/3, все три значения должны быть списком, поэтому даже если вы хотите объединить или добавить один элемент, вы должны сначала преобразовать его в список, заключив его в [] для превратить это в список. Таким образом, отдельный элемент 1 преобразуется в список как [1].

0
ответ дан Guy Coder 6 March 2019 в 20:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: