الطريقة الأكثر فعالية لمعالجة الوسائط من سطر الأوامر في تدوين البادئة
-
22-09-2019 - |
سؤال
واجباتنا المنزلية هي كتابة نص روبي يحسب مجموعة فرعية من قائمة الكلمات اعتمادًا على التعبير.
العمليات الثنائية العادية
&& 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
على الرغم من أن هذا روبي ، إلا أنه قريب بما فيه الكفاية من الرمز الزائف. لقد وضعت عوائد صريحة ، على الرغم من أن روبي لا يتطلبها ، لأنه قد يكون أكثر وضوحًا لشخص لا يعرف روبي.
نصائح أخرى
استخدم كومة. سيكون حجم الحد الأقصى عدد الحجج.
لا تنتمي إلى StackOverflow