A. Massivdagi juft raqamlar

Xotira: 32 MB, Vaqt: 1000 ms
Masala

Raqamlar massivini hisobga olgan holda, asl massivdan oxirgi juft raqamlarni o'z ichiga olgan uzunlikdagi yangi qatorni qaytaring (xuddi shu tartibda). Asl massiv bo'sh bo'lmaydi va kamida "raqamli" juft raqamlarni o'z ichiga oladi.

Kiruvchi ma'lumotlar:

Birinchi qatorga massiv va son 

 

len(massiv), \(0<len(massiv)≤1000\)

raqam, \(0≤raqam≤1000\)

Chiquvchi ma'lumotlar:

Masalada so'ralgan javobni chop eting

Misollar:
# INPUT.TXT OUTPUT.TXT
1
1,2,3,4,5,6,7,8,9 3
4,6,8
2
-22,5,3,11,26,-6,-7,-8,-9,-8,26 2
-8,26

B. Pyramid Array

Xotira: 32 MB, Vaqt: 1000 ms
Masala

Agar >= 0 son berilganda, ortib boruvchi uzunlikdagi pastki massivlar massivini qaytaradigan funksiya yozing.

Kiruvchi ma'lumotlar:

Birinchi qatorga \(n\) soni kiritiladi

Chiquvchi ma'lumotlar:

Masalada so'ralgan javobni chop eting

Izoh:

Eslatma: pastki qatorlar 1 lar bilan to'ldirilishi kerak

Misollar:
# INPUT.TXT OUTPUT.TXT
1
0
[]
2
1
[[1]]
3
2
[[1],[1,1]]

C. G'alati tartiblash

Xotira: 32 MB, Vaqt: 1000 ms
Masala

Sizga raqamlar qatori beriladi. Siz toq raqamlarni o'sish tartibida saralashingiz va juft raqamlarni asl joyida qoldirishingiz kerak.

Kiruvchi ma'lumotlar:

Birinchi qatorda array beriladi, \(0≤len(arr)≤100\)

Chiquvchi ma'lumotlar:

Masalada so'ralgan javobni chop eting

Misollar:
# INPUT.TXT OUTPUT.TXT
1
7 1
1 7
2
5 8 6 3 4
3 8 6 5 4
3
9 8 7 6 5 4 3 2 1 0
1 8 3 6 5 4 7 2 9 0

D. Ekranni qulflash naqshlari

Xotira: 32 MB, Vaqt: 1000 ms
Masala

Siz geometrik naqshni xavfsizlik chorasi sifatida ishlatishga imkon beruvchi ko'plab smartfonlar bilan tanish bo'lishingiz mumkin. Qurilmani qulfdan chiqarish uchun ekran bo‘ylab naqshni o‘tkazayotganda barmog‘ingizni ko‘tarmasdan surish orqali to‘rdagi nuqta/nuqtalar ketma-ketligini ulashingiz kerak.

Quyidagi rasmda 7 nuqta/nuqta namunasi mavjud: (A -> B -> I -> E -> D -> G -> C).

lock_example.png

Sizning vazifangiz ma'lum uzunlikka ega bo'lgan birinchi nuqtadan boshlab mumkin bo'lgan naqshlar sonini qaytaradigan funktsiyani amalga oshirishdir.

Aniqroq qilib aytganda, countPatternsFrom(firstPoint, uzunlik) funksiyasi uchun firstPoint parametri naqshlaringiz boshlanadigan to‘rdagi nuqtaga (masalan: “A”) mos keladigan bitta belgidan iborat qatordir va parametr uzunligi butun sonni ko‘rsatadi. har bir naqshda bo'lishi kerak bo'lgan nuqtalar soni (uzunligi).

Masalan, countPatternsFrom("C", 2), "C" dan boshlab ikkita ikkita nuqtaga ega naqshlar sonini qaytarishi kerak. Bu holatda qaytarish qiymati 5 bo'ladi, chunki 5 ta mumkin bo'lgan naqsh mavjud:

(C -> B), (C -> D), (C -> E), (C -> F) va (C -> H).

Shuni yodda tutingki, bu kata naqshlarning o'zini emas, balki naqshlar sonini qaytarishni talab qiladi, shuning uchun siz ularni faqat hisoblashingiz kerak. Bundan tashqari, funksiyaning nomi ishlatiladigan dasturlash tiliga qarab har xil bo'lishi mumkin, ammo g'oya bir xil bo'lib qoladi.

Kiruvchi ma'lumotlar:

Birinchi qatorga HARF va SON

Chiquvchi ma'lumotlar:

Masalada so'ralgan javobni chop eting

Izoh:

