Sanch
Hectopat
- Katılım
- 3 Temmuz 2019
- Mesajlar
- 1.539
- Çözümler
- 16
Daha fazla
- Cinsiyet
- Erkek
Selam dostlar, kendimi geliştirmek için programlama soruları çözüyordum da bir soruda takıldım ve sizinle paylaşmak istedim. Bir iş için başvuru sorularıymış bu bulduklarım, yazılan kodların kullanılmaması ve başvuru suistimali olmaması için link vermeyeceğim. İki soruyu da atıyorum, ilkini çözdüm ama ikinciyi yapamadım. Yapamadım derken şöyle: Soruyu anlayamadım, anlasam belki bir ihtimal yapardım.
Çözdüğünüz dil fark etmez, benim amacım mantığı kavramak. İsterseniz hiç kod yazmayıp mantığını da direk yazabilirsiniz.
Ben soru ikiyi anlayamadım, yardımcı olursanız sevinirim. İlk soruyu da cevaplayabilirsiniz isterseniz, farklı çözümler görmem işime yarar.
Umarım bu konu cevap almadan Technopat Sosyal aleminde yok olmaz.
Çözdüğünüz dil fark etmez, benim amacım mantığı kavramak. İsterseniz hiç kod yazmayıp mantığını da direk yazabilirsiniz.
1. Atlı karınca
Bir lunaparkta atlı karınca var. Atlı karıncaya her seferinde k kişi binebiliyor. Atlı karınca bir gün içerisinde r defa çalışıyor.
Atlı karıncaya binmek isteyen n adet grup var. Her grupta 1 veya daha fazla kişi bulunabiliyor.
Her turda, sıradaki ilk gruptan başlayarak atlı karıncaya biniliyor. Eğer bir grubun tamamı için yer kalmadıysa daha fazla kişi binmeden tur başlıyor. Dolayısıyla atlı karınca tam dolmadan da çalışabiliyor. Tur bittikten sonra atlı karıncaya binen gruplar, bindikleri sırada, kuyruğun en arkasına yeniden katılıyor.
Atlı karıncaya her binen kişi 1 TL’ye bilet alıyor.
Örneğin, r=4, k=6 varsayalım. Atlı karıncaya binecek dört grup var ve bunların kişi sayıları 1, 4, 2, 1. ilk turda ilk iki grup sığabilir [1,4]. İlk tur bitince bu iki grup sıranın en sonuna geçecek ve sıra 2, 1, 1, 4 haline gelecek. İkinci turda [2, 1, 1] şeklinde 4 kişi sığabilecek. Şimdi sıra 4, 2, 1, 1 haline geldi. Üçüncü turda atlı karıncaya 6 kişi binecek [4, 2]. Sıra 1, 1, 4, 2 oldu. Dördüncü ve son turda altı kişi binecek, [1, 1, 4]. Atlı karınca toplamda 21 lira kazanmış oldu.
Input
İlk satırda boşlukla ayrılmış 3 adet rakam yer alacak: r, k ve n. İkinci satırda boşlukla ayrılmış şekilde n adet rakam yer alacak. Bu rakamlar gruplardaki kişi sayısını belirtecek. Örnek ınput.
4 6 4.
1 4 2 1.
Output
Program toplam kazanılan parayı yazacak
Optimizasyon ipuçları
1 – Sıranın o anki durumu için önceden hesaplama yapıldıysa yeniden hesaplama yerine önceden hesaplamanın sonucu kullanılabilir.
2 – En fazla n + 1 tur sonra sıranın durumu önceki durumlardan biri haline gelecek ve bir döngü oluşacaktır.
Bir lunaparkta atlı karınca var. Atlı karıncaya her seferinde k kişi binebiliyor. Atlı karınca bir gün içerisinde r defa çalışıyor.
Atlı karıncaya binmek isteyen n adet grup var. Her grupta 1 veya daha fazla kişi bulunabiliyor.
Her turda, sıradaki ilk gruptan başlayarak atlı karıncaya biniliyor. Eğer bir grubun tamamı için yer kalmadıysa daha fazla kişi binmeden tur başlıyor. Dolayısıyla atlı karınca tam dolmadan da çalışabiliyor. Tur bittikten sonra atlı karıncaya binen gruplar, bindikleri sırada, kuyruğun en arkasına yeniden katılıyor.
Atlı karıncaya her binen kişi 1 TL’ye bilet alıyor.
Örneğin, r=4, k=6 varsayalım. Atlı karıncaya binecek dört grup var ve bunların kişi sayıları 1, 4, 2, 1. ilk turda ilk iki grup sığabilir [1,4]. İlk tur bitince bu iki grup sıranın en sonuna geçecek ve sıra 2, 1, 1, 4 haline gelecek. İkinci turda [2, 1, 1] şeklinde 4 kişi sığabilecek. Şimdi sıra 4, 2, 1, 1 haline geldi. Üçüncü turda atlı karıncaya 6 kişi binecek [4, 2]. Sıra 1, 1, 4, 2 oldu. Dördüncü ve son turda altı kişi binecek, [1, 1, 4]. Atlı karınca toplamda 21 lira kazanmış oldu.
Input
İlk satırda boşlukla ayrılmış 3 adet rakam yer alacak: r, k ve n. İkinci satırda boşlukla ayrılmış şekilde n adet rakam yer alacak. Bu rakamlar gruplardaki kişi sayısını belirtecek. Örnek ınput.
4 6 4.
1 4 2 1.
Output
Program toplam kazanılan parayı yazacak
Optimizasyon ipuçları
1 – Sıranın o anki durumu için önceden hesaplama yapıldıysa yeniden hesaplama yerine önceden hesaplamanın sonucu kullanılabilir.
2 – En fazla n + 1 tur sonra sıranın durumu önceki durumlardan biri haline gelecek ve bir döngü oluşacaktır.
Python:
degerler=input().split(" ")
R=int(degerler[0])
k=int(degerler[1])
sayilar=input().split(" ")
for i in range(len(sayilar)):
sayilar[I]=int(sayilar[I])
para=0.
total=0.
l=0.
while R>0:
while total<k:
if not(total+sayilar[l]>k):
total+=sayilar[l]
l+=1.
else:
break.
for i in range(0,l):
asd=sayilar.pop(0)
para+=asd.
sayilar.append(asd)
l=0.
total=0.
R-=1.
print(para)
2. Maaş hesaplaması
Bir çalışanın maaşı içerisinde devlete verilen vergiler ve çeşitli kesintiler bulunmaktadır. Tüm kesinti ve vergilerin de içerisinde bulunduğu tutara brüt maaş, çalışanın eline geçen paraya ise net maaş denmektedir.
Brüt maaş = net maaş + kesintiler + vergiler.
Devlet brüt maaşı belli olan bir personel için net maaş hesaplamasının ne şekilde olacağını belirtmiştir. Çok basit bir örnek olarak,
Kesintiler = brüt maaş * 0.1.
Vergiler = brüt maaş * 0.2.
Şeklinde bir formül ile brüt maaşı belli bir personelin net maaşının ne kadar olduğu hesaplanabilmektedir.
Kesinti ve vergilerin hesaplaması gerçekte karmaşık formüllere ve değişkenlere bağlı olduğu için, net maaşı belli personelin brüt maaşının hesaplanması formüle edilememektedir. Dolayısıyla net maaşı belli personelin brüt maaşını bulabilmek için brütten net maaş hesaplayan formül kullanılmalıdır. Dolayısıyla, “X liralık net maaş için ne kadarlık brüt maaş gerekir?” Sorusunun cevabı için önce tahmini bir brüt tutar kullanılıp bunun neti hesaplanmalı, aradaki farka göre tahminler devam etmelidir.
Elinizde.
Double netmaaşhesapla(double brütmaaş)
Şeklinde, brüt maaş alıp net maaş dönen bir metodunuz olduğunu varsayın.
Bu metodu kullanan ve recursive (özyineli) olan, net maaşı alıp bundan brüt maaşı hesaplayan bir metot yazın.
Not: Ortalama olarak X tutarındaki bir net maaşın 1.5X civarında brüt tutarı olduğunu varsayıp tahminlerinizi ona göre yaptırabilirsiniz.
Bir çalışanın maaşı içerisinde devlete verilen vergiler ve çeşitli kesintiler bulunmaktadır. Tüm kesinti ve vergilerin de içerisinde bulunduğu tutara brüt maaş, çalışanın eline geçen paraya ise net maaş denmektedir.
Brüt maaş = net maaş + kesintiler + vergiler.
Devlet brüt maaşı belli olan bir personel için net maaş hesaplamasının ne şekilde olacağını belirtmiştir. Çok basit bir örnek olarak,
Kesintiler = brüt maaş * 0.1.
Vergiler = brüt maaş * 0.2.
Şeklinde bir formül ile brüt maaşı belli bir personelin net maaşının ne kadar olduğu hesaplanabilmektedir.
Kesinti ve vergilerin hesaplaması gerçekte karmaşık formüllere ve değişkenlere bağlı olduğu için, net maaşı belli personelin brüt maaşının hesaplanması formüle edilememektedir. Dolayısıyla net maaşı belli personelin brüt maaşını bulabilmek için brütten net maaş hesaplayan formül kullanılmalıdır. Dolayısıyla, “X liralık net maaş için ne kadarlık brüt maaş gerekir?” Sorusunun cevabı için önce tahmini bir brüt tutar kullanılıp bunun neti hesaplanmalı, aradaki farka göre tahminler devam etmelidir.
Elinizde.
Double netmaaşhesapla(double brütmaaş)
Şeklinde, brüt maaş alıp net maaş dönen bir metodunuz olduğunu varsayın.
Bu metodu kullanan ve recursive (özyineli) olan, net maaşı alıp bundan brüt maaşı hesaplayan bir metot yazın.
Not: Ortalama olarak X tutarındaki bir net maaşın 1.5X civarında brüt tutarı olduğunu varsayıp tahminlerinizi ona göre yaptırabilirsiniz.
Ben soru ikiyi anlayamadım, yardımcı olursanız sevinirim. İlk soruyu da cevaplayabilirsiniz isterseniz, farklı çözümler görmem işime yarar.
Umarım bu konu cevap almadan Technopat Sosyal aleminde yok olmaz.