ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ Π½Π° JavaScript

БСгодня сдСлаСм ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ Π½Π° JavaScript, Π½ΠΎ Π½Π΅ просто Ρ‚Π°ΠΊ, Π° с умыслом. ПозднСС ΠΌΡ‹ прСдставим, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ тСстировщики, ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€. Π’Π΅Ρ€Π½Π΅Π΅, Π½Π΅ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π° Π΄ΠΈΠΊΠΎ ΡΠ»ΠΎΠΌΠ°Ρ‚ΡŒ.

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅ΠΌ

На стартС Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ самый простой ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ смоТСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ, Π²Ρ‹Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ, ΡƒΠΌΠ½ΠΎΠΆΠ°Ρ‚ΡŒ ΠΈ Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΄Π²Π° числа. Π­Ρ‚ΠΎΠ³ΠΎ ΡƒΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ достаточно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡ‚Ρ€Π΅Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ Π² ΠΊΠΎΠ΄Π΅, ΠΈ Π² дальнСйшСм тСстировании.

Π›ΠΎΠ³ΠΈΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π’Π°ΠΊ ΠΊΠ°ΠΊ это простой ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€, Ρ‚ΠΎ поступим Ρ‚Π°ΠΊ:

Π Π°Π·ΠΌΠ΅Ρ‰Π°Π΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ поля Π²Π²ΠΎΠ΄Π° Π½Π° страницС

РазмСстим ΠΊΠ½ΠΎΠΏΠΊΠΈ с полями Π½Π° страницС, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ скрипт.

ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ наТатия Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ матСматичСских дСйствий

БСйчас Ρƒ нас Π΅ΡΡ‚ΡŒ 4 ΠΊΠ½ΠΎΠΏΠΊΠΈ, Π½ΠΎ Π½Π°ΠΆΠΈΠΌΠ°Ρ‚ΡŒ ΠΈΡ… бСсполСзно β€” всё Ρ€Π°Π²Π½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π½Π°ΠΆΠ°Ρ‚ΠΈΠΉ. Но Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ ΠΏΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅?

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” ΠΏΡ€ΠΈΠ²ΡΠ·Π°Ρ‚ΡŒ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠ΅ свою Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π° ΠΏΠΎΡ‚ΠΎΠΌ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ свои дСйствия Π²Π½ΡƒΡ‚Ρ€ΠΈ этого ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°. Но Ρ€Π°Π· Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠ° Β«ΠŸΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΒ», Ρ‚ΠΎ Π½Π°ΠΌ придётся ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° Π½Π΅Ρ‘ ΠΈΠ· этих Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Ρ‹Ρ‚Π°ΡΠΊΠΈΠ²Π°Ρ‚ΡŒ дСйствиС ΠΈ Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ΅ ΠΈ ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² вычислСниях. Π‘Π»ΠΎΠΆΠ½ΠΎ ΠΈ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΎ.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” просто Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π² ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, какая ΠΊΠ½ΠΎΠΏΠΊΠ° Π±Ρ‹Π»Π° Π½Π°ΠΆΠ°Ρ‚Π°. А ΠΏΠΎΡ‚ΠΎΠΌ, ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Β«ΠŸΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΒ», просто ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² эту ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ дСйствиС. Π’Π°ΠΊ ΠΈ поступим.

👉 Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Ρ…ΠΈΡ‚Ρ€ΠΎΡΡ‚ΡŒΡŽ, ΠΏΡ€ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π·Π°Π±Ρ‹Π²Π°ΡŽΡ‚: Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ onclick Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ β€” Ρ‚ΡƒΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ JS-ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ. Π“Π»Π°Π²Π½ΠΎΠ΅, Π½Π΅ Π·Π°Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΌ Π² скриптС ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ эту ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ.

ПишСм скрипт

Π‘Π°ΠΌ скрипт Ρ‚ΠΎΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ простой:

Π‘Ρ€Π°Π·Ρƒ привяТСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ func() ΠΊ Π½Π°ΠΆΠ°Ρ‚ΠΈΡŽ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«ΠŸΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΒ»:

Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

БСйчас Π² скриптС Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: ΠΎΠ½ всё считаСт, Π½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚. А всё ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ прСдусмотрСли Π½Π° страницС мСсто для Π²Ρ‹Π²ΠΎΠ΄Π°. Π˜ΡΠΏΡ€Π°Π²ΠΈΠΌ это ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ строчку Π² скрипт.

Π­Ρ‚ΠΎ β€” Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π° страницу послС ΠΊΠ½ΠΎΠΏΠΊΠΈ с расчётом:

А это β€” Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ func(), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° сразу отправляла Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π° страницу:

Π‘ΠΎΠ±ΠΈΡ€Π°Π΅ΠΌ всё вмСстС ΠΈ смотрим Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π° ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°

ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ, ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ складываСт всё ΠΊΠ°ΠΊ Π½ΡƒΠΆΠ½ΠΎ! ΠœΡ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ свою Π·Π°Π΄Π°Ρ‡Ρƒ β€” быстро Π·Π°ΠΏΠΈΠ»ΠΈΠ»ΠΈ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ Π½Π° JavaScript, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ Π² таск-Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€Π΅ ΠΈ Π±Ρ€Π°Ρ‚ΡŒΡΡ Π·Π° Π½ΠΎΠ²ΡƒΡŽ.

Π§Ρ‚ΠΎ дальшС

Π”Π°Π»ΡŒΡˆΠ΅ ΠΌΡ‹ этот ΠΊΠΎΠ΄ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠΌ тСстировщикам β€” вряд Π»ΠΈ ΠΎΠ½ΠΈ Π² Π½Ρ‘ΠΌ Π½Π°ΠΉΠ΄ΡƒΡ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎΠ΅ ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ошибки, Π½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π΅ΡΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π°. А Ссли тСстировщики Ρ‚ΡƒΡ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π°ΠΉΠ΄ΡƒΡ‚, ΠΌΡ‹ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ расскаТСм ΠΎΠ± этом Π² Π½ΠΎΠ²ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅.

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ сами ΠΏΠΎΠ±Ρ‹Ρ‚ΡŒ тСстировщиком ΠΈ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ тСстирования ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ Π² коммСнтариях.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ПишСм Β«ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Β» Π½Π° C#. Π§Π°ΡΡ‚ΡŒ I. ВычислСниС значСния, производная, ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅, ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ гуси

ΠšΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ Ρƒ нас ΠΏΠΎΡ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ ассоциируСтся с Ρ‡Π΅ΠΌ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ историчСски ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ с Ρ‚ΠΎΠΉ Ρ†Π΅Π»ΡŒΡŽ ΠΈ создавались, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ. Но ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ нСпростой ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€, Π½Π΅ sympy ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΌΠ΅Π» Π±Π°Π·ΠΎΠ²Ρ‹Π΅ алгСбраичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‚ΠΈΠΏΠ° диффСрСнциирования, симплификации, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ„ΠΈΡ‡ΠΈ Ρ‚ΠΈΠΏΠ° компиляции для ускорСния вычислСний.

