Թաքցված խնդիր
|Այս խնդիրը թաքցված է խմբագրական խրհրդի անդամի կողմից քանի որ կամ այն ոչ ճիշտ լեզվով է գրված,|կամ թեստային տվյալներն են սխալ, կամ խնդրի ձևակերպումը պարզ չէ։|

LISP3 - LISP 3

Հրայրի արկածները շարունակվում են։ Նա, ազատելով կղզին անեծքից ցանկանում է, վերջապես, հեռանալ այստեղից։ Ծովափին նա նկատում է մի փոքրիկ նավակ, որն ուներ ծրագրավորվող ռոտոր։ Ավաղ, նրա խորամանկ թշնամիները դիտմամբ փչացրել էին ծրագրավորվող ռոտորը։ Շարքից դուրս էր եկել նավակը ղեկավարող LISP (Little Ship Programmin) լեզվի իրականացնող հատվածը։

Լեզուն բաղկացած է արտահայտություններից։ Դրանք գրվում են պրեֆիքսային ձևաչափով, այն է՝ նախ գրվում է գործողությունը, ապա դրան հաջորդում են արգումենտները, որոնք, իրենց հերթին կարող են լինել թվեր կամ արտահայտություններ։ Օրինակ՝ (mul (add 3 5) 2), ինչը համարժեք է (3 + 5)*2 թվաբանական արտահայտությանը։ Մասնավորապես, կարող են հայտարարված լինել ֆունկցիաներ, որոնք կարող են կանչվել, բացի այդ կան  նաև որոշ հենքային ֆունկցիաներ՝

 

  • (add x y) գումարում
  • (sub x y) հանում
  • (mul x y) բազմապատկում
  • (div x y) բաժանում, ամբողջ մաս
  • (lt x y), (gt x y), (eq x y) համեմատում (<, >, =)
  • (if x y z) հավասար է y-ին, եթե x արտահայտությունը ճշմարիտ է, z՝ հակառակ դեպքում
  • (defun f(a b ...) expr) որպես f ֆունկցիա a, b, …  փոփոխականներից սահմանվում է expr արտահայտությունը
  • (funcname a b ...) կանչել funcname անվամբ ֆունկցիան a, b, … արգումենտերով
  • (print expr) տպել expr արտահայտության արժեքը։

 

Երաշխավորվում է, որ ծրագրային կոդը կոռեկտ է, արդյունքը գտնելու համար հարկավոր է կատարել 200-ից քիչ գործողություն։ Ընթացիկ ոչ մի գործողության արդյունքը բացարձակ արժեքով չի գերազանցում 103-ը։ Ավելորդ բացակները և նոր տողի սիմվոլները անտեսվում են։ Ավելորդ փակագծեր չկան։ Մեկ կոդում կարող են լինել մի քանի հաջորդական գործողություններ, որոնք բաժանված են բացակով կամ նոր տողի սիմվոլով։ Ծրագրային կոդում տրված բոլոր թվերը ոչ բացասական ամբողջ թվեր են և չեն գերազանցում 104-ը։ Սահմանված նոր ֆունկցիաները կարող են ունենալ ամենաշատը 2 արգումենտ։ Փոփոխականները իրենցից ներկայացնում են լատինական այբուբենի փոքրատառեր։ Ֆունկցիաների անունները կազմված են լատինական այբուբենի առավելագույնը 16 փոքրատառերից։

Մուտք

Մուտքում տրված է ծրագրային կոդը։

Ելք

Անհրաժեշտ է իրականացնել կոդի իրականացման արդյունքը։

Օրինակ

Մուտք.

(defun factorial(x)

       (if (eq x 1)

               1

               (mul x (factorial (sub x 1)))

       )

)

(factorial 5)

(print (factorial 3))
Ելք.
6

Ավելացրեց.Andreasyan
Ամսաթիվ.2016-03-29
Ժամանակի սահմանափակումը.1s
Ծրագրի տեքստի սահմանափակումը.50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Լեզուներ.C CSHARP C++ 4.3.2 CPP CPP14 JAVA PAS-GPC PAS-FPC PYTHON3
Աղբյուրը.Հանրապետական 2016

© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.