Skip to content

dzahbarov/paradigms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

68 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Π”ΠΎΠΌΠ°ΡˆΠ½Π΅Π΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ 1. Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск

  1. Π Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΈ рСкурсивный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ поиска Π² массивС.
  2. На Π²Ρ…ΠΎΠ΄ подаСтся Ρ†Π΅Π»ΠΎΠ΅ число x ΠΈ массив Ρ†Π΅Π»Ρ‹Ρ… чисСл a, отсортированный ΠΏΠΎ Π½Π΅Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ. ВрСбуСтся Π½Π°ΠΉΡ‚ΠΈ минимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ индСкса i, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ a[i] <= x.
  3. Для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ поиска ΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Ρ‹, ΠΏΡ€Π΅Π΄- ΠΈ постусловия. Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π° соблюдСния ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ² Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… Ρ‚Ρ€ΠΎΠ΅ΠΊ Π₯ΠΎΠ°Ρ€Π°.
  4. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.
    • Имя основного класса β€” BinarySearch.
    • ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки β€” число x.
    • ΠŸΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки β€” элСмСнты массива a.
  5. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ запуска: java BinarySearch 3 5 4 3 2 1. ΠžΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: 2.

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ

Π”ΠΎΠΌΠ°ΡˆΠ½Π΅Π΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ 2. ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π° массивС

  1. НайдитС ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ структуры Π΄Π°Π½Π½Ρ‹Ρ… Β«ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒΒ». ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ. НайдитС ΠΈΡ… ΠΏΡ€Π΅Π΄- ΠΈ постусловия, ΠΏΡ€ΠΈ условии Ρ‡Ρ‚ΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π΅ содСрТит null.
  2. Π Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ классы, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ массива.
    • Класс ArrayQueueModule Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ экзСмпляр ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ с использованиСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… класса.
    • Класс ArrayQueueADT Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π² Π²ΠΈΠ΄Π΅ абстрактного Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… (с явной ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ ссылки Π½Π° экзСмпляр ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ).
    • Класс ArrayQueue Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π² Π²ΠΈΠ΄Π΅ класса (с нСявной ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ ссылки Π½Π° экзСмпляр ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ).
    • Π”ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹) / ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹:
      • enqueue – Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ элСмСнт Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ;
      • element – ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ;
      • dequeue – ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ;
      • size – Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ;
      • isEmpty – являСтся Π»ΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ пустой;
      • clear – ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС элСмСнты ΠΈΠ· ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ.
    • Π˜Π½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΏΡ€Π΅Π΄- ΠΈ постусловия Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² исходном ΠΊΠΎΠ΄Π΅ Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π².
    • ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΊΠΎΠ΄Π° Π²ΠΎ всСх Ρ‚Ρ€Π΅Ρ… рСализациях.
  3. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ тСсты ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ классам.

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ

Π”ΠΎΠΌΠ°ΡˆΠ½Π΅Π΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ 3. ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π° связном спискС

  1. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ интСрфСйс ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Queue ΠΈ ΠΎΠΏΠΈΡˆΠΈΡ‚Π΅ Π΅Π³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚.
  2. Π Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ класс LinkedQueue β€” ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π° связном спискС.
  3. Π’Ρ‹Π΄Π΅Π»ΠΈΡ‚Π΅ ΠΎΠ±Ρ‰ΠΈΠ΅ части классов LinkedQueue ΠΈ ArrayQueue Π² Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс AbstractQueue.

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ

Π”ΠΎΠΌΠ°ΡˆΠ½Π΅Π΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ 4. ВычислСниС Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ°Ρ…

  1. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Ρ€Π°Π·Π±ΠΈΡ€Π°ΡŽΡ‰ΡƒΡŽ ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‰ΡƒΡŽ выраТСния ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ².
    • ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΈΠΏ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄ΡƒΡ‚ производится вычислСния
    • Π’Ρ‚ΠΎΡ€Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ для вычислСния.
    • РСализация Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ нСпровСряСмых ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠΎΠ².
    • РСализация Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ @SuppressWarnings.
  2. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ задания слСдуСт ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒ добавлСния Π½ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΠΉ.

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ

  • Базовая

    • Класс GenericTabulator Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ интСрфСйс Tabulator ΠΈ ΡΡ€ΠΎΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ выраТСния.
      • mode – Ρ€Π΅ΠΆΠΈΠΌ вычислСний:
        • i – вычислСния Π² int с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅;
        • d – вычислСния Π² double Π±Π΅Π· ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅;
        • bi – вычислСния Π² BigInteger.
      • expression – Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π°Π΄ΠΎ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ;
      • x1, x2 – минимальноС ΠΈ максимальноС значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ x (Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ)
      • y1, y2, z1, z2 – Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ для y ΠΈ z.
      • Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: элСмСнт result[i][j][k] Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ выраТСния для x = x1 + i, y = y1 + j, z = z1 + k. Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ пСрСполнСния), Ρ‚ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π²Π΅Π½ null.
    • Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ тСстов
  • Uls

    • Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Ρ€Π΅ΠΆΠΈΠΌΠΎΠ²:
      • u – вычислСния Π² int Π±Π΅Π· ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅;
      • l – вычислСния Π² long Π±Π΅Π· ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅;
      • s – вычислСния Π² short Π±Π΅Π· ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.
    • Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ тСстов