Π‘Π±ΠΎΡ€ΠΊΠ° выраТСния

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Β«Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Β»?

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, это Π½Π΅ строка. Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ матСматичСская Ρ„ΠΎΡ€ΠΌΡƒΠ»Π° β€” это Π»ΠΈΠ±ΠΎ Π΄Π΅Ρ€Π΅Π²ΠΎ, Π»ΠΈΠ±ΠΎ стСк, ΠΈ здСсь ΠΌΡ‹ остановимся Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ. Π’ΠΎ Π΅ΡΡ‚ΡŒ каТдая Π½ΠΎΠ΄Π°, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΡƒΠ·Π΅Π» этого Π΄Π΅Ρ€Π΅Π²Π°, это какая-Ρ‚ΠΎ опСрация, пСрСмСнная, Π»ΠΈΠ±ΠΎ константа.

ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ β€” это Π»ΠΈΠ±ΠΎ функция, Π»ΠΈΠ±ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅. Π•Π΅ Π΄Π΅Ρ‚ΠΈ β€” Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°).

Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ классов Π² вашСм ΠΊΠΎΠ΄Π΅

РазумССтся, рСализация ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ любой. Однако идСя Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ссли вашС Π΄Π΅Ρ€Π΅Π²ΠΎ состоит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· ΡƒΠ·Π»ΠΎΠ² ΠΈ Π»ΠΈΡΡ‚ΡŒΠ΅Π², Ρ‚ΠΎ ΠΎΠ½ΠΈ Π±Ρ‹Π²Π°ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ я Π½Π°Π·Ρ‹Π²Π°ΡŽ эти Β«ΡˆΡ‚ΡƒΠΊΠΈΒ» β€” сущностями. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Π΅Ρ€Ρ…Π½ΠΈΠΌ классом Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ абстрактный класс Entity.

А Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ класса-наслСдника: NumberEntity, VariableEntity, OperatorEntity, FunctionEntity.

Как ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅?

Для Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ΄Π΅, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ

Если ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ пустой класс VariableEntity, Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π²Ρ‹ΠΊΠΈΠ½Π΅Ρ‚ Π²Π°ΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΠΌΠΎΠ» Π½Π΅ Π·Π½Π°Π΅Ρ‚ ΠΊΠ°ΠΊ ΡƒΠΌΠ½ΠΎΠΆΠ°Ρ‚ΡŒ ΠΈ ΡΡƒΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²

ΠžΡ‡Π΅Π½ΡŒ ваТная ΠΈ полСзная Ρ„ΠΈΡ‡Π° Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° языков, позволяя ΠΊΠ°ΡΡ‚ΠΎΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ арифмСтичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. БинтаксичСски рСализуСтся ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ Π² зависимости ΠΎΡ‚ языка. НапримСр, рСализация Π² C#

(НС)явноС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ²

Π’ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языках Ρ‚ΠΈΠΏΠ° C# такая ΡˆΡ‚ΡƒΠΊΠ° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ присутствуСт ΠΈ позволяСт Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° myvar.ToAnotherType() привСсти Ρ‚ΠΈΠΏ, Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ. Π’Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ

ПодвСшиваниС

Класс Entity ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ»Π΅ Children β€” это просто список Entity, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ для Π΄Π°Π½Π½ΠΎΠΉ сущности.

Когда Ρƒ нас вызываСтся функция ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, Π½Π°ΠΌ стоит ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ, ΠΈ Π² Π΅Π΅ Π΄Π΅Ρ‚ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Ρ‚ΠΎ, ΠΎΡ‚ Ρ‡Π΅Π³ΠΎ вызываСтся функция ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, сумма ΠΏΠΎ ΠΈΠ΄Π΅Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π³Π»ΡΠ΄ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

Π’ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ссли Ρƒ нас Π΅ΡΡ‚ΡŒ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ x ΠΈ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ 3, Ρ‚ΠΎ x+3 Π²Π΅Ρ€Π½Π΅Ρ‚ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° суммы с двумя Π΄Π΅Ρ‚ΡŒΠΌΠΈ: 3 ΠΈ x. Π’Π°ΠΊ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΄Π΅Ρ€Π΅Π²ΡŒΡ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ простой ΠΈ Π½Π΅ Ρ‚Π°ΠΊΠΎΠΉ красивый, ΠΊΠ°ΠΊ с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ:

ПодвСшиваниС Π² Ρ€Π΅ΠΏΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Ρ‚ΡƒΡ‚.

ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ, ΠΌΡ‹ составили Π΄Π΅Ρ€Π΅Π²ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

ΠŸΠΎΠ΄ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ

Π—Π΄Π΅ΡΡŒ всС ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ просто. Π£ нас Π΅ΡΡ‚ΡŒ Entity β€” ΠΌΡ‹ провСряСм являСтся Π»ΠΈ ΠΎΠ½ сам ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ссли Π΄Π°, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΈΠ½Π°Ρ‡Π΅ β€” Π±Π΅ΠΆΠΈΠΌ ΠΏΠΎ дСтям.

Π’ этом ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠΌ 48-строчном Ρ„Π°ΠΉΠ»Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΡΡ‚ΠΎΠ»ΡŒ слоТная функция.

ВычислСниС значСния

БобствСнно Ρ‚ΠΎ, Ρ€Π°Π΄ΠΈ Ρ‡Π΅Π³ΠΎ всС это. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΏΠΎ ΠΈΠ΄Π΅Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Entity ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄

Листик Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π° для всСго ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρƒ нас кастомноС вычислСниС. ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ лишь ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Если Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ β€” число, Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅ΠΌ Ρ‡ΠΈΡΠ»Π΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΈΠ½Π°Ρ‡Π΅ β€” Π²Π΅Ρ€Π½Π΅ΠΌ ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ.

Number?

Π­Ρ‚ΠΎ самая простая Π΅Π΄ΠΈΠ½ΠΈΡ†Π°, число. Над Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ½ΠΎ комплСксноС. Π’Π°ΠΊΠΆΠ΅ Ρƒ Π½Π΅Π³ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠ°ΠΊ Sin, Cos, ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

Если интСрСсно, Number описан Ρ‚ΡƒΡ‚.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Π°Ρ

ЧислСнно ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡƒΡŽ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΡ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ, ΠΈ такая функция ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ поистинС Π² ΠΎΠ΄Π½Ρƒ строку:

