XYZX 2009#1931

XYZX 2009

2 saniyə
256 meqabayt
Çox asan

XYZX illik proqramlaşdırma müsabiqəsi qeyri-adi problem təsvirləri ilə məşhurdur. Müsabiqənin Texniki Koordinatoru, həmçinin Snusmumrik kimi tanınan şəxs, problem təsvirlərində bilərəkdən müəyyən azadlıq qoyur ki, iştirakçılar çatışmayan şərtləri nümunə testlərindən, problemin əvvəlindən və ya hətta epiqrafından təxmin etsinlər, yaxud özləri bir şey uydursunlar. Bu xüsusiyyət XYZX-2009-un son müsabiqəsində də özünü göstərdi.

Mişa Riverqradın Dörddəbir finalında yarışır və yenə də eyni problemlə qarşılaşır: niyə onun tamamilə düzgün proqramı nümunə testlərindən keçmir? Problem təsvirləri ingilis dilindədir. O həmçinin bilir ki, bütün təsvir boyu yalnız bir yanlış cümlə var. Həmçinin, orijinal müəllifin nəzərdə tutduğu mətni bərpa etmək qaydalarını da bilir. Bu çox sadədir: mətn boyunca istənilən "can", "may", "must", "should" sözlərindən sonra "not" sözünü əlavə etmək olar; həmçinin "is", "are" ifadələrindən sonra "no" sözü daxil edilə bilər. "not" və "no" yalnız yazıldığı kimi əlavə olunmalıdır: "Not", "nO" və s. variantlara icazə verilmir. Lakin digər qeyd olunan sözlər böyük-kiçik hərfə həssas deyil, yəni "Can"dan sonra "not" ya da "ARE"dən sonra "no" əlavə edə bilərsiniz. Əgər "is" və ya "are" sözündən sonra "no" əlavə etdiyiniz yerdə hər hansı artikl ("a" və ya "the") gələrsə, həmin artikl çıxarılmalıdır.

Mişa proqramının nümunə testlərindən keçməməsinin bütün mümkün səbəblərini bilmək istəyir. Burada səbəb dedikdə, üzərinə inkar tətbiq oluna bilən cümlə nəzərdə tutulur. Unutmayın ki, eyni anda heç iki inkar tətbiq oluna bilməz – nə bir cümlədə, nə də müxtəlif cümlələrdə.

Giriş

Daxil olan faylda problem təsvirinin mətnini ehtiva edir; o Latın hərflərindən, birmənaqlı boşluqlardan və nöqtələrdən ibarətdir. Hər bir cümlə nöqtə ilə bitir (nöqtə son sözün bir hissəsi hesab edilmir). Sözlər yalnız bir boşluqla ayrılır. Heç bir nöqtədən əvvəl boşluq yoxdur. Hər bir nöqtədən sonra yalnız bir boşluq var, əgər nöqtə son cümlənin ardınca gəlirsə, bu halda nöqtədən sonra yeni sətir gəlir və bundan sonra daxil olan fayl bitir. Hər hansı bir sözdən sonra "not" və ya "no" əlavə edərkən əvvəlcə bir boşluq və sonra müvafiq söz əlavə olunmalıdır. Daxil olan faylın ölçüsü 1024 baytdan artıq deyil.

Çıxış

Çıxış faylında əvvəlcə ayrıca sətirdə tam ədədi — problem təsvirinin başa düşülə bilən müxtəlif yollarının sayı göstərilməlidir. Sonra sətirdə — hər sətirdə orijinal mətnin üzərinə məhz bir inkar tətbiq olunmuş bir cümləsi getməlidir. Bütün imkanlar sadalanmalıdır (nümunə çıxışda sətirlər daha aydın görünsün deyə bölünüb; siz bir sətirdə bir cümlə çıxarmalısınız). Bütün inkar variantları təbii sırada olmalıdır: əvvəl birinci cümlədə mümkün olanlar, sonra ikinci cümlədə, və s. Bir cümlə içində əvvəl birinci sözün (əgər aidiyyəti varsa), sonra ikinci sözün və s. üzərinə inkar tətbiq olunmuş variant gəlir.

Orijinal cümlələrdən götürülmüş sözlərin hərflərinin böyüklüyünü dəyişmək olmaz. Sözlər arasında yenə bir boşluq olmalı, cümlə sonunda isə girişdə cümlələr üçün müəyyən olunmuş eyni qaydalar tətbiq edilməlidir.

Nümunələr

Nümunə 1

Loading
Loading