Üzüklər və Runlar
Frodo Moria mədənlərinə daxil olub və bir sıra qapılarla qarşılaşıb. Hər bir qapının üzərində, həmin qapını idarə edən xüsusi üzük dəstəsinin vəziyyətini təsvir edən qədim bir tapmaca yazılıb. Tapmacanı araşdıraraq, Frodo qapının açılıb-açılmayacağını və ya sadəcə ölüm tələsi olub-olmadığını müəyyən edə bilər.
Tapmacalar bir neçə runadan ibarətdir. Etibarlı runa dəqiq 3 fərqli üzük haqqında 3 ifadə ehtiva edir. Runadakı hər bir ifadə, qapını idarə edən üzük dəstəsindəki müəyyən bir üzüyün vəziyyətindən (fırlanır və ya fırlanmır) asılı olaraq doğru və ya yanlış ola bilər. Müəyyən bir qapının tapmacası, qapının idarəetmə dəstəsindəki bütün mümkün üzükləri istifadə etməyə məcbur deyil.
Qapıları açmaq üçün hobbitlər tapmacanı oxumalı, sonra hansı üzükləri fırlatmaq və hansı üzükləri toxunulmaz saxlamaq lazım olduğunu qərar verməlidirlər. Doğru üzüklər fırlandıqdan sonra onlar bir sehr oxuyurlar və əgər qapının tapmacası tamamilə təmin olunarsa, qapı açılacaq. Qapının açılması üçün tapmacadakı hər bir runada ən azı bir ifadə doğru olmalıdır.
Məsələn, müəyyən bir runanı nəzərdən keçirək: 1 -2 3 0. Bu runa doğru olacaq, əgər (üzük 1 fırlanır) VƏ YA (üzük 2 FIRLANMIR) VƏ YA (üzük 3 fırlanır). (Qeyd: 0 runanın sonunu göstərir və həmin runada ən azı bir ifadə doğru olmalıdır ki, həmin runa doğru olsun.) Əgər runadakı üzük nömrəsi mənfi olarsa (məsələn, -2), bu, həmin ifadənin doğru olması üçün üzük 2-nin FIRLANMAMASI lazım olduğunu bildirir. Əgər üzük nömrəsi müsbətdirsə (məsələn, 3), bu, həmin ifadənin doğru olması üçün üzük 3-ün FIRLANMASI lazım olduğunu bildirir. Müəyyən bir üzük yalnız bir dəfə müəyyən bir runada görünə bilər, lakin bir üzük bütün tapmacada bir neçə dəfə istifadə edilə bilər, sadəcə eyni runada deyil!
Giriş verilənləri
Giriş aşağıdakılardan ibarət olacaq:
Girişin ilk sətri bir tam ədəd g (burada 1 ≤ g ≤ 30) ehtiva edir, bu, deşifrə edilməli olan tapmacalı qapıların sayını göstərir.
Hər bir qapı üçün ilk sətir iki tam ədəd, üzüklər (burada 3 ≤ üzüklər ≤ 22) və runalar (burada 1 ≤ runalar ≤ 100) ehtiva edir, boşluqla ayrılmışdır. üzüklər idarəetmə dəstəsindəki üzüklərin sayıdır; hər bir üzük 1-dən üzüklər-ə qədər nömrələnir və tapmacalar bütün mümkün üzükləri istifadə etməyə məcbur deyil. runalar üzük dəsti tərəfindən təmin olunmalı olan runaların sayıdır.
Növbəti runalar sətir həmin qapı üçün üzüklər arasındakı əlaqələri müəyyən edən fərdi runaları təsvir edir. Hər bir runa dörd rəqəmdən ibarət bir sətirlə təmsil olunur: r_1, r_2, r_3 və 0, burada bu rəqəmlərin hər biri boşluqla ayrılmışdır. İlk üç rəqəm 32-bit tam ədədlərdir.
Çıxış verilənləri
Hər bir qapı dəqiq bir tapmaca (bir neçə runadan ibarət) ehtiva edir və sizin alqoritminiz hər bir qapı üçün dəqiq bir sətir çıxarmalıdır. Əgər bir tapmacada bir və ya daha çox runa səhv ehtiva edirsə, həmin tapmaca üçün yalnız ən yüksək prioritetli səhvi çıxarın. Səhvlərin prioriteti aşağıda təsvir olunur:
Əgər bir tapmacada hər hansı bir runa null üzük haqqında bir ifadə ehtiva edirsə, məsələn, 0 və ya -0, bu, tapmacada ən ciddi səhvdir və bütün tapmaca etibarsızdır. Ən yüksək prioritetli səhv kimi "ETİBARSIZ: NULL ÜZÜK" çıxarın.
Əgər bir tapmacada hər hansı bir runa r və ya -r ifadəsini ehtiva edirsə, burada (r < -üzüklər) və ya (r > üzüklər) bu, tapmacada İKİNCİ ən ciddi səhvdir və beləliklə "ETİBARSIZ: ÜZÜK YOXDUR" çıxarın. Qeyd: Əgər tapmaca NULL üzük ehtiva edirdisə, bu mesajı çıxarmayın!
Əgər hər hansı bir fərdi runa eyni üzüyə bir dəfədən çox müraciət edirsə (məsələn, -2 2 3 0 VƏ YA 3 1 1 0), bu, ÜÇÜNCÜ ən ciddi səhvdir, beləliklə "ETİBARSIZ: RUNA TƏKRARLANAN ÜZÜK EHTİVA EDİR" çıxarın. Yenə də, əgər tapmacada daha yüksək prioritetli bir səhv baş veribsə, bu mesajı çıxarmayın.
Tapmacalar təkrarlanan runalar ehtiva edə bilər. Bütün bu təkrarlanan runaları bir runa kimi qəbul edin; çünki onlar eynidirlər, əgər biri doğru olarsa, bütün təkrarlanan runalar doğru olacaq.
Əgər tapmacadakı bütün runaları təmin edən fırlanan/hərəkətsiz üzüklərin bir konfiqurasiyası varsa, "RUNALAR TƏMİN OLUNDU!" çıxarın.
Əgər tapmacadakı bütün runaları təmin edən heç bir fırlanan/hərəkətsiz üzüklərin konfiqurasiyası yoxdursa, "RUNALAR TƏMİN OLUNMUR! BAŞQA QAPI CƏHD EDİN!" çıxarın.