Но разумССтся Π½Π°ΠΌ хочСтся Π°Π½Π°Π»ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡƒΡŽ. Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ нас ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π΄Π΅Ρ€Π΅Π²ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ рСкурсивно Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΡƒΠ·Π΅Π» Π² соотвСтствии с ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΠΌ диффСрСнциирования. Π Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°

Π’ΠΎΡ‚, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΊΠ°ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Π° сумма Π² ΠΌΠΎΠ΅ΠΌ ΠΊΠΎΠ΄Π΅:

А Π²ΠΎΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅

А Π²ΠΎΡ‚ сам ΠΏΠΎ сСбС ΠΎΠ±Ρ…ΠΎΠ΄:

Π­Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Entity. И ΠΊΠ°ΠΊ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ листа всСго Π΄Π²Π° состояния β€” Π»ΠΈΠ±ΠΎ это пСрСмСнная, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈΡ€ΡƒΠ΅ΠΌ, Ρ‚ΠΎΠ³Π΄Π° Π΅Π΅ производная Ρ€Π°Π²Π½Π° 1, Π»ΠΈΠ±ΠΎ это константа (число Π»ΠΈΠ±ΠΎ VariableEntity), Ρ‚ΠΎΠ³Π΄Π° Π΅Π΅ производная 0, Π»ΠΈΠ±ΠΎ ΡƒΠ·Π΅Π», Ρ‚ΠΎΠ³Π΄Π° ΠΈΠ΄Π΅Ρ‚ отсылка ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ (InvokeDerive обращаСтся ΠΊ ΡΠ»ΠΎΠ²Π°Ρ€ΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π³Π΄Π΅ ΠΈ находится нуТная (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ сумма ΠΈΠ»ΠΈ синус)).

Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, я здСсь Π½Π΅ ΠΎΡΡ‚Π°Π²Π»ΡΡŽ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ‚ΠΈΠΏΠ° dy/dx ΠΈ сразу Π³ΠΎΠ²ΠΎΡ€ΡŽ, Ρ‡Ρ‚ΠΎ производная ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π΅ ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈΡ€ΡƒΠ΅ΠΌ Ρ€Π°Π²Π½Π° 0. А Π²ΠΎΡ‚ здСсь сдСлано ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ.

ВсС Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ описано Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅, Π° большС ΠΈ Π½Π΅ Π½Π°Π΄ΠΎ.

Π£ΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ выраТСния. ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹

Π£ΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ выраТСния Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎ. Ну Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡ‰Π΅: ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°ΠΈΠ»ΠΈ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°? Но ΠΌΡ‹ придСрТиваСмся ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ прСдставлСний, ΠΈ Π½Π° основС Π½ΠΈΡ… Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

МоТно ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Eval ΠΏΠΈΡΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ссли Ρƒ нас сумма, Π° Π΄Π΅Ρ‚ΠΈ β€” произвСдСния, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π±Π΅Ρ€Π΅ΠΌ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°, ΠΈ Ссли Π³Π΄Π΅-Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ€Π°Π²Π½ΠΎ, вынСсСм ΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒβ€¦ Но Ρ‚Π°ΠΊ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅ Π½Π΅ хочСтся. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ³Π°Π΄Π°Ρ‚ΡŒΡΡ Π΄ΠΎ систСмы ΠΏΡ€Π°Π²ΠΈΠ» ΠΈ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ². Π˜Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ? ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ синтаксис:

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π΅Ρ€Π΅Π²Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ нашлось ΠΏΠΎΠ΄Π΄Π΅Ρ€Π΅Π²ΠΎ (ΠΎΠ±Π²Π΅Π΄Π΅Π½ΠΎ Π² Π·Π΅Π»Π΅Π½Ρ‹ΠΉ), ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰Π΅Π΅ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρƒ any1 + const1 * any1 (Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ΅ any1 ΠΎΠ±Π²Π΅Π΄Π΅Π½ΠΎ Π² ΠΎΡ€Π°Π½ΠΆΠ΅Π²Ρ‹ΠΉ).

ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°

Как Π²ΠΈΠ΄ΠΈΠΌ, ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°ΠΌ Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½Π° ΠΈ Ρ‚Π° ΠΆΠ΅ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ x + a * x Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈ Ρ‚Π°ΠΌ ΠΈ Ρ‚Π°ΠΌ Π±Ρ‹Π» x, вСдь x + a * y ΡƒΠΆΠ΅ Π½Π΅ сокращаСтся. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ провСряСт, Ρ‡Ρ‚ΠΎ Π΄Π΅Ρ€Π΅Π²ΠΎ соотвСтсвуСт ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρƒ, Π½ΠΎ ΠΈ

А Π² tree.PaternMakeMatch ΠΌΡ‹ рСкурсивно наполняСм ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ ΠΈ ΠΈΡ… значСниями. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ списка самих ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹Ρ… Entity:

Когда ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ any1 * const1 β€” func1 ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅, Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΎΠ΄Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ Π½ΠΎΠΌΠ΅Ρ€ β€” это ΠΈ Π΅ΡΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡. Π˜Π½Π°Ρ‡Π΅ говоря, ΠΏΡ€ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ словаря, ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ выступят ΠΊΠ°ΠΊ Ρ€Π°Π· эти Π½ΠΎΠΌΠ΅Ρ€Π°: 100, 101, 200, 201, 400… А ΠΏΡ€ΠΈ постройкС Π΄Π΅Ρ€Π΅Π²Π° ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΊΠ»ΡŽΡ‡Ρƒ, ΠΈ ΠΏΠΎΠ΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π΅Π³ΠΎ.

Π£ΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Π΄Π΅Ρ€Π΅Π²Π°

ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚?

Π’ΠΎΠΎΠ±Ρ‰Π΅, Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ сдСлали Π΄ΠΎ этого, ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ β€” Ρ‡ΡƒΠ΄ΠΎΠ²ΠΈΡ‰Π½ΠΎ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ ΡˆΡ‚ΡƒΠΊΠ°. Она ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ ΡΠΎΠΊΡ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΈ Ρ€Π°Π·Π½ΠΎΡΡ‚ΡŒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ², ΠΈ сумму ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π° синуса ΠΈ косинуса, ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ слоТныС ΡˆΡ‚ΡƒΠΊΠΈ. Но ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ€Π½ΡƒΡŽ ΠΏΠ°Π»ΡŒΠΌΡƒ, ((((x + 1) + 1) + 1) + 1), ΠΎΠ½Π° Π½Π΅ сократит, вСдь здСсь Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ β€” ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ слагаСмых. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ шаг β€” Π²Ρ‹Ρ‡Π»Π΅Π½ΠΈΡ‚ΡŒ Β«Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… Π΄Π΅Ρ‚Π΅ΠΉΒ».

Β«Π›ΠΈΠ½Π΅ΠΉΠ½Ρ‹Π΅ Π΄Π΅Ρ‚ΠΈΒ»

