Arama butonu
Bu konudaki kullanıcılar: 1 misafir
196
Cevap
12764
Tıklama
8
Öne Çıkarma
Cevap: Reddit, HN, Euler, DH gibi sitelerden iş görüşmesi soruları + ödev soruları (5. sayfa)
T
6 yıl
Yarbay
Konu Sahibi

1 dakikada 1 milyon ziyaretçi türünde problemler cok az sayıda firma ve kişiyi sadece bazı dönemlerde ilgilendirir ve sorun coğu kez cok basit fakat isabetli değişiklilerle çözülebilir. Ona bakarsan ben de sunucu işletiyorum trafiği yoğun değil fakat yine de RAM'de şişme yapıyordu, bir baktım Apache httpd 10+ proses açmış, ihtiyac kalmayınca prosesleri kapatmamış, prosesler başıboş çalışıp CPU harcıyor. Apache 'nin son sürümüne terfi edebilirdim fakat Nginx'in o konuda cok iyi old biliyordum, Apache'yi tümüyle kaldırıp Nginx'e geçtim bir daha hiç öyle sorun yaşamadım. Bu forum örneğin .NET olmasına ragmen Nginx kullanıyor, birçok yoğun trafikli site hep Nginx kullanıyor. Daha da zorlu durumlar için NodeJS kullanılıyor. Yoğun sunucu trafiği problemi artık birçok platformda çözüldü. Yani Go'nun o açıdan sorun çözmesinin o kadar büyük esprisi yok.

Konumuz temel / orta düzeyde programlama sorularını en kısa şekilde çözmek ki buradaki amaç yeni fonksiyonel programlama tekniklerini kullanmak. Go'da bu teknikler ne kadar kullanılıyor, önemli olan bu. C++17 'ye örneğin yeni fonksiyonel özellikler eklenmiş, kullanılıyor, o sayede örneğin 1'den 10'a kadar sayıların faktöryelini C++17 ile hazır factorial fonksiyonu kullanmadan cok satır tutmayacak şekilde kodlayabilirim.



< Bu ileti mini sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @FatihAsl
C
6 yıl
Yarbay

quote:

Orijinalden alıntı: Tuğkan-0153

1 dakikada 1 milyon ziyaretçi türünde problemler cok az sayıda firma ve kişiyi sadece bazı dönemlerde ilgilendirir ve sorun coğu kez cok basit fakat isabetli değişiklilerle çözülebilir. Ona bakarsan ben de sunucu işletiyorum trafiği yoğun değil fakat yine de RAM'de şişme yapıyordu, bir baktım Apache httpd 10+ proses açmış, ihtiyac kalmayınca prosesleri kapatmamış, prosesler başıboş çalışıp CPU harcıyor. Apache 'nin son sürümüne terfi edebilirdim fakat Nginx'in o konuda cok iyi old biliyordum, Apache'yi tümüyle kaldırıp Nginx'e geçtim bir daha hiç öyle sorun yaşamadım. Bu forum örneğin .NET olmasına ragmen Nginx kullanıyor, birçok yoğun trafikli site hep Nginx kullanıyor. Daha da zorlu durumlar için NodeJS kullanılıyor. Yoğun sunucu trafiği problemi artık birçok platformda çözüldü. Yani Go'nun o açıdan sorun çözmesinin o kadar büyük esprisi yok.

Konumuz temel / orta düzeyde programlama sorularını en kısa şekilde çözmek ki buradaki amaç yeni fonksiyonel programlama tekniklerini kullanmak. Go'da bu teknikler ne kadar kullanılıyor, önemli olan bu. C++17 'ye örneğin yeni fonksiyonel özellikler eklenmiş, kullanılıyor, o sayede örneğin 1'den 10'a kadar sayıların faktöryelini C++17 ile hazır factorial fonksiyonu kullanmadan cok satır tutmayacak şekilde kodlayabilirim.
Perl ile Go karşılaştırılamaz ama Go ile C++ ile karşılaştırılabilir. eğer sen C++ kodunu gönderirsen müsait zamanda bende kodlar gönderirim.



C
6 yıl
Yarbay

go ile bunu yazdırmak saniye sürmüyor. consola yazdırmak dahil yaklaşık 200 ms

başlangıç zamanı : 2019-10-07 10:38:40.0176805
bitiş zamanı : 2019-10-07 10:38:40.2355538