Π”ΠΎΠΌΠ°ΡˆΠ½Π΅Π΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ 5. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ выраТСния Π½Π° JavaScript

  1. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ cnst, variable, add, subtract, multiply, divide, negate для вычислСния Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

  2. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ вычислСния Π²ΠΈΠ΄Π°:

    let expr = subtract(
        multiply(
            cnst(2),
            variable("x")
        ),
        cnst(3)
    );
    println(expr(5));
    

    ΠŸΡ€ΠΈ вычислСнии Ρ‚Π°ΠΊΠΎΠ³ΠΎ выраТСния вмСсто ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ подставляСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ΅ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ expr (Π½Π° Π΄Π°Π½Π½ΠΎΠΌ этапС ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ вычислСния ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΡ‚Π°Ρ‚ΡŒ число 7.

  3. ВСстовая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ x2βˆ’2x+1, для x ΠΎΡ‚ 0 Π΄ΠΎ 10.

  4. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ задания слСдуСт ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π°:

    • ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка.
    • Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° для Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ

Π”ΠΎΠΌΠ°ΡˆΠ½Π΅Π΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ 6. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅ выраТСния Π½Π° JavaScript

  1. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ классы Const, Variable, Add, Subtract, Multiply, Divide, Negate для прСдставлСния Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

    1. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ описания выраТСния 2x-3:

      let expr = new Subtract(
          new Multiply(
              new Const(2),
              new Variable("x")
          ),
          new Const(3)
      );
      
    2. ΠœΠ΅Ρ‚ΠΎΠ΄ evaluate(x) Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ вычислСния Π²ΠΈΠ΄Π°: ΠŸΡ€ΠΈ вычислСнии Ρ‚Π°ΠΊΠΎΠ³ΠΎ выраТСния вмСсто ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ подставляСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ x, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ΅ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ evaluate (Π½Π° Π΄Π°Π½Π½ΠΎΠΌ этапС ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ вычислСния ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΡ‚Π°Ρ‚ΡŒ число 7.

    3. ΠœΠ΅Ρ‚ΠΎΠ΄ toString() Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ запись выраТСния Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ польской записи. НапримСр, expr.toString() Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ 2 x * 3 -.

  2. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ задания слСдуСт ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π°:

    • ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ инкапсуляции.
    • Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ

  • Base

    • Код Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Ρ„Π°ΠΉΠ»Π΅ javascript-solutions/objectExpression.js.
    • Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ тСстов
      • Π—Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ c ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ слоТности (easy, hard ΠΈΠ»ΠΈ bonus).
  • AvgMed. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ:

    • Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ:
      • Avg5 (avg5) – арифмСтичСскоС срСднСС пяти Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², 1 2 3 4 5 avg5 Ρ€Π°Π²Π½ΠΎ 3;
      • Med3 (med3) – ΠΌΠ΅Π΄ΠΈΠ°Π½Π° Ρ‚Ρ€Π΅Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², 1 2 -10 med3 Ρ€Π°Π²Π½ΠΎ 1.

Π”ΠΎΠΌΠ°ΡˆΠ½Π΅Π΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ 7. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок Π½Π° JavaScript

  1. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ домашнСС Π·Π°Π΄Π°Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ parsePrefix(string), Ρ€Π°Π·Π±ΠΈΡ€Π°ΡŽΡ‰ΡƒΡŽ выраТСния, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ записью Π²ΠΈΠ΄Π° (- (* 2 x) 3). Если Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ, ΠΌΠ΅Ρ‚ΠΎΠ΄ parsePrefix Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ€ΠΎΡΠ°Ρ‚ΡŒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎ-Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠ΅ сообщСниС ΠΎΠ± ошибкС.
  2. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ домашнСС Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ prefix(), Π²Ρ‹Π΄Π°ΡŽΡ‰ΠΈΠΉ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ parsePrefix.
  3. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ задания слСдуСт ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π°:
    • ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ инкапсуляции.
    • Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° для Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.
    • ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ошибок.
    • ΠœΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ памяти.

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ

  • Base

    • Код Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Ρ„Π°ΠΉΠ»Π΅ javascript-solutions/objectExpression.js.
    • Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ тСстов
      • Π—Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ c ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ слоТности (easy ΠΈΠ»ΠΈ hard).
  • Prefix: Means. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ:

    • ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ числа Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²:
      • ArithMean (arith-mean) – арифмСтичСскоС срСднСС (arith-mean 1 2 6) Ρ€Π°Π²Π½ΠΎ 3;
      • GeomMean (geom-mean) – гСомСтричСскоС срСднСС (geom-mean 1 2 4) Ρ€Π°Π²Π½ΠΎ 2;
      • HarmMean (harm-mean) – гармоничСскоС срСднСС, (harm-mean 2 3 6) Ρ€Π°Π²Π½ΠΎ 3;
    • Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ тСстов

Π”ΠΎΠΌΠ°ΡˆΠ½Π΅Π΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ 8. ЛинСйная Π°Π»Π³Π΅Π±Ρ€Π° Π½Π° Clojure

  1. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ Π°Π»Π³Π΅Π±Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

    • скаляры – числа
    • Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ – Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ чисСл;
    • ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ – Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² чисСл.
  2. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π°Π΄ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ:

    • v+/v-/v* – ΠΏΠΎΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π½ΠΎΠ΅ слоТСниС/Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅/ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅;
    • scalar/vect – скалярноС/Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅;
    • v*s – ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° скаляр.
  3. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π°Π΄ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°ΠΌΠΈ:

    • m+/m-/m* – поэлСмСнтноС слоТСниС/Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅/ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅;
    • m*s – ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° скаляр;
    • m*v – ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π²Π΅ΠΊΡ‚ΠΎΡ€;
    • m*m – ΠΌΠ°Ρ‚Ρ€ΠΈΡ‡Π½ΠΎΠ΅ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅;
    • transpose – траспонированиС;
  4. ВсС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ число Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². НапримСр (v+ [1 2] [3 4] [5 6]) Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π²Π½ΠΎ [9 12].

  5. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ задания слСдуСт ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π°:

    • ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка.
    • Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ

  • Базовая

  • Tensor

    • НазовСм Ρ‚Π΅Π½Π·ΠΎΡ€ΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΡƒΡŽ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ чисСл.
    • Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ поэлСмСнтного слоТСния (t+), вычитания (t-) ΠΈ умноТСния (t*) Ρ‚Π΅Π½Π·ΠΎΡ€ΠΎΠ². НапримСр, (t+ [[1 2] [3 4]] [[5 6] [7 8]]) Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π²Π½ΠΎ [[6 8] [10 12]].
    • Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ тСстов

Π”ΠΎΠΌΠ°ΡˆΠ½Π΅Π΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ 9. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ выраТСния Π½Π° Clojure

  1. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ constant, variable, add, subtract, multiply ΠΈ divide для прСдставлСния арифмСтичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

    1. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ описания выраТСния 2x-3:

      (def expr
        (subtract
          (multiply
            (constant 2)
            (variable "x"))
          (constant 3)))
      
    2. Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π΅ΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ подстановкС элСмСнтов, Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. НапримСр, (expr {"x" 2}) Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π²Π½ΠΎ 1.

  2. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π±ΠΎΡ€Ρ‰ΠΈΠΊ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Ρ‡ΠΈΡ‚Π°ΡŽΡ‰ΠΈΠΉ выраТСния Π² стандартной для Clojure Ρ„ΠΎΡ€ΠΌΠ΅. НапримСр,

    (parseFunction "(- (\* 2 x) 3)")

    Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ эквивалСнтно expr.

  3. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ задания слСдуСт ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π°:

    • Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ

  • Base

    • Код Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Ρ„Π°ΠΉΠ»Π΅ clojure-solutions/expression.clj.
    • Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ тСстов
      • Π—Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ c ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ слоТности (easy ΠΈΠ»ΠΈ hard).
  • SinhCosh. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ:

    • ΡƒΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ:
      • sinh – гипСрболичСский синус, (sinh 3) Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ большС 10;
      • cosh – гипСрболичСский косинус, (cosh 3) Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ мСньшС 10.

Π”ΠΎΠΌΠ°ΡˆΠ½Π΅Π΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ 10. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅ выраТСния Π½Π° Clojure

  1. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ конструкторы Constant, Variable, Add, Subtract, Multiply ΠΈ Divide для прСдставлСния Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
    1. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ описания выраТСния 2x-3:

      (def expr
        (Subtract
          (Multiply
            (Constant 2)
            (Variable "x"))
          (Const 3)))
      
    2. Ѐункция (evaluate expression vars) Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ вычислСниС выраТСния expression для Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ vars. НапримСр, (evaluate expr {"x" 2}) Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π²Π½ΠΎ 1.

    3. Ѐункция (toString expression) Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ запись выраТСния Π² стандартной для Clojure Ρ„ΠΎΡ€ΠΌΠ΅.

    4. Ѐункция (parseObject "expression") Π΄ΠΎΠ»ΠΆΠ½Π° Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒ выраТСния, записанныС Π² стандартной для Clojure Ρ„ΠΎΡ€ΠΌΠ΅. НапримСр,

      (parseObject "(- (\* 2 x) 3)")

      Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ эквивалСнтно expr.

    5. Ѐункция (diff expression "variable") Π΄ΠΎΠ»ΠΆΠ΅Π½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡƒΡŽ исходного выраТСния ΠΏΠΎ Π·Π°Π΄Π°Π½ΠΎΠΉ ΠΏΠ΅Ρ€ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠΉ. НапримСр, (diff expression "x") Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, эквивалСнтноС (Constant 2), ΠΏΡ€ΠΈ этом выраТСния (Subtract (Const 2) (Const 0)) ΠΈ

      (Subtract
        (Add
          (Multiply (Const 0) (Variable "x"))
          (Multiply (Const 2) (Const 1)))
        (Const 0))
      

      Ρ‚Π°ΠΊ ΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠΌ.

  2. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ задания ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ любой способ прСставлСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ

  • Base

    • Код Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Ρ„Π°ΠΉΠ»Π΅ clojure-solutions/expression.clj.
    • Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ тСстов
      • Π—Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ c ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ слоТности (easy ΠΈΠ»ΠΈ hard).
  • SinhCosh. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ:

    • ΡƒΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ:
      • Sinh (sinh) – гипСрболичСский синус, (sinh 3) Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ большС 10;
      • Cosh (cosh) – гипСрболичСский косинус, (cosh 3) Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ мСньшС 10.

Π”ΠΎΠΌΠ°ΡˆΠ½Π΅Π΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ 11. ΠšΠΎΠΌΠ±ΠΈΠ½Π°Ρ‚ΠΎΡ€Π½Ρ‹Π΅ парсСры

  1. Π Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ (parseObjectSuffix "expression"), Ρ€Π°Π·Π±ΠΈΡ€Π°ΡŽΡ‰ΡƒΡŽ выраТСния, записанныС Π² суффиксной Ρ„ΠΎΡ€ΠΌΠ΅, ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ toStringSuffix, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΡƒΡŽ строковоС прСдставлСниС выраТСния Π² этой Ρ„ΠΎΡ€ΠΌΠ΅. НапримСр, (toStringSuffix (parseObjectSuffix "( ( 2 x * ) 3 - )")) Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ((2 x *) 3 -).
  2. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°Π·Π±ΠΎΡ€Π° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ‚ΠΎΡ€ΠΎΠ², Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π½Π° Π»Π΅ΠΊΡ†ΠΈΠΈ.

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ

  • Базовая

    • Код Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Ρ„Π°ΠΉΠ»Π΅ clojure-solutions/expression.clj.
    • Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ тСстов
      • Π—Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ c ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ слоТности (easy ΠΈΠ»ΠΈ hard).
  • Boolean. Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Variables ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ:

    • БулСвских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ
      • АргумСнты: число большС 0 β†’ true, ΠΈΠ½Π°Ρ‡Π΅ β†’ false
      • Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: true β†’ 1, false β†’ 0
      • And (&&) – ΠΈ: 5 & -6 Ρ€Π°Π²Π½ΠΎ 0
      • Or (||) - ΠΈΠ»ΠΈ: 5 & -6 Ρ€Π°Π²Π½ΠΎ 1
      • Xor (^^) - ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π΅ ΠΈΠ»ΠΈ: 5 ^ -6 Ρ€Π°Π²Π½ΠΎ 1
      • ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°: ^^, ||, &&, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ

Π”ΠΎΠΌΠ°ΡˆΠ½Π΅Π΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ 12. ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ числа Π½Π° Prolog

  1. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°:

    • prime(N), ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰Π΅Π΅, Ρ‡Ρ‚ΠΎ N – простоС число.
    • composite(N), ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰Π΅Π΅, Ρ‡Ρ‚ΠΎ N – составноС число.
    • prime_divisors(N, Divisors), ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰Π΅Π΅, Ρ‡Ρ‚ΠΎ список Divisors содСрТит всС простыС Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ числа N, упорядочСнныС ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ. Если N дСлится Π½Π° простоС число P нСсколько Ρ€Π°Π·, Ρ‚ΠΎ Divisors Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ число ΠΊΠΎΠΏΠΈΠΉ P.
  2. Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ N <= 1000.

  3. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΄ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ запроса Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ init(MAX_N).

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ

Π”ΠΎΠΌΠ°ΡˆΠ½Π΅Π΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ 13. Π”Π΅Ρ€Π΅Π²ΠΎ поиска Π½Π° Prolog

  1. Π Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ ассоциативный массив (map) Π½Π° основС Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π² поиска. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ любоС Π΄Π΅Ρ€Π΅Π²ΠΎ поиска логарифмичСской высоты.
  2. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°:
    • map_build(ListMap, TreeMap), строящСС Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΈΠ· упорядочСнного списка ΠΏΠ°Ρ€ ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (O(n));
    • map_get(TreeMap, Key, Value), ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰Π΅Π΅, Ρ‡Ρ‚ΠΎ массив содСрТит Π·Π°Π΄Π°Π½Π½ΡƒΡŽ ΠΏΠ°Ρ€Ρƒ ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (O(log n)).

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ

  • Базовая

  • KeysValues

    • Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°:
      • map_Keys(Map, Keys), Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π΅Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ Π² порядкС возрастания;
      • map_Values(Map, Values), Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π΅Π΅ значСния Π² порядкС возрастания ΠΊΠ»ΡŽΡ‡Π΅ΠΉ.

About

ITMO 2-term Paradigms homeworks

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published