БобствСнно для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΎΠ΄Ρ‹ суммы ΠΈΠ»ΠΈ разности (ΠΈ, кстати, произвСдСния/дСлСния) ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список слагаСмых (ΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»Π΅ΠΉ).

ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°

Π­Ρ‚ΠΎ Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ нСслоТно. ΠŸΡƒΡΡ‚ΡŒ функция LinearChildren(Entity node) Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ список, Ρ‚ΠΎΠ³Π΄Π° ΠΌΡ‹ смотрим Π½Π° child in node.Children: Ссли child β€” это Π½Π΅ сумма, Ρ‚ΠΎ result.Add(child), ΠΈΠ½Π°Ρ‡Π΅ β€” result.AddRange(LinearChildren(child)).

НС самым красивым ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Ρ‚ΡƒΡ‚.

Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° Π΄Π΅Ρ‚Π΅ΠΉ

Π˜Ρ‚Π°ΠΊ, Ρƒ нас Π΅ΡΡ‚ΡŒ список Π΄Π΅Ρ‚Π΅ΠΉ, Π½ΠΎ Ρ‡Ρ‚ΠΎ дальшС? Допустим, Ρƒ нас Π΅ΡΡ‚ΡŒ sin(x) + x + y + sin(x) + 2 * x. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ наш Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ ΠΏΡΡ‚ΡŒ слагаСмых. Π”Π°Π»Π΅Π΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠ³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ похоТСсти, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, x ΠΏΠΎΡ…ΠΎΠΆ Π½Π° 2 * x большС, Ρ‡Π΅ΠΌ Π½Π° sin(x).

Π’ΠΎΡ‚ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ°:

ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°

Π’Π°ΠΊ ΠΊΠ°ΠΊ Π² Π½Π΅ΠΉ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ дальшС справятся с ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ 2*x + x Π² 3*x.

Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΡ‹ сначала Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Ρ…Π΅ΡˆΡƒ, Π° Π·Π°Ρ‚Π΅ΠΌ Π΄Π΅Π»Π°Π΅ΠΌ MultiHang β€” ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ n-Π°Ρ€Π½ΠΎΠ³ΠΎ суммирования Π² Π±ΠΈΡ€Π°Π½ΠΎΠ΅.

Π₯Сш ΡƒΠ·Π»Π°

Π‘ ΠΎΠ΄Π½ΠΎΠΉ стороны, ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°ΠΈ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°ΡΠ»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² ΠΎΠ΄Π½Ρƒ Π³Ρ€ΡƒΠΏΠΏΡƒ. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π² ΠΎΠ΄Π½Ρƒ Π³Ρ€ΡƒΠΏΠΏΡƒ с ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°Π±Π΅ΡΡΠΌΡ‹ΡΠ»Π΅Π½Π½ΠΎ.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΡƒΡŽ сортировку. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ Π²ΠΈΠ΄, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°β€” ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅. ΠŸΠΎΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ, ΡƒΡΠΏΠΎΠΊΠΎΠΈΠ»ΠΈΡΡŒ. ΠŸΠΎΡ‚ΠΎΠΌ Π΄Π΅Π»Π°Π΅ΠΌ Π²ΠΈΠ΄, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. И Π²ΠΎΡ‚ ΡƒΠΆΠ΅ наши ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°ΠΈ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°Π½Π°ΠΊΠΎΠ½Π΅Ρ† объСдинились. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ достаточно просто:

Как Π²ΠΈΠ΄ΠΈΠΌ, функция ΠΏΠΎ-Π»ΡŽΠ±ΠΎΠΌΡƒ влияСт Π½Π° сортировку (разумССтся, вСдь ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°Ρ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΠΈΠΊΠ°ΠΊ Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС Π½Π΅ связана). Как ΠΈ пСрСмСнная, ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°Ρ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°Π½Ρƒ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ получится ΡΠΌΠ΅ΡˆΠ°Ρ‚ΡŒ. А Π²ΠΎΡ‚ константы ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π΅ Π½Π° всСх уровнях. Π’ Ρ‚Π°ΠΊΠΎΠΌ порядкС ΠΈΠ΄Π΅Ρ‚ сам процСсс упрощСния

Β«ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡΒ» Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Π’ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ… β€” Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ Π² сам IL ΠΊΠΎΠ΄, Π° лишь Π² ΠΎΡ‡Π΅Π½ΡŒ быстрый Π½Π°Π±ΠΎΡ€ инструкций. Но Π·Π°Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ просто.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Substitute

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π°ΠΌ достаточно Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ подстановку ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ eval, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Но это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, ΠΎΠΊΠΎΠ»ΠΎ 1.5 микросСкунды Π½Π° синус.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ вычислСниС, ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ вычислСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° стСкС, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ:

1) ΠŸΡ€ΠΈΠ΄ΡƒΠΌΡ‹Π²Π°Π΅ΠΌ класс FastExpression, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ список инструкций

2) ΠŸΡ€ΠΈ компиляции инструкции ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² стСк Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ссли Π΅ΡΡ‚ΡŒ функция x * x + sin(x) + 3, Ρ‚ΠΎ инструкции Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΈΠΌΠΈ:

Π”Π°Π»Π΅Π΅ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΡ‹ прогоняСм эти инструкции ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Number.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ выполнСния инструкции суммы:

Π’Ρ‹Π·ΠΎΠ² синуса сократился с 1500нс Π΄ΠΎ 60нс (систСмный Complex.Sin Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π·Π° 30нс).
Π’ Ρ€Π΅ΠΏΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Ρ‚ΡƒΡ‚.

Π€ΡƒΡ…, Π²Ρ€ΠΎΠ΄Π΅ Π±Ρ‹ ΠΏΠΎΠΊΠ° всС. Π₯отя Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ Π΅ΡΡ‚ΡŒ ΠΎ Ρ‡Π΅ΠΌ, Π½ΠΎ ΠΌΠ½Π΅ каТСтся объСм для ΠΎΠ΄Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ достаточный. Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ Π»ΠΈ ΠΊΠΎΠΌΡƒ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅? А ΠΈΠΌΠ΅Π½Π½ΠΎ: парсинг ΠΈΠ· строки, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Π»Π°Ρ‚Π΅Ρ…, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Π», ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ плюшки.

Бсылка Π½Π° Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ со всСм ΠΊΠΎΠ΄ΠΎΠΌ, Π° Ρ‚Π°ΠΊΠΆΠ΅ тСстами ΠΈ самплами.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ПишСм ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ Π½Π° JavaScript

ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°

Π”ΠΎΠ±Ρ€ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ суток, Π΄Ρ€ΡƒΠ·ΡŒΡ!

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ с Π²Π°ΠΌΠΈ, ΠΊΠ°ΠΊ слСдуСт ΠΈΠ· названия, напишСм простой ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ Π½Π° JavaScript.

