Frage

unsere Hausaufgaben ist es, ein Ruby-Skript zu schreiben, die eine Teilmenge der Wortliste auf die Expression in Abhängigkeit berechnen.

reguläre Binär-Operationen

&& And operator
|| Or operator
++ Concatenate operator
! Negation operator

Ein gültiger Anruf wäre wie

./eval.rb wordlist && a c
or
./eval.rb wordlist && || a b c

Erster Aufruf Mittel erzeugen eine neue Wortliste, die alle Wörter mindestens eine haben ‚a‘ und ‚c‘. Also meine Frage ist, wie verarbeite ich die arguemnts in einem efficent Weg? Vielleicht RECURSIV? Ich bin fest ...

Vielen Dank im Voraus.

War es hilfreich?

Lösung

Sieht aus wie ein grammer mit Präfixnotation. Ein Stapel ist in der Tat Ihr Freund, und der einfachste Stapel zu verwenden ist der Call-Stack. Zum Beispiel dieser Grammatik gegeben:

expression ::= number | operand number number
operand ::= '+' | '-'

Dies ist der Code, es zu bewerten:

#!/usr/bin/ruby1.8

@tokens = ['*', 2, '+', 3, 4]

def evaluate
  token = @tokens.shift    # Remove first token from @tokens
  case token
  when '*'
    return evaluate * evaluate
  when '+'
    return evaluate + evaluate
  else
    return token
  end
end

puts evaluate    # => 14

Obwohl dieses Ruby ist, dann ist es nahe genug, um Pseudo-Code. Ich habe in explizite Renditen setzen, obwohl Rubin sie nicht verlangen, weil es klarer zu jemandem sein kann, die sich Ruby nicht kennen.

Andere Tipps

Verwenden Sie einen Stapel. Die maximale Größe würde die Anzahl der Argumente sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top