Şu eğitimden: Temel Python Eğitimi

Çözüm: ASCII sanatını sıkıştırma - Python Eğitimi

Şu eğitimden: Temel Python Eğitimi

Çözüm: ASCII sanatını sıkıştırma

- [Eğitmen] Bu, kursun son zorluğudur ve tesadüfen değil, aynı zamanda mümkün olan en fazla sayıda çözüme sahip olan zorluktur. Burada yapmak istediğiniz hemen hemen her şeyi yapabilirsiniz ve muhtemelen işe yarayacaktır. Öyleyse, burada yapmış olabileceğiniz üç temel veri sıkıştırma türünü gözden geçirelim ve bunlardan herhangi birini veya bunların bir varyasyonunu yapmadıysanız, harika. Veri sıkıştırmanın en güzel yanı, veriler küçüldüğü ve daha sonra aşağı yukarı orijinaline geri döndüğü sürece, oraya nasıl geldiğinizi kimsenin umursamamasıdır, ama ben umursuyorum. Bu yüzden havalı bir şey bulursan, bana haber ver. Bu yüzden yaptığım ilk şey, JSON blob'unu kodlama dizesinden almak ve sonra bir dosyaya yazmaktı. Ve sonra kod çözme dosyası ile, bu dosya adını tekrar açabilir, JSON blob'unu okuyabilir ve ardından kod çözme dizesi aracılığıyla çalıştırabiliriz. Yani bunu çalıştırırsam, dosya sıkıştırması burada en büyük değil, 2,441 bayta düştü, ancak teknik olarak dosya boyutunu küçülttük. Yaşasın, dosya sıkıştırma. Fark etmiş olabileceğiniz şey, bu JSON blob'u ve burada bir örneğine sahibim, içinde çok fazla karakter var. Yani bu kapalı parantez, virgül, boşluk, açık parantez alıntısına bakarsanız, bu, aslında bir sayı ile sonraki karakter arasındaki sınırlayıcı olan şey için beş karakterdir. Peki ya bu JSON bloğunu küçültmek ve biraz daha küçük hale getirmek için bir boru veya tilda gibi sınırlayıcılar kullanırsak? Bu yüzden bu çözümden kurtulmama izin verin ve sonra burada bunun bir örneği var. İşte yapmış olabileceğiniz başka bir şey var ve eğer bunu test edersek, onu 1007 bayta kadar biraz küçültür. Yani bu oldukça iyi, ama daha da küçülebilir miyiz? Bu yüzden bundan kurtulmama izin verin. Ve sonra burada yeni bir çözümümüz var, ve bu bayt çözümü. Bu kursun başlarında baytlarla çalışmayı tartışmıştık. Böylece, 255'e kadar herhangi bir tamsayıyı tek bir bayt veride saklayabilirsiniz. Bu nedenle, 255 sayısını üç karakterden oluşan ve üç bit alan bir dize olarak saklamak yerine, tek bir bayt kullanabilirsiniz. Bunu bir dize yerine bir tamsayı olarak depolarsınız. Ve ASCI sanatındaki bu karakterlerin her biri aynı zamanda bir bayt veya bir karakter veya bir bayttır. Yani dosyamızı tam olarak yazdığımızdan emin olursak, bir karakter, bir sayı, bir sayı, bir karakter, bir karakter, bir sayı ve sonra tam olarak okursak, ilk baytın, karakterin, sonraki baytın, sayının vb. bu görüntüyü son derece verimli bir şekilde kodlayabilir ve kodunu çözebiliriz. Sınırlayıcı yok, sadece desenin her seferinde tam olarak doğru olmasına bağlıyız, ki bu hey, bilgisayarların gerçekten iyi olduğu şey budur. Bu nedenle, buradaki çözümün bu versiyonunda, kursta ele almadığım birkaç dil özelliği kullandım, ancak bayt dosyaları yazmak, dosya oluşturmak ve veri sıkıştırma ile ilgileniyorsanız, bu çözümlerle oynamanızı ve bunları gelecekteki öğrenme için başlangıç noktaları olarak kullanmanızı öneririm. Ve kod konusunda heyecanlı değilseniz, sorun değil. Bu sonuçlara göz atın. Dosyayı 466 bayta indirir. Yani bu, orijinal 2749'a göre boyutta neredeyse altı kat daha küçük bir boyut. Bazen bu bellek, bayt ve kodlama kavramları gerçekten, bilmiyorum, işe yaramaz ve akademik görünebilir, ancak bir programcı olarak günlük olarak çok gerçek ve önemli etkileri olduğunu vurgulamak istiyorum, bunun gibi dosya boyutunda bir küçülme, yeterli dosyanız varsa gerçek para olabilir.

İçerikler