Π–Π΅Π»Π°Π½ΠΈΠ΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΎ Ρƒ мСня послС просмотра ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π»Π°, посвящСнного созданию Β«simple calculatorΒ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ оказался Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ симпл ΠΈ Ρ‚ΠΎΠ»ΠΊΠΎΠΌ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΡƒΠΌΠ΅Π» Π΄Π΅Π»Π°Ρ‚ΡŒ.

Наш ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ Π±ΡƒΠ΄Π΅Ρ‚ true simple (42 строки ΠΊΠΎΠ΄Π°, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ), Π½ΠΎ ΠΏΡ€ΠΈ этом ΠΏΠΎΠ»Π½ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ.

Π‘Π΅Π· Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… прСдисловий, приступаСм ΠΊ Π΄Π΅Π»Ρƒ.

Наша Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° выглядит Ρ‚Π°ΠΊ:

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, создаСм ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ для ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π° ΠΈ ΠΏΠΎΠ»Π΅ для Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… символов ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.

Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚:

ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°

Кнопки Π±ΡƒΠ΄ΡƒΡ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ.

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ скрипту.

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΏΠΎΠ»Π΅ для Π²Ρ‹Π²ΠΎΠ΄Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΈ создаСм ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ для ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹:

Наша строка с символами выглядит Ρ‚Π°ΠΊ:

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ Π΄Π°Π½Π½ΡƒΡŽ строку Π² массив ΠΈ создаСм ΠΊΠ½ΠΎΠΏΠΊΠΈ:

Находим созданныС ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ добавляСм ΠΊ Π½ΠΈΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события Β«ΠΊΠ»ΠΈΠΊΒ»:

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ символы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹. Для этого Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события Β«Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ клавиши» ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Β«DocumentΒ» ΠΈΠ»ΠΈ Β«WindowΒ», Π·Π°Ρ‚Π΅ΠΌ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ значСния свойства Β«ΠΊΠ»ΡŽΡ‡Β» клавиши, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ рСгулярного выраТСния:

ΠœΠ΅Ρ‚ΠΎΠ΄ Β«matchΒ» Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΈΠ³Ρ€Π°Π΅Ρ‚ Ρ€ΠΎΠ»ΡŒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°: ΠΎΠ½ Π½Π΅ позволяСт ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Β«calcΒ» Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, Π½Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ Π² Π½Π΅ΠΌ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ.

Π‘Π°ΠΌΠΎ условиС Π·Π²ΡƒΡ‡ΠΈΡ‚ Ρ‚Π°ΠΊ: Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ event.key являСтся ΠΎΠ΄ΠΈΠ½ ΠΈΠ· символов, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках ([]; Ρ†ΠΈΡ„Ρ€Π° ΠΎΡ‚ 0 Π΄ΠΎ 9, Π·Π½Π°ΠΊΠΈ дСлСния, умноТСния, слоТСния, вычитания, ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π°Ρ, Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π°Ρ ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки ΠΈΠ»ΠΈ Π·Π½Π°ΠΊ равСнства; обратная косая Ρ‡Π΅Ρ€Ρ‚Π° β€” экранированиС) ΠΈΠ»ΠΈ (| β€” Π°Π»ΡŒΡ‚Π΅Ρ€Π°Ρ†ΠΈΡ) Backspace, ΠΈΠ»ΠΈ Enter, Ρ‚ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ calc с event.key Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, ΠΈΠ½Π°Ρ‡Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅ΠΌ (Shift Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ отбрасываСтся).

Наша главная (ΠΈ СдинствСнная) функция Β«calcΒ» выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ (ΠΊΠΎΠ΄ слСдуСт Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ снизу Π²Π²Π΅Ρ€Ρ…):

Π’ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅, ΠΏΠ°Ρ€ΠΎΡ‡ΠΊΠ° слов ΠΎ заявлСнной ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ ΠΈ ΠΏΠΎΠ»Π½ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ΠœΠ΅Ρ‚ΠΎΠ΄ Β«evaluateΒ» (Ρ€Π°Π½Π΅Π΅ Β«evalΒ») ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Math.js ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ большиС возмоТности. ΠžΠΏΠΈΡ€Π°ΡΡΡŒ Π½Π° эти возмоТности, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» нашСго ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π² Π½Π΅Π³ΠΎ Π½ΠΎΠ²Ρ‹Π΅ символы ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, прСдусмотрСв Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с числами с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ (рСгулируя количСство Π·Π½Π°ΠΊΠΎΠ² послС запятой с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Ρ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Β«toFixedΒ») ΠΈ Ρ‚.Π΄.

Π‘Π»Π°Π³ΠΎΠ΄Π°Ρ€ΡŽ Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅. НадСюсь, Π²Ρ‹ нашли для сСбя Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅. Π₯ΠΎΡ€ΠΎΡˆΠΈΡ… Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΈ счастливого ΠΊΠΎΠ΄ΠΈΠ½Π³Π°.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ПишСм свой парсСр матСматичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки

ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠΏΠΎΠ»Π½Ρ‹ΠΉ исходный ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ здСсь.

Π’Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ задавались вопросом, ΠΊΠ°ΠΊ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ тСкстовоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ вычисляСт Π΅Π³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚? НС говоря ΡƒΠΆΠ΅ ΠΎΠ± ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ матСматичСских ошибок, сСмантичСских ошибок ΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ‚Π°ΠΊΠΈΠΌ Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΊΠ°ΠΊ числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой. Π›ΠΈΡ‡Π½ΠΎ я задавался!

Π― Ρ€Π°Π·ΠΌΡ‹ΡˆΠ»ΡΠ» Π½Π°Π΄ этой Π·Π°Π΄Π°Ρ‡Π΅ΠΉ, проводя ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ для ΠΌΠΎΠ΅ΠΉ магистСрской Ρ€Π°Π±ΠΎΡ‚Ρ‹. Оказалось, Ρ‡Ρ‚ΠΎ я Ρ‚Ρ€Π°Ρ‡Ρƒ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° поиск ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ физичСских Π΅Π΄ΠΈΠ½ΠΈΡ† измСрСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ прСобразования ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ своих вычислСний.

