محمدباقر سلیمی
محمدباقر سلیمی
خواندن ۲ دقیقه·۴ سال پیش

چگونه یک ریاضی راست‌چین بسازیم؟?

ریاضی‌سازی
ریاضی‌سازی

? سلام?! الان با هم یه ریاضی راست‌به‌چپ با PEGjs می‌سازیم?! ?

نفس‌ها رو در سینه حبس کنید!?

بسم‌الله?

کمی ریاضی‌شناسی

خودِ ریاضی، یک مفهومِ ?«مُجَرَّد» است؛ یعنی ?انتزاعی اَاَاَست؛ ?یعنی لمس کردنی نیییست؛ ?‍♂️یعنی دیدنی نییست؛ ?یعنی مادّی هم نییست!(??...) ?

پس چه بکنیم با آن…!?

? این‌جا است که «مدل ریاضی» به داد ما می‌رسد?! (الان می‌گویم چه صیغه‌ای است?)

تَماااااااااامِ ریاضی‌ای که شما می‌شناسید ?«مدل» ریاضی است و نه خودِ ریاضی?!

حتی زبان ریاضی هم یک مدل ریاضی است. یعنی وقتی داریم به زبان ریاضی چیزی را می‌نویسیم یا حتی بالاتر از آن، وقتی که داریم زبان ریاضی را دستکاری می‌کنیم داریم در حوزه‌ی مدل‌سازیِ ریاضی کار می‌کنیم.

پس…

وقتی می‌آییم با PEGjs زبان ریاضی را کمی به دلخواه خودمان تغییر دهیم، داریم در حوزه‌ی مدل‌سازی ریاضی کار می‌کنیم.


کمی جرأت!

ریاضی، علمی است که هر کسی به خودش اجازه‌ی دست‌کاری‌اش را نمی‌دهد. ولی ما در این مقاله شما را به دست‌کاری‌اش دعوت می‌کنیم?! (پویش هم می‌تونه بشه)

شروع دست‌کاری زبان ریاضی

ما دست‌کاری زبان ریاضی را با استفاده از PEGjs انجام می‌دهیم. اما در این مقاله قصد آموزش PEGjs را نداریم. شما به هر شکلی می‌توانید دست‌کاری زبان ریاضی را انجام دهید اما ما در این‌جا برای مثال، یک ریاضیِ فارسی و راست‌به‌چپ می‌سازیم?!

بسم‌الله‌الرحمن‌الرحیم

۱. وارد این لینک شوید: https://pegjs.org/online

نمای ویرایش‌گر پِگ
نمای ویرایش‌گر پِگ


۲. کادر سمت چپ مخصوص وارد کردن گرامر زبانی است که شما اختراع می‌کنید. کدهای پیش‌فرض‌ش، مثالی برای محاسبه‌گرِ عدد است، با همان زبان عادی ریاضی. این کدهای کادر سمت چپ را پاک کنید و کدهای زیر را در آن جای‌گذاری کنید:

Paste it there:

// -_-_-_-_-_-_-_ RTL Mathematics _-_-_-_-_-_-_- //
{
function toEnglishDigit(text) {
let find = ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹'];
let replace = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
let replaceString = text;
let regex;
for (let i = 0; i < find.length; i++) {
regex = new RegExp(find[i], "g");
replaceString = replaceString.replace(regex, replace[i]);
}
return replaceString;
};
}
Expression
= head:Term tail:(_ ("با" / "ازش") _ Term)* {
return tail.reduce(function(resultelement) {
if (element[1] === "با") { return result + element[3]; }
if (element[1] === "ازش") { return result - element[3]; }
}, head);
}
Term
= head:Factor tail:(_ ("در" / "بر") _ Factor)* {
return tail.reduce(function(resultelement) {
if (element[1] === "در") { return result * element[3]; }
if (element[1] === "بر") { return result / element[3]; }
}, head);
}
Factor
= "(" _ expr:Expression _ ")" { return expr; }
/ Integer
Integer "integer"
= _ [۱۲۳۴۵۶۷۸۹۰]+ { return parseInt(toEnglishDigit(text()), 10); }
_ "whitespace"
= [ \t\n\r]*


۳. وارد کادر سمت راست شوید و متن‌ش را پاک کنید.

۴. بر صفحه‌کلیدتان، کلید «Ctrl» سمت راستی و «Shift» سمت راستی را با هم فشار دهید تا ویرایش‌گر، راست‌چین شود.

۵. تبریک می‌گویم?! حالا شما یک ریاضی راست‌چین اختراع کرده‌اید.???


قواعد این ریاضیِ راست‌چین:

  • به جای «+» بنویسید «با».
  • به جای «-» بنویسید «ازش».
  • به جای «*» بنویسید «در».
  • به جای «/» بنویسید «بر».
  • به جای «1و2و3و...» بنویسید «۱و۲و۳و...» (که البته می‌شود لزومش را برداشت).
  • ⚠ از قراردادن فاصله‌ی اضافی در انتهای عبارت خودداری کنید.
// چند مثال آماده:

۲۵ ازش (۳ در ۷) // می‌دهد ۴
۵ با ۱۰ ازش ۳ // می‌دهد ۱۲
۱۸ بر ۳ // می‌دهد ۶
۳ با ۱۸ بر ۳ // اولویت با تقسیم است و می‌دهد ۹

// به همین ترتیب می‌توانید عبارت‌های دیگری را برای محاسبه بنویسید.

و حالا شما هر طور که خودتان دوست دارید ریاضی بسازید?!

✋یامهدی??!

ریاضی شخصیریاضی راست چینریاضی راست به چپریاضی فارسیریاضی اسلامی
علاقه‌مند به تلفیق سه‌حوزه‌ی «برنامه‌نویسی» و «ریاضی» و «علوم انسانی»؛ معلم ریاضی در نظام رسمی و عمومی تربیت (=آموزش‌وپرورش)
شاید از این پست‌ها خوشتان بیاید