Lütfen aşşağıdaki yönergeleri takip ederek görevleri tamamlayın.
- Python env oluşturun
- Requirements.txt oluşturun
- .gitignore dosyası oluşturun
- Aşağıdaki Kütüphanelerin Son Versiyonlarını Kurun
- Django
- Django Rest Framework
- Başka kütüphaneye ihtiyacınız varsa kurablirsiniz.
- Django projesi oluşturun
- Yeni app oluşturun
location
- Modelleri Ekleyin
- Country
- name
- search_text
- search_count
- code
- phone_code
- City
- name
- search_text
- search_count
- country
- Airport
- name
- search_text
- search_count
- code
- country
- city
- Country
- Fixture dosyasındaki verileri data migration oluşturarak yükleyin
- Location Modellerdeki
name
,search_text
vesearch_count
zorunlu olmalı eklenmediğinde uygulama hata vermeli - Location appte
search_text
alanı için bir management komudu oluşturun.python manage.py XXX
- Bu command ile tüm location modeller için search text oluşmalı.
- Search text kendi ve üst ilişkideki modellerin name alanını içermeli
- Airport => 'airport.name,airport.city.name,airport.country.name'
- Location modelleri için
XXX.objects.search('Ankara')
gibi bir arama yapıldığında en doğru sonuçları getiren.search
fonksiyonunu yazın.(models.Manager ve models.QuerySet)
- Fonksiyon küçük büyük harf duyarlı olmalı
- Unaccent aramalardada sonuç verebilmeli
- Örn: Niğde ve NİgDe aynı sonuçları verebilmeli
- Aşağıdaki endpointleri oluşturun (Rest Framework)
- Tüm Location Modeller için Search End Point
- Yukarıda belirtilen search fonksiyonunu kullanarak en fazla 20 tane sonuç getirecek.
- Tüm Location Modeller için Select End Point
- Bir lokasyonun seçilmesi sağlanır.
- Select olduğunda request içine Cookie ile seçili model ve lokasyonun id'si kayıt edilir.
- Deselect End Point
- Cookieden seçili olan lokasyonu temizler.
- Tüm Location Modeller için Search End Point
- Bir lokasyon seçildiğinde search_count'u artmalı
- Aynı Zamanda üst ilişkilerininde search_countu artmalı
- Eğer atılan request cookilerinde bir lokasyon seçilmiş ise search_count artmalı
- Aynı Zamanda üst ilişkilerininde search_countu artmalı
- Response 200 kodu ile dönmüyorsa search_count artmamalı.
- Eğer yeni bir lokasyon modeli eklenirse örn:
Stations
tüm yapı bu model içinde çalışmalı
- Counry Most Searched Cities End Point
- Ülke kodu gönderilir ve en çok aranan 5 şehiri listelenir
- 1 den fazla ülke kodu gönderilebilir.
- Sonuçlar ülkeye göre gruplu gelmelidir.
- Country Search Ratio
- Ülke kodu gönderilir ve toplam şehir araması sayısı toplam airport arama sayısına bölünüp bir oran çıkarılır.
- Bu oranla birlikte ülke bilgileri geri dönülür.
- 1 den fazla ülke kodu gönderilebilir.
- 1 kullanıcı sadece 1 lokasyon seçebilir.
- Projeyi fork edip kendi reponuzu oluşturun
gitignore
verequirements.txt
dosyanızın doğru bir şekilde oluşturun.- Kodlarınızı olabildiğince temiz ve anlaşılır yazmaya özen gösterin.
- Kodlarınızı yazarken bildiğiniz en iyi yöntemler ile yazmaya çalışın.
- Görevlerden çok yazdığınız kodun önemli olduğunu unutmayın.
Bir ayakkabı firması fabrikaları için en uzakta kalan şubesinin mesafesini hesaplamak istiyor. Şehirler her zaman 1 km mesafededir, her bir şehirden sadece 1 şehire yol vardır ve yollar dairesel olarak birleşmez.
A <-> B <-> C <-> D <-> E
Firmanın en az 1 şehirde fabrikası ve her şehirde 1 şubesi olacaktır. Bu koşullara göre şubelerin en yakın fabrikaya olan mesafelerinin en fazla kaç km olduğunu bulunuz.
Fabrika olan şehiler [_]
şeklinde gösterilmiştir.
[A] <-> B <-> C <-> D <-> [E]
A
şehirindeki firmanın en yakın fabrikasıA
şehrindedir -> 0 kmB
şehirindeki firmanın en yakın fabrikasıA
şehrindedir -> 1 kmC
şehirindeki firmanın en yakın fabrikasıA
yadaE
şehrindedir -> 2 kmD
şehirindeki firmanın en yakın fabrikasıE
şehrindedir -> 1 kmE
şehirindeki firmanın en yakın fabrikasıE
şehrindedir -> 0 km
En uzak mesafe 2 km dir ve cevap 2 dir.
Fabrika olan şehiler [_]
şeklinde gösterilmiştir.
[A] <-> [B] <-> [C] <-> [D] <-> [E]
A
şehirindeki firmanın en yakın fabrikasıA
şehrindedir -> 0 kmB
şehirindeki firmanın en yakın fabrikasıB
şehrindedir -> 0 kmC
şehirindeki firmanın en yakın fabrikasıC
şehrindedir -> 0 kmD
şehirindeki firmanın en yakın fabrikasıD
şehrindedir -> 0 kmE
şehirindeki firmanın en yakın fabrikasıE
şehrindedir -> 0 km
Her şehirde fabrika olduğu için en uzak mesafe 0 km dir ve cevap 0 dir.
case_2.py
dosyası içinde bulunangetInaccessibleFactory
fonksiyonunda çalışmalarınızı yapınız.0 < n < 10⁵
değeri şehir sayısıdır.0 < c <= n
değeri fabrikaların bulunduğu indexlerdir.
def getInaccessibleFactory(n, c):
# n = 5
# c = [4,0]
...
...
return answer # 2
Farklı grupların 1'er elemanını seçerek seçim kombinasyonları oluşturan fonksiyonu yazınız.
1. Grup | 2.Grup |
---|---|
Eylül | A |
Ekim | B |
Eylül
-> A
,B
seçimlerini alabilir
Ekim
-> A
,B
seçimlerini alabilir
Seçimler;
Aşağıdaki gibi 4 farklı seçim olabilir
- Eylül - A
- Eylül - B
- Ekim - A
- Ekim - B
1. Grup | 2.Grup | 3.Grup |
---|---|---|
Eylül | A | 1 |
B | 2 |
Eylül
-> A,1
,A,2
,B,1
,B,2
seçimlerini alabilir
Seçimler;
Aşağıdaki gibi 4 farklı seçim olabilir
- Eylül - A - 1
- Eylül - A - 2
- Eylül - B - 1
- Eylül - B - 2
case_3.py
dosyası içinde bulunangetCombinations
fonksiyonunda çalışmalarınızı yapınız.2 < n < 7
değeri grup sayısıdır.c
değeri grupların içerikleridir.
def getCombinations(n, c):
# n = 2
# c = [[a,j,p],[y,n]]
...
...
return answer # [[a,y],[a,n],[j,y],[j,n],[p,y],[p,n]]