Π Π°Π·Π΄Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ‚ ΠΌΠΎΠ½ΠΎΡ‚ΠΎΠ½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ ΠΌΠ½Π΅ вскорС ΠΎΡΠΎΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ ΠΈ ΠΈΡ… прСобразования Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΠ½Π΅ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΈΡ…, достаточно ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Π° Π·Π°Ρ‚Π΅ΠΌ ΡΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ простой инструмСнт, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈ коррСктности!

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ я написал собствСнный нСбольшой ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ парсинг сСмантичСского матСматичСского выраТСния ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ошибок. УслоТнило созданиС ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ выраТСния с Π΅Π΄ΠΈΠ½ΠΈΡ†Π°ΠΌΠΈ БИ. Π­Ρ‚ΠΎΡ‚ нСбольшой Β«ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹ΠΉ квСст» Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ускорил ΠΌΠΎΠΉ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс ΠΈ, чСстно говоря, я ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Π΅Π³ΠΎ Π² процСссС программирования, хотя Π½Π° Π΅Π³ΠΎ созданиС ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ всСго Π΄Π²Π° дня.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: спроСктированный ΠΌΠ½ΠΎΠΉ парсСр Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ являСтся парсСром с рСкурсивным спуском, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΠΎΠ΄ΡŠΡ‘ΠΌ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΡ. Π― Π½Π΅ лингвист, поэтому Π½Π΅Π·Π½Π°ΠΊΠΎΠΌ с Ρ‚Π°ΠΊΠΈΠΌΠΈ концСпциями, ΠΊΠ°ΠΊ бСсконтСкстная Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ°.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я расскаТу ΠΎ своСй ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ создания настраиваСмого ΠΌΠΈΠΊΡ€ΠΎΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π° Π±Π΅Π· зависимостСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ°Ρ€ΡΠΈΡ‚ΡŒ матСматичСскиС выраТСния с физичСскими Π΅Π΄ΠΈΠ½ΠΈΡ†Π°ΠΌΠΈ измСрСния ΠΈ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ ваш процСсс вычислСний Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС.

Π― ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ это Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π»ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½ΠΎΠ΅, Π½ΠΎ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ занятиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ ΠΎΠΏΠΎΡ€Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ для создания любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ сСмантичСской систСмы ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ матСматичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ! Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» ΠΌΠ½Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π·Π°Π³Π°Π΄ΠΊΠΈ ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°Ρ… Ρ€Π°Π±ΠΎΡ‚Ρ‹ сСмантичСских матСматичСских ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Если Π²Ρ‹ Π»ΡŽΠ±ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ΠΈΠ½Π³ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΠ΅Ρ‚Π΅ΡΡŒ лингвистикой ΠΈ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΎΠΉ, Ρ‚ΠΎ эта ΡΡ‚Π°Ρ‚ΡŒΡ для вас.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: разумССтся, я понимаю, Ρ‡Ρ‚ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡, Π½ΠΎ это показалось ΠΌΠ½Π΅ Π»ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρƒ мСня ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ концСпция Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. Π― всё Ρ€Π°Π²Π½ΠΎ Ρ€Π΅ΡˆΠΈΠ» Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΈ ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΠ²ΠΎΠ»Π΅Π½ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΡΠ²Π»ΡΡŽΡ‚ΡΡ insect, qalculate!, wcalc. Π’Π°ΠΆΠ½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠΎΠ΅Π³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ «запуска», Π° просто Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈΠ· консоли.

Мой ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки

Основная Π·Π°Π΄Π°Ρ‡Π° ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки β€” парсинг Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠ³ΠΎ матСматичСского выраТСния с Π΅Π΄ΠΈΠ½ΠΈΡ†Π°ΠΌΠΈ измСрСния, Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ Π΅Π³ΠΎ значСния (Ссли Π΅Π³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ) ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π½Π° мСсто, Π³Π΄Π΅ Π΅ΡΡ‚ΡŒ ошибка (Ссли Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ).

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ я объясню, ΠΊΠ°ΠΊ Π½Π° стандартном C++ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 350 строках ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ изящный ΡΠ°ΠΌΠΎΠ΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.

Π§Ρ‚ΠΎΠ±Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈ процСсс Π±Ρ‹Π»ΠΈ нагляднСС, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Π·Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ матСматичСского выраТСния:

ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°

Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π²Π΅Π½ 1,35 ΠΌ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ bash Π½Π΅ Π»ΡŽΠ±ΠΈΡ‚ ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅. Π’ΠΈΠ»ΡŒΠ΄Ρ‹ эквивалСнтны Π·Π½Π°ΠΊΠ°ΠΌ «минус», ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒ ΠΎΡ‚ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ вычитания.

Бинтаксис матСматичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с Π΅Π΄ΠΈΠ½ΠΈΡ†Π°ΠΌΠΈ измСрСния

ВычисляСмоС матСматичСскоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ прСдставлСно ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ интСрпрСтируСмая строка символов. Для вычислСния выраТСния Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° ряд Π²Π°ΠΆΠ½Ρ‹Ρ… вопросов:

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ чисСл ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ† измСрСния

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΏΠ°Ρ€Π°ΠΌΠΈ «число-Π΅Π΄ΠΈΠ½ΠΈΡ†Π° измСрСния», Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΈΡ… структуру ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ я Π²ΠΊΡ€Π°Ρ‚Ρ†Π΅ расскаТу, ΠΊΠ°ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠ°Ρ€Ρ‹ «число-Π΅Π΄ΠΈΠ½ΠΈΡ†Π° измСрСния».

Π•Π΄ΠΈΠ½ΠΈΡ†Ρ‹ измСрСния БИ β€” простая рСализация Π½Π° C++

Π’ ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½ΠΎΠΉ систСмС Π΅Π΄ΠΈΠ½ΠΈΡ† физичСскиС Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ Π²Ρ‹Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ 7 основных Π΅Π΄ΠΈΠ½ΠΈΡ†: Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π΄Π»ΠΈΠ½Ρ‹, массы, элСктричСского Ρ‚ΠΎΠΊΠ°, тСрмодинамичСской Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹, количСства вСщСства ΠΈ силы свСта.

ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°

ΠšΠ°ΠΆΠ΄ΡƒΡŽ Ρ„ΠΈΠ·ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ· произвСдСния стСпСнСй этих Π΅Π΄ΠΈΠ½ΠΈΡ†. ΠœΡ‹ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΠΎΠ»Π½ΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡƒΡŽ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ Β«Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒΡŽΒ». Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ структуру, ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‰ΡƒΡŽ этот Ρ„Π°ΠΊΡ‚, сохранив Π² Π½Π΅ΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€ стСпСнСй, связанный с ΠΊΠ°ΠΆΠ΄ΠΎΠΉ основной Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ΠΉ:

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ ΠΊΠ°ΠΊ константу Ρ‚ΠΈΠΏΠ° unit:

