Ուղարկել | Բոլոր լուծումները | Լավագույն լուծումները | Վերադառնալ ցուցակին |
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 |