Skip to content

nlv/genexpr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

20 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ГСнСрация арифмСтичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Π² Ρ„Π°ΠΉΠ»Π΅ genexp.conf:

  • min - минимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ чисСл Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΈ минимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ самого выраТСния;

  • max - максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ чисСл Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΈ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ самого выраТСния;

  • cnt - максимальноС количСство чисСл Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ;

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°:

min = -100
max = 100
cnt = 5

ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ замСчания ΠΊ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ

  1. Для Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π΄Π΅Π»Π°ΡŽΡ‚ΡΡ ограничСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ значСния Π»Π΅Π²ΠΎΠ³ΠΎ ΠΈ ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ выраТСния ΠΏΠΎΠΏΠ°Π΄Π°Π»ΠΈ Π² ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½. Π₯отя, Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Ρ‚Π°ΠΊ.

    НапримСр, сСйчас ΠΏΡ€ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ выраТСния e1 / e2, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ e1 ΠΈ e2 Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠΌ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π² ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ: ΠΎΡ‚ -100 Π΄ΠΎ 100: (60 / (-3)) Π₯отя ΠΏΠΎ заданию допустимо Ρ‚Π°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅: (100 * 2) / 10 (Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π»Π΅Π²ΠΎΠ³ΠΎ выраТСния Ρ€Π°Π²Π½ΠΎ 200).

  2. Для гСнСрирования согласованных Π»Π΅Π²ΠΎΠΉ ΠΈ ΠΏΡ€Π°Π²ΠΎΠΉ частСй Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ случайных ΠΏΠ°Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‚ критСриям коррСктности для Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ( ``suchThat`` validate2). Но, я Π΄ΡƒΠΌΠ°ΡŽ, этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½Π΅ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅Π½. ΠŸΠ΅Ρ€Π΅Π±ΠΎΡ€ происходит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²ΡƒΡ… ΠΏΠ°Ρ€ чисСл. Если Π±Ρ‹ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ случайно ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ куски Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΎΠ½ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΠ»ΠΈΡΡŒ Π½Π° ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ, Ρ‚ΠΎ это Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ.

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

ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ замСчания ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

  1. ΠΠ±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½Π΅ сущСствСнноС. НС ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ nm nx n ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, Π° Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Reader ΠΌΠΎΠ½Π°Π΄Ρƒ. (ΠΏΠΎΠΊΠ° Π΄Π΅Π»Π°Π», лишь Π±Ρ‹ Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ)

  2. НС красиво Π·Π°Π΄Π°Π½ΠΎ соотвСтствиС ΠΌΠ΅ΠΆΠ΄Ρƒ Expr, числовым ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈ соотв. Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ haskell. НапримСр, Mul <-> 1 <-> (\*). Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ - ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ "Π΄Ρ‹Ρ€Ρ‹". (ΠΏΠΎΠΊΠ° Π΄Π΅Π»Π°Π», лишь Π±Ρ‹ Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ)

  3. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ куски, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ss2'. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ Π½ΠΈΡ…, Π²ΠΈΠ΄ΠΈΠΌΠΎ Π½Π°Π΄ΠΎ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ классы. Надо Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΈ ΡƒΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

  4. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΡ€ΠΎΡ‰Π΅, Ссли Π±Ρ‹ построСниС Π΄Π΅Ρ€Π΅Π²Π° сразу ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π»ΠΎ Π±Ρ‹ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

  5. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ минимизация скобок Π±Ρ‹Π»Π° Π±Ρ‹ ΠΏΡ€ΠΎΡ‰Π΅, Ссли Π±Ρ‹ сначала ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠ»ΠΈ сгСнСрированноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΠΏΠΎΠ»ΡŒΡΠΊΡƒΡŽ запись. А ΠΏΠΎΡ‚ΠΎΠΌ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΠΏΠΎΠ»ΡŒΡΠΊΡƒΡŽ запись ΡƒΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠ»ΠΈ Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ скобками.

About

Generate int expressions

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published