Π—Π°Π΄Π°Π΄ΠΈΠΌ Π½Π°Π±ΠΎΡ€ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² для структуры Π΅Π΄ΠΈΠ½ΠΈΡ†. Π Π°Π·Π½Ρ‹Π΅ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΌΠ½ΠΎΠΆΠ°Ρ‚ΡŒ/Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π½ΠΎ нСльзя ΠΏΡ€ΠΈΠ±Π°Π²Π»ΡΡ‚ΡŒ/Π²Ρ‹Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ. ΠŸΡ€ΠΈ слоТСнии/Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… Π΅Π΄ΠΈΠ½ΠΈΡ† получаСтся Ρ‚Π° ΠΆΠ΅ Π΅Π΄ΠΈΠ½ΠΈΡ†Π°. Π•Π΄ΠΈΠ½ΠΈΡ†Ρƒ Π±Π΅Π· размСрности нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ, Π½ΠΎ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ ΠΌΠΎΠΆΠ½ΠΎ возвСсти Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ:

ΠŸΠ°Ρ€Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ «число-Π΅Π΄ΠΈΠ½ΠΈΡ†Π°Β»

Числа, связанныС с Π΅Π΄ΠΈΠ½ΠΈΡ†Π°ΠΌΠΈ, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ «значСниями» ΠΈ Π·Π°Π΄Π°ΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Аналогично Π΅Π΄ΠΈΠ½ΠΈΡ†Π°ΠΌ ΠΌΡ‹ Π·Π°Π΄Π°Π΄ΠΈΠΌ Π½Π°Π±ΠΎΡ€ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠ΅ΠΆΠ΄Ρƒ значСниями ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΡ… Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅:

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ ΠΊΠ°ΠΊ скомбинированныС основныС Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹

ИмСя строку, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ„ΠΈΠ·ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΏΠ°Ρ€Ρƒ «число-Π΅Π΄ΠΈΠ½ΠΈΡ†Π°Β» ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ поиска. ЗначСния ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ основных Π΅Π΄ΠΈΠ½ΠΈΡ† ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² map с ссылкой ΠΏΠΎ символу:

Если Π·Π°Π΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π±Π΅Π·Ρ€Π°Π·ΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ поиска ΠΈ матСматичСскиС константы.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: скомбинированныС Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ΠΊΠΈΠΌ Β«ΠΊΠ»ΡŽΡ‡ΠΎΠΌΒ» ΠΈΠ»ΠΈ строкой, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ люди ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π½ΠΈΡ…, Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ поиска Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ!

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ^ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ поиска Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² скобки ΠΈΠ·-Π·Π° Π΅Π³ΠΎ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ порядка ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΡ.

ΠŸΠ°Ρ€ΡΠΈΠ½Π³ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

Для своСго ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π° я Π·Π°Π΄Π°Π» ΠΏΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² выраТСния: числа, Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, скобки ΠΈ особыС символы.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ символ Π² допустимом Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ отнСсти ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· этих ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ шагом Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ классу ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ символ, ΠΈ сохранСниС Π΅Π³ΠΎ Π² Π²ΠΈΠ΄Π΅, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅ΠΌ Π² сСбя эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: «особыС» символы ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ ΡƒΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° написаны Π½Π° C++ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ шаблонов.

ΠœΡ‹ Π·Π°Π΄Π°Π΄ΠΈΠΌ «класс парсинга» ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ простого Π½ΡƒΠΌΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΈ Π·Π°Π΄Π°Π΄ΠΈΠΌ Β«ΠΊΠΎΡ€Ρ‚Π΅ΠΆ парсинга» ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ символом ΠΈ Π΅Π³ΠΎ классом парсинга. Π‘Ρ‚Ρ€ΠΎΠΊΠ° парсится Π² Β«Π²Π΅ΠΊΡ‚ΠΎΡ€ парсинга», содСрТащий упорядочСнныС ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ парсинга.

ΠœΡ‹ создаём Π²Π΅ΠΊΡ‚ΠΎΡ€ парсинга, просто сравнивая ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ символ со мноТСством символов, содСрТащихся Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ классС.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° нашСй основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² сТатии выраТСния, построСнии Π²Π΅ΠΊΡ‚ΠΎΡ€Π° парсинга ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Π΅Π³ΠΎ Π² Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΉ вычислСнноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

Для нашСго ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° выраТСния это Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°

РаспарсСнный ΠΏΡ€ΠΈΠΌΠ΅Ρ€ выраТСния. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ символ Π² строкС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ отнСсён ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ. Числа ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Ρ‹ красным, Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ ΠΎΡ€Π°Π½ΠΆΠ΅Π²Ρ‹ΠΌ, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ синим, скобки Ρ„ΠΈΠΎΠ»Π΅Ρ‚ΠΎΠ²Ρ‹ΠΌ, Π° особыС символы β€” Π·Π΅Π»Ρ‘Π½Ρ‹ΠΌ.

Π‘ самым Π»Ρ‘Π³ΠΊΠΈΠΌ ΠΌΡ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΈ. Π‘ΠΎΠ·Π΄Π°Π½ Π²Π΅ΠΊΡ‚ΠΎΡ€ парсинга ΠΈΠ· входящих Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с числами, связанными со значСниями.

Как Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€ парсинга, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅?

ВычислСниС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

Нам ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€ парсинга, для Ρ‡Π΅Π³ΠΎ трСбуСтся информация ΠΎ структурС сСмантичСских матСматичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

Π—Π΄Π΅ΡΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π²Π°ΠΆΠ½Ρ‹Π΅ наблюдСния:

ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ рСкурсивным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ скобки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ свСсти ΠΈΡ… ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ.

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€ парсинга ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ рСкурсивной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π΅ΠΉ ΠΏΠ°Ρ€Ρƒ «число-Π΅Π΄ΠΈΠ½ΠΈΡ†Π°Β».

РСкурсивная функция вычислСния Π²Π΅ΠΊΡ‚ΠΎΡ€Π° парсинга

РСкурсивная функция eval описываСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ процСссом:

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ упорядочСнной ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²

Начнём с опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ eval, ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‰Π΅ΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ n, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΠΉ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ:

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: пустой Π²Π΅ΠΊΡ‚ΠΎΡ€ парсинга Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π±Π΅Π·Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΠ΅ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€ парсинга Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°.

ΠœΡ‹ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ строкС, отслСТивая Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ наблюдаСмой ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Когда ΠΌΡ‹ встрСчаСм скобку, Ρ‚ΠΎ Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ скобки ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ вычислСния для Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ выраТСния:

Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ рСкурсии, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° парсинга, Π½Π΅ содСрТащСС скобок, Π° Π·Π½Π°Ρ‡ΠΈΡ‚, состоящСС ΠΈΠ· сбалансированной ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ².

ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°

