الطريقة الأكثر فعالية لمعالجة الوسائط من سطر الأوامر في تدوين البادئة

StackOverflow https://stackoverflow.com/questions/1991672

سؤال

واجباتنا المنزلية هي كتابة نص روبي يحسب مجموعة فرعية من قائمة الكلمات اعتمادًا على التعبير.

العمليات الثنائية العادية

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

مكالمة صالحة ستكون مثل

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

تعني المكالمة الأولى إنشاء قائمة كلمات جديدة تحتوي جميع الكلمات على واحدة على الأقل "A" و "C". إذن سؤالي هو كيف يمكنني معالجة الجثث بطريقة فعالة؟ ربما تكرار؟ انا عالق...

شكرا لك مقدما.

هل كانت مفيدة؟

المحلول

يبدو وكأنه grammer مع تدوين البادئة. المكدس هو بالفعل صديقك ، وأسهل مكدس لاستخدامه هو مكدس الاتصال. على سبيل المثال ، بالنظر إلى هذه القواعد:

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

هذا هو الرمز لتقييمه:

#!/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

على الرغم من أن هذا روبي ، إلا أنه قريب بما فيه الكفاية من الرمز الزائف. لقد وضعت عوائد صريحة ، على الرغم من أن روبي لا يتطلبها ، لأنه قد يكون أكثر وضوحًا لشخص لا يعرف روبي.

نصائح أخرى

استخدم كومة. سيكون حجم الحد الأقصى عدد الحجج.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top