Эквивалент Java IndexOf () в схеме? - PullRequest
0 голосов
/ 19 декабря 2009

Я разрабатываю небольшую программу на Scheme, но я застрял. Есть ли что-то похожее на Java indexOf (), которое я мог бы использовать в Scheme?

Ответы [ 5 ]

1 голос
/ 19 декабря 2009

Предполагая, что вы пытаетесь искать в строках (и это не задание, предназначенное для помощи в рекурсии), вы можете попробовать функции здесь:

http://okmij.org/ftp/Scheme/util.html

1 голос
/ 19 декабря 2009

Может быть, но, как правило, профессора хотят, чтобы вы написали свои собственные.

Вот код псевдо в стиле Си, так как я не хочу вспоминать синтаксис.

int indexOf(element, list, i)
{
    if car(list) == element then
        return i+1;
    else
        indexOf(element, cdr(list), i+1);
}

Обратите внимание, что для его вызова требуется передать 0 для i (вы можете написать обертку, если хотите), и что это индексация на основе 1, измените возвращаемое значение на i, если вы хотите индексацию на основе 0

0 голосов
/ 31 декабря 2009

Список поиска (довольно безопасно):

(define indexOf
  (lambda (element lst)
    (indexOfHelper element lst 0)))

(define indexOfHelper
  (lambda (e l i)
    (cond
      [(null? l) -1]
      [(equal? e (car l)) i]
      [else (indexOfHelper e (cdr l) (+ i 1))])))
0 голосов
/ 20 декабря 2009

Например, в PLT-Scheme способ конвертировать строку в список, используя string-> list, а затем работать со списком одним из многих доступных методов. Когда закончите, преобразуйте список обратно в строку.

0 голосов
/ 19 декабря 2009

Из вашего вопроса не ясно, какую реализацию Схемы вы используете.

Если это схема PLT, вы, вероятно, ищете что-то вроде "regexp-match-позиции".

(car (car (regexp-match-positions (regexp-quote "zip") "zapzipdingzip")))

=>

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