kodu ben yazmadım. internetden hazır buldum. recursive fonksiyon kullanarak yapılmış.
ancak recursive fonksiyon lar go da tavsiye edilmiyor.
Iterative versiyonu yapılırsa daha da hızlanabilir


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @vonderplanitz
T
6 yıl
Yarbay
Konu Sahibi

Kodu çalıştırma hızı değil, 1-10 arası sayıların faktöryelini hesaplayan kod ne kadar pratik, bu önemli.

Ayrıca diyelim ki hız Go ile 200ms, C++ ile 100ms çıktı bunun önemi yok cunku önemli olan bu kodların makina koduna derlenmesi yani arada JRE veya CLR gibi ara işleyici gerekmemesi. Düşünsen ürettiğin exeyi biri bilgisayarında direkt çalıştırabilecek. Raku (eski adıyla Perl 6) ve Java 8'de ürettiğim kodu herkes direkt çalıştıramaz.





< Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 19 Kasım 2019; 12:24:20 >

< Bu ileti mini sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @FatihAsl
C
6 yıl
Yarbay

1-10 arası faktöryel hesaplamaya için cevap vermedim. 1 milyonuncu Fibonacci için cevap verdim. kod kısa değil. go burada consola yazmada sorun çıkarmadığı için bilgilendirmek istedim.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @vonderplanitz
T
6 yıl
Yarbay
Konu Sahibi

Kodun kendisini görmeden sadece yorumu görünce 1-10 arası faktöryel sorusu üzerine yorum sandım.

1-10 arası sayıları, yerleşik math , faktöryel işlevi kullanmadan, fonsiyonel olarak faktöryelini hesaplayan C++17 kodu. 9 satır ve cok kasmadan 9 satır. Şimdi aynı işlemi Go ile yap, kod gönder inceleyelim ve karşılaştıralım:

< Resime gitmek için tıklayın >



< Bu ileti mini sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @FatihAsl
C
6 yıl
Yarbay

go ile sadece 5 satır,
kodu online test etmek için link
https://play.golang.org/p/GnnzSvQXRHO


< Resime gitmek için tıklayın >





< Bu mesaj bu kişi tarafından değiştirildi CleanCoders -- 8 Ekim 2019; 1:9:58 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @vonderplanitz
T
6 yıl
Yarbay
Konu Sahibi

klasik for döngüleri kullanarak yapılacaksa C++'ta 3 satır :)

< Resime gitmek için tıklayın >

Klasik for döngüsü ile yapılamayacak ve fonksiyonel programlamayı zorlayacak bir soru düşüneyim şimdi...

Bu arada benim bilgisayarda Go compiler var; online compiler kullanmama gerek yok.



< Bu ileti mini sürüm kullanılarak atıldı >


Bu mesajda bahsedilenler: @FatihAsl
T
6 yıl
Yarbay
Konu Sahibi

sort veya is_sorted gibi yerleşik fonksiyon kullanmadan şu serilerin elemanlarının artan ve sadece artan (eşit rakamlar artan sayılmayacak) olduğunu kontrol eden kod yazınız.

C++ ile 14 satırda yazdım. Perl 6 ile 2 satır, biraz kasarsam belki tek satırda yazabilirim.

 
./artan-seri-kontrol
1,2,3,4, artıyor mu? 1
1,2,3,3, artıyor mu? 0
1,2,1,2,3, artıyor mu? 0



< Bu ileti mini sürüm kullanılarak atıldı >

H
6 yıl
Binbaşı

a=input().split(",")
c=1
for i in range(len(a)-2):
c=[c,0][int(a[i ])>=int(a[i+1])]
print(c)

python pek kullanmam anca bu kadar.





< Bu mesaj bu kişi tarafından değiştirildi hynx -- 15 Ekim 2019; 20:19:2 >
Bu mesaja 1 cevap geldi.
T
6 yıl
Yarbay
Konu Sahibi

Kodu denedim fakat ufak bir eksiği var: 1,2,3,3 serisini artan olarak degerlendirdi. artan seri deki şartımız önceki eleman < sonraki eleman yani şart < olmalı =< değil. C++'daki 'is_sorted' fonksiyonu da örneğin =< ile çalışıyor yani o fonksiyon da işe yaramaz.

Bu işi Raku'da (eski adıyla Perl 6) tek satırda yapabiliyorsun:

< Resime gitmek için tıklayın >

say [<] prompt("Seri gir: ").split(" ");

Kodun açıklaması:
sağdaki prompt("Seri gir: ").split(" ") Python'daki input().split(" ") ile aynı işi yapıyor yani kullanıcının girdiği seriyi tutuyor.

onun solundaki [<] ise 2 operatörün birleşimi [ ] indirgeme operatörü ve içine aldığı < ise indirgeme şartını ileten operatör ve bu operatör kombinasyonu seri boyunca elemanları < ile karşılaştırarak sonucu iletiyor.

Fakat bu [ ] operatörünün bir özelliği daha var: Matematikte "birleşme özelliği" vardır. Bu operatör, zincirleme birleşme özelliğine (chaining-associativity) default olarak sahip oyüzden seri boyunca < kontrolünde sadece 1 eleman uymasa tüm işlem negatif veriyor. Default zincirleme birleşme özelliğ yerine, soldan birleşme özelliğ de atayabilirsin. Veya içerdeki operatörü < değil de <= yapabilrsin ki o durumda senin Python kodu ile aynı sekilde sonuç verir.





< Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 19 Kasım 2019; 12:25:40 >

< Bu ileti mini sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @rekteo
H
6 yıl
Binbaşı

inputta sonda ',' koyulan case icin yaptim. 1,2,3,3, de 0 veriyor sonda ',' yoksa son sayiyi saymiyor.

perldeki mantikla 2 satira indirdim, cirkin oldu ama :
a=input().split(",")
print(not(False in [a[k]<a[k+1] for k in range(len(a)-2)]))


sonraki donem perl dersi var. bakalim bu trickleri gorecek miyiz.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @vonderplanitz
T
6 yıl
Yarbay
Konu Sahibi

Çıktı verirken sonda virgül olabilir fakat veri girişnde olması için pek rastlanan şey değil. Sona da virgül koyunca doğru calıştı. 2 satırlık versiyon o kadar kötü sayılmaz. Üniversitede Perl dersinde bu trick'leri göstereceklerini pek sanmam. Ayrıca Raku gösterileceğini de pek sanmam, bahsettikleri ders Perl 5'tir.





< Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 19 Kasım 2019; 12:26:36 >

< Bu ileti mini sürüm kullanılarak atıldı >


Bu mesajda bahsedilenler: @rekteo
P
6 yıl
Yarbay

bunu nerede ve ne için kullanacağınız öğrene bilir miyim !?


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @vonderplanitz
T
6 yıl
Yarbay
Konu Sahibi

Konunun kağıt üstündeki amacı soruları en pratik kod ile çözmek Fakat asıl amacı programlamcılık becerilerini geliştirmek. Unutulan bazı programcılık yöntemlerini hatırlamak.

Dolayısıyla soruların gerçek hayatta kullanılması şart değil.





< Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 19 Kasım 2019; 12:27:48 >

< Bu ileti mini sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @SEO19
P
6 yıl
Yarbay

basit kod yazmak denince akla api gelir konu orada biter gider.

programlamayı geliştirmek diyorsanız

asm seviyesine inilmesi daha mantıklı olur !

ne kadar çok kod o kadar çok kontrol anlamına gelir.

amaç eğer performans ise !


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @vonderplanitz
T
6 yıl
Yarbay
Konu Sahibi

Amaç performans değil, daha doğrusu No.1 öncelikli değil, amaç basit fakat (cogu kez) temel matematik gerektiren soruları kısa ve net kod ile çözmek.

Örnein sort fonksiyonu kullanmadan artan seriyi kontrol etmek sorusunu kısa ve net kodlayabiliyor musun? Soru budur. Bu veya önceki diger soruları önce kod ile yanıtlayamıyorsan yoruma gerek yok.



< Bu ileti mini sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @SEO19
P
6 yıl
Yarbay

matematik & mantık diye bir programı dili olsa inan ki

dünyanın en verimli programlama dili bu olurdu.

mantık konusunda eşleştirme yöneticileri zaten klasik bunda sorun yok

matematik noktasında da aslında sıkıntı yok 4 fonksiyonla bütün işler yapıyor

+ - x / sorun şu ki bu dille her şeyi tanımlayabilmek varken.

fonksiyonlu dillerin fonksiyon terimleri amaçı hep unutturuyor.

keşke yeni bir programlama dili yazsanız !

işte burada verdiğiniz emeğe değer.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @vonderplanitz