Qoidalar
Naqshda nuqta/nuqtalarni takrorlab bo'lmaydi: ular faqat bir marta, ko'pi bilan ishlatilishi mumkin.
Naqshda har qanday keyingi ikkita nuqta/nuqta to'g'ridan-to'g'ri to'g'ri chiziqlar bilan faqat quyidagi usullardan birida ulanishi mumkin:
Gorizontal: namunadagi rasmdagi (A -> B) kabi.
Vertikal: misol naqsh tasviridagi (D -> G) kabi.
Diagonal bo'yicha: misol naqsh tasvirida (I -> E), shuningdek (B -> I) kabi.
Ularning orasidagi "ishlatilgan" nuqtadan o'tish: misol namunasi tasvirida (G -> C) E orqali o'tish kabi. Bu eng qiyin qoida. Odatda, siz G ni C ga ulay olmaysiz, chunki E ular orasida, ammo E siz kuzatayotgan naqshning bir qismi sifatida ishlatilgan bo'lsa, siz E dan o'tuvchi G ni C ga ulashingiz mumkin, chunki E e'tiborga olinmaydi, chunki u allaqachon bir marta ishlatilgan.

Namuna testlarida kodingizni tekshirishga yordam beradigan ba'zi holatlar uchun kombinatsiyalar soniga misollar mavjud.

Haskell Eslatma: Vertex ma'lumotlar turi bitta belgili satrlar o'rniga taqdim etiladi. Batafsil ma'lumot uchun yechimni sozlash kodiga qarang.

Qiziqarli fakt:

Agar qiziqib qolgan bo'lsangiz, Android qulflangan ekrani uchun yaroqli naqshlar 4 dan 9 gacha nuqta/nuqta bo'lishi kerak. Jami 389112 ta mumkin boʻlgan yaroqli naqshlar mavjud; ya'ni uzunligi 4 va 9 nuqta/nuqta orasidagi naqshlar.

Misollar:
# INPUT.TXT OUTPUT.TXT
1
A 0
0
2
A 10
0
3
E 4
256

E. Satrning pastki qatorlarini hisoblash

Xotira: 32 MB, Vaqt: 1000 ms
Masala

Yaqinda tug'ilgan kuningiz munosabati bilan sizning g'ayrioddiy do'stingiz sizga "happy birthday" deb xabar yubordi:

hhhappyyyy biirrrrrthddaaaayyyyyyy to youuuu
hhapppyyyy biirtttthdaaay too youuu
happy birrrthdayy to youuu
happpyyyy birrtthdaaay tooooo youu

Avvaliga bu qo'shiqqa o'xshaydi, ammo chuqurroq o'rganib chiqqach, do'stingiz o'z xabari ichida "tug'ilgan kuningiz bilan" iborasini minglab marta yashirganini tushunasiz. Aslida, u 2 million martadan ko'proq narsani o'z ichiga oladi! Unga minnatdorchilik bildirish uchun aynan necha marta sodir bo'lganligi haqida javob berishni xohlaysiz.

Barcha hodisalarni hisoblash uchun protsedura quyidagicha: paragrafni ko'rib chiqing va "h" ni toping; keyin xatboshida "a" ni toping; undan keyin "p" ni toping va hokazo. Endi to'liq iborani yaratish uchun shu tarzda harflarni tanlash usullari sonini hisoblang.

Aniqrog'i, matn qatori berilgan bo'lsa, siz qidiruv qatori ushbu qatorning pastki ketma-ketligi sifatida necha marta paydo bo'lishini aniqlashingiz kerak.

Ikki argumentni talab qiladigan countSubsequences funksiyasini yozing: igna, qidiriladigan satr va haystack, izlash uchun satr. Bizning misolimizda "happy birthday" - igna, tug'ilgan kun xabari esa pichan. Funktsiya pichanning pastki ketma-ketligi sifatida igna necha marta sodir bo'lishini qaytarishi kerak. Bo'shliqlar ham ignaning bir qismi hisoblanadi.

Javoblar juda katta bo'lishi mumkinligi sababli, agar u 8 raqamdan oshib ketgan bo'lsa, javobning faqat oxirgi 8 raqamini qaytaring. Test holatlarining javoblari 8 ta raqamdan qisqa bo'ladi.

 

 

Kiruvchi ma'lumotlar:

Birinchi qatorga needle kiritiladi

Ikkinchi qatorda haystack kiritiladi

Chiquvchi ma'lumotlar:

Masalada so'ralgan javobni chop eting

Misollar:
# INPUT.TXT OUTPUT.TXT
1
happy birthday 
appyh appy birth day
1
2
happy birthday 
hhaappyy bbiirrtthhddaayy
2048
Kitob yaratilingan sana: 16-Sep-24 23:56