HackerRank Algorithmic Interviewsni AIga O'tkazadi
HackerRank asoschisi Vivek Ravisankar algoritmli intervyularni AI bilan almashtirishni e'lon qildi. Yangi Chakra platformasi amaliy vazifalar va AI vositalaridan foydalanishni taqdim etadi.

Telefoningiz yoki kompyuteringiz galereyasida ochiladigan oddiy, qora-oq shovqinli tasvirni ko‘z oldingizga keltiring. Bir qarashda u zamonaviy san’at asari yoki nosoz rasmga o‘xshaydi. Ammo uni Python dasturida ochsangiz — uning piksellari ortida 500 000 dan ortiq qatorga ega ob-havo jadvallari, butun boshli server loglari yoki hatto Lev Tolstoyning «Urush va tinchlik» romani yashiringan bo‘lib chiqadi!
O‘zbekistonlik dasturchi Otabek (GitHub’da @otabek-dev365) jadvalli ma’lumotlar va matnlarni haqiqiy PNG rasmlari ichida siqib saqlashga mo‘ljallangan yangi ochiq kodli (open-source) Python kutubxonasi — pngtable loyihasini taqdim etdi.
Katta hajmdagi ma’lumotlar (Big Data) bilan ishlovchi muhandislar va ma’lumotlar tahlilchilari (Data Scientists) jadvallarni saqlashda odatda CSV, JSON yoki sanoat standarti hisoblangan Apache Parquet formatidan foydalanishadi. Biroq pngtable muallifi butunlay boshqacha yondashuvni qo‘llab ko‘rdi: piksel — bu universal konteyner.
Har qanday zamonaviy operatsion tizim (iOS, Android, Windows, macOS, Linux), brauzer va fayl menejeri PNG formatini hech qanday qo‘shimcha plagin yoki drayverlarsiz osongina ochib ko‘rsata oladi.
Kutubxona yaratadigan .pt.png fayli — bu mutlaqo qonuniy, standartlarga to‘liq mos keladigan PNG tasvirdir. Jadval sxemasi (schema), ustunlar turlari va lug‘atlar faylning ichki zTXt blokida saqlanadi. Ya’ni, har bir fayl to‘liq mustaqil va avtonom bo‘lib, qo‘shimcha konfiguratsiya fayllarini talab qilmaydi.
pngtablening eng asosiy ustunligi — uning gibrid siqish arxitekturasida. U barcha ma’lumotni bitta umumiy qolipga majburlab tiqmaydi, balki har bir ustunning ma’lumot turiga qarab eng samarali algoritmni tanlaydi:
xz oqimi yordamida arxivlanadi.Muallif tomonidan o‘tkazilgan unumdorlik sinovlari (benchmarklar) diqqatga sazovor natijalarni qayd etdi:
| Sinov ma’lumotlar to‘plami | Boshlang‘ich CSV hajmi | CSV + xz | Parquet (zstd-19) | pngtable natijasi |
|---|---|---|---|---|
| Ob-havo jadvallari (525 600 qator) | 11.9 MB | 12.5% | 42.4% | 8.0% (atigi 946 KB) |
| Server loglari (200 000 qator, erkin matn) | 10.1 MB | 15.4% | 17.8% | 12.2% |
| «Urush va tinchlik» romani (3.3 MB matn) | 100% | 28.1% (xz) | — | 26.7% |
| 8 million qator yozish tezligi | — | — | — | 8 yadroda 6.4 soniya |
Eslatma: Ob-havo jadvalidagi suzuvchi vergulli (float) sonlar 16-bitga kvantlangan. Server loglari va kitob matni esa 100% yo‘qotishsiz (lossless) holatda siqilgan.
Loyiha nafaqat qiziqarli tajriba, balki amaliy xavfsizlik va yirik ma’lumotlar uchun ham xususiyatlarga ega:
scrypt orqali maxfiy kalit hosil qilinadi va rasm ichidagi jadval to‘liq shifrlanadi. Shifrlangan tasvir ham tashqaridan oddiy rasmdek ochiladi, biroq parolsiz uning ichidagi ma’lumotlarni o‘qib bo‘lmaydi.Kutubxona mustaqil bitta pngtable.py faylidan iborat. Ishlatish uchun faqat numpy, pillow va cryptography talab qilinadi:
pip install numpy pillow cryptography
Python’da oddiy jadvalni rasmga yozish va o‘qish:
import numpy as np
import pngtable
# 1. Jadval hosil qilamiz
table = {
"vaqt": np.arange(1000),
"narx": np.random.rand(1000),
"tur": np.array(["a", "b"] * 500),
}
# 2. Jadvalni rasm ichiga yozamiz
pngtable.write("malumotlar.pt.png", table)
# 3. Rasmdan jadvalni aynan qayta o'qiymiz
qayta_tiklandi = pngtable.read("malumotlar.pt.png")
print(qayta_tiklandi["narx"])
Butun boshli matn yoki kitobni saqlash:
# Matnni yo'qotishsiz rasmga aylantirish
pngtable.write_text("kitob.pt.png", katta_matn)
# Rasmdan matnni qaytarib olish
matn = pngtable.read_text("kitob.pt.png")
Agar siz .pt.png faylini hamkasbingizga Telegram, WhatsApp yoki boshqa ijtimoiy tarmoqlar orqali jo‘natmoqchi bo‘lsangiz, uni faqat va faqat «Fayl» (Document / Fayl sifatida) qilib yuborishingiz shart.
Agar tasvirni oddiy «Rasm» (Photo) sifatida jo‘natsangiz, messinjer serverlari uning hajmini kamaytirish uchun siqish algoritmlarini (JPEG/WebP) ishga tushiradi. Oqibatda piksellar qiymati o‘zgarib, ichki ma’lumot butunlay yo‘qotiladi.
O‘zbekistonlik yosh dasturchilarning xalqaro IT hamjamiyatida e’tibor qozonadigan, innovatsion va amaliy ochiq kodli vositalar yaratayotgani quvonarli tendensiya. Loyihani o‘rganish, yulduzcha (star) bosish yoki o‘z hissangizni qo‘shish uchun GitHub havolasi:
🔗 GitHub: github.com/otabek-dev365/pngtable