ΠŸΡ€ΠΈ вычислСнии Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ выраТСния скобки возвращаСтся Π½Π΅ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ПослС уничтоТСния всСх скобок останСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сбалансированная ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ².

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Π° значСния Π·Π°Π΄Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠ΅ΠΉ чисСл, Π΅Π΄ΠΈΠ½ΠΈΡ† ΠΈ ΡƒΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ². ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, найдя ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ΄ΡƒΡ‰ΠΈΡ… Π΄Ρ€ΡƒΠ³ Π·Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ парсинга, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… Π΅Ρ‘, ΠΈ построив Π΅Π³ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠœΡ‹ конструируСм значСния ΠΈΠ· ΠΈΡ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ парсинга, выявляя числовыС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ ΠΈ ΡƒΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ°Ρ€ «число-Π΅Π΄ΠΈΠ½ΠΈΡ†Π°Β» ΠΈ ΡƒΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

Π’Π°ΠΊ ΠΊΠ°ΠΊ этот ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ прСдставлСниС Π² числах с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈ ΠΈΠ· прСдэкспонСнты, ΠΈ ΠΈΠ· стСпСни. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ±Π΅ эти Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π½Π°ΠΊ.

Π—Π½Π°ΠΊ извлСкаСтся ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ чисСл. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ извлСкаСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ stof:

), ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊ ΠΏΡ€ΠΎΡ‰Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΎΡ‚ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° вычитания.

Π”Π°Π»Π΅Π΅ ΠΌΡ‹ провСряСм Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ записи с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой ΠΈ повторяСм это, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°ΠΊ ΠΈ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ стСпСни:

НаконСц, ΠΌΡ‹ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΠΌ ΠΎΡΡ‚Π°Π²ΡˆΡƒΡŽΡΡ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ ΠΊΠ°ΠΊ строку ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ Π² ΠΊΠΎΠ½Ρ†Π΅ ΡƒΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²ΠΈΠ΄ значСния:

Π­Ρ‚ΠΎΡ‚ процСсс сводит всС ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ ΡƒΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², чисСл ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ† ΠΊ структурам Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²:

ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°

Π—Π΄Π΅ΡΡŒ Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с ΡƒΠ½Π°Ρ€Π½Ρ‹ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ сводится ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: позиция пСрСдаётся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ создания, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»Π° извСстна Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Π°Ρ позиция Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок.

Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ упорядочСнной ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²

НаконСц, Ρƒ нас ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π°ΡΡŒ сбалансированная ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΆΠ°Ρ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ порядок ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Π”Π²Π° значСния, связанныС стоящим ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ простой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΆΠ°Ρ‚ΡŒ всю ΡΠ±Π°Π»Π°Π½ΡΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΌΡ‹ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ Π²Π΅ΠΊΡ‚ΠΎΡ€ парсинга ΠΏΠΎ Ρ€Π°Π·Ρƒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ порядкС ΠΈ выполняСм Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ вычислСния. Π‘Ρ‚ΠΎΠΈΡ‚ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, ΠΊΠ°ΠΊ ΠΈ слоТСниС с Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ΠΌ.

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠΎ Π½ΡƒΠ»Π΅Π²ΠΎΠΌΡƒ индСксу ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Π΅Π³ΠΎ.

ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ для написания ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°

Π‘ΠΊΠΎΠ±ΠΊΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ рСкурсивно, ΠΊΠ°ΠΊ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ сбалансированная ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ². ПослС устранСния всСх скобок ΠΈΠ· основного выраТСния возвращаСтся ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: эта рСкурсивная структура ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΡƒΡŽ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρƒ сСмантики матСматичСского выраТСния.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΈ Π²Ρ‹Π²ΠΎΠ΄Ρ‹

Описанная Π²Ρ‹ΡˆΠ΅ структура Π±Ρ‹Π»Π° ΠΎΠ±Ρ‘Ρ€Π½ΡƒΡ‚Π° Π² простой инструмСнт ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я Π½Π°Π·Π²Π°Π» Β«dimaΒ» (сокращённо ΠΎΡ‚ Β«dimensional analysisΒ»). ΠŸΠΎΠ»Π½Ρ‹ΠΉ исходный ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ здСсь.

Π­Ρ‚ΠΎΡ‚ простой ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ выраТСния с Π΅Π΄ΠΈΠ½ΠΈΡ†Π°ΠΌΠΈ измСрСния.

Π•Π΄ΠΈΠ½ΠΈΡ†Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈ Ρ€Π°ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ΡΡ:

ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ позволяя быстро ΡƒΠ·Π½Π°Π²Π°Ρ‚ΡŒ значСния констант:

ΠŸΡ€ΠΈ нСобходимости Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ поиска Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с Π΅Π΄ΠΈΠ½ΠΈΡ†Π°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

МоТно Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ эту систСму, Π΄ΠΎΠ±Π°Π²ΠΈΠ² способ задания Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ/ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ.

Π•Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅: ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΈΠΉ Π±ΡƒΡ„Π΅Ρ€ вычислСний, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° присваивания ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² Π½ΠΎΠ²ΠΎΠΌ словарС, доступ ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… вычислСниях. Однако для Ρ‚Π°ΠΊΠΎΠ³ΠΎ сохранСния состояния потрСбуСтся запись Π² Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ запуск процСсса.

Π­Ρ‚ΠΎΡ‚ сСмантичСский матСматичСский парсСр ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ матСматичСскиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

НапримСр, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ алгСбраичСски ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ выраТСния с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ изящноС прСдставлСниС Π½Π° основании ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ способа ΠΎΡ†Π΅Π½ΠΊΠΈ (Π΄Π»ΠΈΠ½Ρ‹, симмСтрии, ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Ρ‚.Π΄.)

Π•Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠ΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ функция диффСрСнцирования, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π°Ρ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρƒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ….

На ΠΏΡ€Π°Π²Π°Ρ… Ρ€Π΅ΠΊΠ»Π°ΠΌΡ‹

Наша компания ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ сСрвСры Π² Π°Ρ€Π΅Π½Π΄Ρƒ для Π»ΡŽΠ±Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Π±ΡƒΠ΄ΡŒ Ρ‚ΠΎ ΡΠ΅Ρ€ΡŒΡ‘Π·Π½Ρ‹Π΅ выслСчСния ΠΈΠ»ΠΈ просто Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠ³Π° Π½Π° WordPress. Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡ‚Π΅ собствСнный Ρ‚Π°Ρ€ΠΈΡ„Π½Ρ‹ΠΉ ΠΏΠ»Π°Π½ Π² ΠΏΠ°Ρ€Ρƒ ΠΊΠ»ΠΈΠΊΠΎΠ² ΠΈ Π·Π° ΠΌΠΈΠ½ΡƒΡ‚Ρƒ ΠΏΠΎΠ»ΡƒΡ‡Π°ΠΉΡ‚Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ сСрвСр, максимальная конфигурация Π±ΡŒΡ‘Ρ‚ Ρ€Π΅ΠΊΠΎΡ€Π΄Ρ‹ β€” 128 ядСр CPU, 512 Π“Π‘ RAM, 4000 Π“Π‘ NVMe!

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *